4

「svn merge」コマンドラインを使用してマージ競合が発生したときにポップアップする外部マージ ツールとして TortoiseMerge (TortoiseSVN に付属) を設定することは可能ですか? 環境変数「SVN_MERGE」を TortoiseMerge.exe を指すように設定しようとしましたが、これでは十分ではないようです。"l" (外部ツールを起動する) を選択すると、TortoiseMerge がポップアップし、どのファイルをマージするかを尋ねられます。この情報をツールに自動的にプッシュしたい。

何か案は?

4

2 に答える 2

4

次のようなバット スクリプトを作成します。

"c:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%1" /theirs:"%2" /mine:"%3" /merged:"%4"

次に、SVN_MERGE 環境変数をそのバット スクリプトに設定します。

set SVN_MERGE=c:\bin\svnmerge.bat
于 2010-07-14T16:44:49.050 に答える
3

あなたが使用している Subversion のバージョンがわからないので、最新バージョンのSubversion ドキュメントの情報を参照してみます。(彼らはそのページに、「特定のセクションにブックマークを付けたりリンクしたりすると、それらのリンクは開発を続けることで無効になる可能性がある」と付け加えています。しかし、1.6 の安定したバージョンはありません。)

まず、悪いニュース:

マージ ツールを使用するには、SVN_MERGE 環境変数を設定するか、Subversion 構成ファイルで merge-tool-cmd オプションを定義する必要があります (詳細については、「構成オプション」を参照してください)。Subversion はマージ ツールに 4 つの引数を渡します: ファイルの BASE リビジョン、更新の一部としてサーバーから受信したファイルのリビジョン、ローカル編集を含むファイルのコピー、およびファイルのマージされたコピー (これには競合マーカーが含まれています)。マージ ツールが異なる順序または形式の引数を想定している場合は、Subversion が呼び出すラッパー スクリプトを作成する必要があります。

少し良いニュースは、Subversion があなたの質問をある程度予期していたことです。外部差分とマージ ツールの使用のセクションを参照してください。外部マージ ツール ラッパーのテンプレートがあります。

特定のケースでは、TortoiseMerge のドキュメントに、コマンド ラインからの使用方法を説明する付録があります。重要なスイッチは/base/mine、および/theirsですが、さらに使用することもできます (結局、独自のラッパー スクリプトを作成することになります)。TortoiseMerge では、コマンドの「簡略化された形式」も使用できます。

TortoiseMerge BaseFilePath MyFilePath TheirFilePath

マージの結果を Subversion に戻す方法は、マージされたファイルを標準出力に書き込んで適切な値を返すことです。この情報は、Subversion マニュアルのラッパー テンプレートに目立つように配置されています。

于 2010-03-02T12:25:06.347 に答える