11

Mercurial と Python は簡単なことを難しくしてしまうので、イライラしています。些細な競合がありますが、Mercurial は何をすべきかを提案しないため、この些細なファイルの競合を解決する方法さえわかりません。

KDiff3

競合は些細なことですが、これを解決できなければ、複雑なことも解決できません。ファイルを好きなように編集して、どこからでも再度コミットできますか? 私は実行する必要がありますhg mergeか?Mercurial では、保持するバージョンを選択することさえできないのはなぜですか? よく書かれていない 1000 のマンページを掘り下げなければ、些細なことをほぼ不可能にできるのはなぜですか?

4

2 に答える 2

24

KDiff3 のドキュメント、特にマージと出力ウィンドウに関するセクションを参照する必要があります。競合を解決するには、行に対してliveまたはjanuaryが正しい選択であるかどうかを判断する必要があります。その決定はあなたが行うものであり、あなたがどちらを意図しているかをツールが知ることはできません。

KDiff3 では、 + を押しCtrl2を選択しliveCtrl+3を押して選択するjanuaryか、下部ウィンドウの余白を右クリックして目的の行を選択します。下部のウィンドウをクリックして、行を手動で編集することもできます。

Mercurial では、マージ ツールを好きなように構成できます。TortoiseHg には、KDiff3 をリストの一番上に配置するデフォルト構成が付属していますが、必要に応じて別のツールを使用することもできます。マージ ツールは、実際には、比較する 3 つのファイル (ベース、親 1、親 2) と出力ファイル名の 4 つのファイル名を受け入れる単なるプログラムです。

コマンドラインで競合を解決するには、適切なコマンドライン 3 方向マージ ツールを起動する必要があります。たとえば、必要に応じて vim とマージできます。(残念ながら私は vimdiff について何も知りません。私自身 KDiff3 を使用しています。)

マージ ツールのポップアップが表示されたくない場合は、次のように設定できます。

[ui]
merge = internal:merge

Mercurial が内部の 3 方向の合併のみを使用するようにします。編集が競合していない場合、ファイルは正常にマージされます。競合がある場合、ファイルは「未解決」としてマークされ、競合マーカーがファイルに保存されます。

次に、ファイルを手動で編集して、必要なバージョンを取得する必要があります。再マージして、ローカル (自分の) バージョンのいずれかを選択することもできます。

$ hg resolve --tool internal:local your-file

または他のバージョン:

$ hg resolve --tool internal:other your-file

でマージを完全に再開しhg resolve your-fileます。ファイルをコミットする前に、ファイルに「解決済み」のマークを付ける必要があります。これは で行われhg resolve --mark your-fileます。hg resolve --list現在のマージのステータスについては、 を参照してください。

于 2012-01-25T13:53:37.400 に答える
22

ベースはローカル システムの以前のバージョン、親 1 は現在の変更内容、親 2 はサーバーからのファイルです。

変更をチェックインする必要がある場合は、マージ メニューのどこでも B を選択します。ローカル マシンで最新のサーバー バージョンが必要な場合は、マージ メニューのどこでも C を選択します。

于 2012-05-30T08:44:53.013 に答える