2

「ワークベンチ」で TortoiseHg 経由で Mercurial を使用します。

ブランチをマージするとき、更新のデフォルト (auto?) の選択が必要なものではないことがよくあります。マージ操作に対して常にプロンプ​​トを表示するようにツールを構成したいと考えています。

各ブランチには、2 つの間で最新の状態に保つ必要があるいくつかのコア ファイルがありますが、保持する必要があるいくつかのブランチ固有のファイルもあります。

1 つのブランチでコア ファイルを更新する場合、マージを実行して、別のブランチで最新のコア ファイルを取得したいと考えています。ただし、デフォルトの TortoiseHg は、望ましくない自動更新を行います。

例:

1) ブランチ '1' にはファイル '1.xls' が含まれ、ブランチ '2' には同等の '2.xls' があり、バイナリとして保存されます。「1」を「2」に基づく作業ディレクトリにマージすると、「2.xls」が削除され、「1.xls」が追加されます。

2) ブランチ '1' には更新されたファイル 'not_core.c' が含まれており、ブランチ '2' には同等の 'not_core.c' があります。「1」を「2」に基づく作業ディレクトリにマージすると、「2」の「not-core.c」の不要な自動更新が発生します。

3) ブランチ '1' には、更新されたファイル 'core1.c' と 'core2.c' が含まれています。「1」を「2」に基づく作業ディレクトリにマージすると、両方のファイルが自動的に更新されます。これらのコア ファイルを更新するかどうかを選択できるようにするプロンプトが必要な場合です。今のところ、「core1.c」だけが必要かもしれません。

mercurial.ini で 'mergetool.premerge = false' を設定することへの参照を見て、これのいくつかのバリエーションを試しましたが成功しませんでした。

理想的な設定は、異なるファイルごとにグラフィカルな手動解決がトリガーされることです。

説明されている機能をサポートする構成を手伝ってくれる人はいますか?

ありがとう、イアン

4

2 に答える 2

3

説明されている3つのケースは、あなたのケースでは性質が異なります。ケースごとに異なるトリックを使用する必要があります

ケース 2 と 3 (牧場のファイルの競合しない変更)は、TortoseHG で自動マージを無効にすることでカバーできます(TBT!) (メイン メニュー - File- Settings- Global setting- TortoiseHG- "Auto-resolving merges": False /default - True/)

ケース 1 (およびその他のコンテンツ以外の変更 - 名前の変更、属性の変更) の場合、状況は悪化し、自動マージは再生されません: あるブランチから別のブランチへの変更のミラー履歴をマージします。つまり、共通の親に 2.xls しかない場合、これはソース ブランチで削除|名前が 1.xls に変更されました。この変更はターゲットに反映されます。

このようなマージでは、別の「内部」マージ ツールを使用することができます (1 つのブランチからのみ変更する場合 - 「ダミー マージ」) - internal:local および internal:other。しかし - それらは変更されたコンテンツに対してのみ機能します (再び!)

TipsandTricksセクションからのマージを行うときに「My」または「Their」ファイルを保持すると役立つ場合があります (必要に応じて、前述の merge-revert-resolve を [aliases] の新しいコマンドに結合し、通常のマージの代わりに使用できます)。

于 2013-04-17T20:35:32.673 に答える
0

merge-patternsこれは、 のおよびmerge-toolsセクションを使用して設定できますhgrc。この設定により、テストで kdiff3 を強制的に使用することができました。

[merge-patterns]
** = noautomerge

[merge-tools]
noautomerge.executable = kdiff3
noautomerge.args = $base $local $other -o $output --qall
noautomerge.priority = 1
noautomerge.premerge = False

これにより、Mercurial が行う自動事前マージがオフになり、代わりに kdiff3 が起動します。

すべてのファイルに対してこれを行いますが、merge-patterns可能であればセクションをもう少し具体的に修正することをお勧めします。

また、マージ ツールがマージ自体を自動的に解決する可能性があることに注意してください。その場合は、その機能をオフにするコマンド ライン オプションを探してください。

于 2013-04-17T13:43:53.333 に答える