彷徨えるフジワラ

年がら年中さまよってます

TokyoMercurial #5.5

TokyoMercurial #5.5に参加してきた。

懇親会がビアバッシュ形式になったこともあり、今回は特に運営お疲れ様でした! > id:troter

今回はいつもの『自分の課題に沿って黙々作業&質問/意見交換』な TokyoMercurial と違って、『入門者向け Mercurial ハンズオン』という位置付けでの開催。

これまでに関わったハンズオンでは、リポジトリ間連携とか、履歴分岐のマージ、更にその先のブランチ運用とかの話にまで到達できない (or 到達しても相当駆け足状態な説明) ことが多く、個人的には毎度毎度不完全燃焼感が強かった。

そこで、今回のハンズオンでは:

日常的に使用するコマンドに関する説明網羅性を犠牲にしてでも、とにかく『履歴分岐のマージ』までは説明し切る

という目標を掲げて演習資料を作成することに。
説明対象コマンドの目安は、以前からイベントの都度配布している『最小リファレンスカード』に掲載しているコマンド群。

世に出回っている『リファレンスカード』『チートシート』の類はどれも網羅性が高いけれど:

  • 『良く知らない人』にとっては、情報量が多過ぎて取っ掛かりを見つけ辛い
  • 『ある程度知っている人』にとっては、網羅性の高さは便利
  • 『良く知っている人』は、どうせ『チートシート』なんて見やしない(笑)

という印象を個人的に持っていたので、『良く知らない人』の利用障壁を下げるには、もっと情報を絞り込んだものが必要じゃなかろうか?というのが、この『最小リファレンスカード』を作成した元々の出発点。

なので、まずは『最小リファレンスカード』の範囲で、説明分量/所要時間の妥当性を試してみることに。

実際に今回の演習資料を作成してみて、『最小リファレンスカード』の網羅範囲に削れる隙が無い事を改めて確認すると同時に、ここまで絞り込んでも、実際に演習をやってみると、正味4時間少々程度の時間枠だとギリギリであることが判明。

今回の参加者は『多少は Mercurial を触ったことがある』人が殆どだったこともあって、比較的スムーズに進行できた方だと思うので、参加者の初学者度がもうちょっと高くなる場合は、この内容でも、余裕を持って正味5時間ぐらいは見込む必要があるかも。

とりあえずは、今後のハンズオンにおける説明量/時間比のベンチマークができた事と、説明/演習上の改善点が判明したので、発表側としては成功と言えるかな?

参加者の感想も概ね好評だったみたいなので一安心。

以下、懇親会で参加者から相談された話で憶えているものをいくつか。

EUC-JP な日本語ファイル名を含む CVS リポジトリからの変換

参加者から以下のような相談が。

EUC-JP な日本語ファイル名を含む CVS リポジトリを引き継いだのだが、Mercurial で運用するにはどうしたらよいだろうか?

相談者的には:

  • EUC-JP な日本語ファイル名』のファイルのほぼ全てはドキュメントなので無視しても構わない(笑)
  • ソースファイルは何としても Mercurial で管理したい
  • 但し、ソースファイルのルートが『ソースファイル』というディレクトリを含む

ということらしいので:

  1. convert エクステンションを使って CVS ⇒ HG なリポジトリ変換を実施 (ファイル名文字コードEUC-JP のまま)
  2. HG ⇒ HG の変換で、ソースファイルのみを抽出: filemap の改名機能を使って、『ソースファイル/XXXXX』なパスから『ソースファイル/』部分を除外

という手順で変換するのが妥当かな?

懇親会の席では、CVS ⇒ HG 変換の際に、ソースファイルの抽出+ファイル名の書き換えも一緒に実施してしまうような説明になってしまったけど、問題発生時の原因特定の簡便性や、そもそも問題を発生させないようにすることを考えると、上記のように2段階の手順を踏んだほうが安全そう。

ちなみに、EUC-JP なファイル名を持つ CVS リポジトリをそのまま変換した場合、Mercurial リポジトリ内でも EUC-JP で管理されるので、Windows で作業領域を update した場合、にっちもさっちも行かなくなるので注意が必要。

相談者の話を聞いた限りでは:

  • Windows 側は Samba 共有経由で CVS のワーキングコピーを参照
  • 履歴管理系作業は Samba サーバ側で実施(?)

という感じらしいので、そのフローをそのまま踏襲すれば、Mercurial でも何とかなるけどね > EUC-JP ファイル名

メインが Subversion で管理されている場合の Mercurial 利用

参加者から表題通りの相談が。

何が何でも『Mercurial のコマンドから直接 Subversion リポジトリにコミットしたい』という必要性が無ければ、『convert で取り込んで、手動で svn commit』な、拙著『Mercurial 入門』で述べた『ハイブリッドリポジトリ運用』が妥当ではなかろうか?というのが現時点での僕の見解。