それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

hg(mercurial)のmergeで衝突箇所を見やすくした

hg(mercurial)のmergeで衝突を見やすくした。Vimdiffを使うことにした。

かなり便利なった。

hgのマージ処理がやりにくい。

mercurialのmergeはそれなりに賢い。でも手作業マージが無くなるわけでもない。

$>hg merge

を叩くと、衝突時にviが起動する。しかしコレが読みづらい。Mercurialが自動でファイルを混ぜてしまう。
コンフリクト箇所が一カ所なら対応できる。複数箇所のコンフリクトがあるとき
マージ忘れが頻発する。

しかも、Mercurialが自動的に「<<<<<」マークする。ファイルにゴミが増える。
リリースファイルにゴミが発生しエラー発生する。

windowsならwin-merge

WindowsでHGを使っている人はWinMergeを使っていた。楽ちんそうだった。

vimdiffが使いたい。

LinuxコンソールはVimdiffというvimのdiff機能があります。

$>vim diff a.txt b.txt

で差分がわかりやすく表示される。

hgでvimdiffを使う方法。

hgrcに以下のような記述を追記する。

./hg/hgrc
[ui]
merge="/usr/bin/vimdiff"

これで、マージが発生したときに、vimdiffで表示される。

hg mergeでvimdiffをするとき

vimdiffがなんと3ペインで開く
左から

  1. 対象ファイル*
  2. 衝突する前のファイル内容
  3. 衝突したリモートファイル

衝突する前のファイルを見ながら、一番左のファイルにマージ結果を書き込めばO.K.です。