競合の解決:「自分の」変更を自動的に受け入れる方法は?


97

を使用して競合する変更をマージするとhg merge、Mercurialは次のように、作業コピーにマージされるファイルにマーカーのセットを挿入します。

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

次に、によって作成されたリストからUとマークされたすべてのファイルを手動で編集しhg resolve --all -l、次にmercurialに解決したことを伝えますhg resolve -m file1 file2 file3 ...

ただし、多くの状況で、一部の競合するファイルに対する変更を自分または自分のみのいずれかで受け入れたいと思います。名前が付けられた2つの単純なsed / awk / whateverスクリプトを作成することを考えていますかaccept-theirs.shaccept-my.shまたはそれを行うための「適切な」方法はありますか?

回答:


166

使用する

hg resolve -t internal:other --all

受け入れるtheirs

hg resolve -t internal:local --all

受け入れるために yours


どうもありがとうございました!@djcの意味がわかりませんが、あなたのソリューションは魅力のように機能します。
psihodelia 2013年

@psihodelia djcはほとんど同じように言っています、試してくださいhg help merge-tools(mergetoolsは後のバージョンのエイリアスです)
MGP

6
付記として、私はこれに別名を付けました:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn

1
これらは.hgrc、初心者のために自分自身に追加する3行です:[alias]、次にmine = resolve -t internal:local、次にtheirs = resolve -t internal:other。その後、hg mine some_file.pyor hg theirs -a(またはすべての)を使用できます
トビア2014

1
とおりphab.mercurial-scm.org/D4379、あなたも含める必要があるかもしれない--re-mergeフラグを(例えばhg resolve -t internal:other --re-merge --all
イーサン・ケーニッヒ

23

これを試して:

hg merge --tool 'internal:other'

詳細についても参照hg help merge-toolsしてください。


1
またはresolve単一ファイルの場合/それをやり直す。(また、前後の引用符internal:otherは不要です。)
Chris Morgan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.