彷徨えるフジワラ

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

Python Developers Festa 2012.03

Mercurial ハンズオンのスタッフ要員として、Python Developers Festa 2012.03 に参加してきた。

主催の id:Voluntas 氏を初めとする運営スタッフの皆様、および参加者の皆様、お疲れ様でした。

それから、私の到着、ギリギリ時間過ぎでしたね。受付のお手数をお掛けして御免なさい .... orz > Voluntas 氏

今回のハンズオンは、id:troter 氏の資料を元に、各自が黙々と作業しつつ、適宜 troter 氏や私が質問等に答える、というスタイルで実施。

とりあえず、覚えている範囲で、『入門 Mercurial』や僕のホームページでは明記してない(or 記述が少ない)話題に関しての詳細とか、思い付いたこととかをまとめておく。troter 氏のまとめも併せてご覧ください。

『作業領域』はリビジョンの一種

『作業領域』と『親リビジョン』の関係は、人によっては、慣れるまで結構こんがらかり易い、という印象がある。

基本的には、以下のようなマインドモデルがお勧め:

『作業領域』は、『次の commit によって作成されるリビジョン』(= commit 後の『親リビジョン』)の原型

これだと、『マージによって作業領域の親リビジョンが2つ』になる状況も、『次の commit によって作成されるリビジョン』(= マージ実施リビジョン)の親が2つになるための前段階、ということで理解できる。

『入門 Mercurial』の p39 でもこれに類する話がちらっと出ているけれど、確か元ネタは Definitive 本だったか、本家 Wiki 中のドキュメントだったような気が。

マージリビジョンでの差分表示

以下のような履歴ツリーにおいて、リビジョン B と D をマージしたリビジョン M に対して、"hg diff -c M" などとやっても、思ったような差分が表示されない事が多い。

この場合、マージされた片側の枝における変更内容を確認するには、diff での対象リビジョンを以下のように指定してやれば良い。

# C 〜 D 側の枝における変更内容
$ hg diff -r B -r M

# A 〜 B 側の枝における変更内容
$ hg diff -r D -r M

M の第1親が B、第2親が D だとすると、revset 記述を使用すれば、上記はそれぞれ '-r M^1 -r M' と '-r M^2 -r M' になって、『第2親側の差分』の場合は 'M^1'、『第1親側の差分』の場合は 'M^2' と、互い違いのリビジョンを指定すれば良い事がわかる。

WindowsDOS 窓では、M^1 や M^2 はダブルクォートで囲う必要アリ

MQ ! MQ ! MQ !

またまた、今回も MQ についての質問が多数。

『ベストプラクティス』とは言わないけれど、わかりやすい『ユースケース』は欲しいよなぁ、という結論に。

今現在 MQ にピンと来てない人も、何かの契機でイメージが噛み合えば、そこからドンドン適用/応用のアイディアが湧いてくると思うんだよなぁ。そこからが MQ の楽しくなるところだし(笑)。

ミニマムリファレンスカード

今回、入門者が必要とする最小限の機能を、コマンド UI 用TortoiseHg 用にまとめたものをハンズオン参加者&希望者に配布した。

基本的には、2つ折カード用紙の両面への印刷を想定しているのだけれど、CUIGUI の一方だけで良い場合は、一方の PDF を一般的な名刺用紙の両面に印刷する、という手も。

一般的なチートシートに『情報量多過ぎ!』と思われている方とか、チーム内での普及促進等でお役に立てば幸いです。