Fetch エクステンション

posted by Zachary Voase on September 29, 2009

Git から乗り換えたばかりのユーザーは、たいてい hg pull の挙動を意外に思うでしょう。 git pull が作業ディレクトリを更新し、自動的にマージした後コミットするのに対し、 hg pull はリモートのチェンジセットをローカルリポジトリに追加するだけで、 作業ディレクトリにはタッチしません。

十中八九、自動マージスタイルのほうがいいでしょ? 幸い、そうするのは簡単です。 ~/.hgrc ファイルを開いて 、これを追加してください:

[extensions]
hgext.fetch =

さぁ、この代わりに:

$ hg pull
$ hg update remote_head
$ hg merge local_head
$ hg commit -m "Merged."

こうできるようになりました:

$ hg fetch

fetch はデフォルトで、 pull したリモート変更点のヘッドをマージの第1の親として扱います。 つまり、ローカル変更点のヘッドは第2の親になります。 挙動を逆にしたければ、こうしてください:

$ hg fetch --switch-parent

詳しくは wiki ドキュメントhg help fetch の結果を参考にしてください。

あなたが Git からの乗り換え組で、 git pull の自動マージ機能が無くて困っているなら、 お探しのエクステンションはこれでしょう。