1

TortoiseSVN は、 [競合の編集]ウィンドウを使用して、いくつかの種類のツリーの競合を解決できます。

問題は、" ... on merge " コンフリクト タイプの場合、TortoiseSVN がどのファイルをマージする必要があるかを推測できないことです。

例: (ケース:ローカル欠落、更新時に着信削除)

  • トランクに取り組んでいる開発者 A は、ファイル Foo.c を変更し、それをリポジトリにコミットします。
  • ブランチに取り組んでおり、ファイル Foo.c を Bar.c に移動し、リポジトリにコミットしています。

開発者 A の変更をブランチの作業コピーにマージすると、ツリーの競合が発生します。

  • Bar.c は、ステータスが「通常」の作業コピーに既に存在します
  • Foo.c は、ツリーの競合により不足しているとマークされています

ほとんどの場合、開発者 A の Foo.c への変更を、名前が変更された Bar.c にマージする必要があります。

しかし、どうすればそれができますか?

開発者 A の変更を含むファイル Foo.c が私のブランチ WC に存在しません。

TortoiseSVN ヘルプには、次のように記載されています。最初に競合を解決する必要があります。」</p>

では、マージのために Foo.c ファイルにアクセスするには、トランクをチェックアウトする必要がありますか? この問題を解決するためのより簡単な方法はありますか?

この問題 (TortoiseSVN がツリーの競合を解決する方法) は、私と開発者にとって非常に重要です。

私たちを手伝ってくれますか?

4

2 に答える 2

4

私はゼルスのソリューションが好きです。ファイルの移動をブランチにマージしてから、マージを実行してトランクに戻すこともできます。

大きなブランチをマージするときに私が行うことは、最初にトランクをブランチにマージし、すべての競合 (ツリーの競合を含む) を解決してから、結果をトランクにマージすることです。これにより、マージ期間中もトランクがより長く安定します。

于 2010-11-08T21:19:19.643 に答える
2

Foo.c「トランク」からの変更を分岐して名前を変更した にマージするには、「2 つの URL マージ」を使用できますBar.c

cd branch/B
svn merge http://www/svn/svnroot/branches/B/Bar.c http://www/svn/trunk/Foo.c Bar.c

一方、branch/B は作業コピーです。

最終的に競合を取り除くには、開発者 A と B が同じファイル名に同意する必要があります。同じコードに異なるファイルを使用することは望ましくない場合があります。

編集: 「他の」VCがこの問題にどのようにアプローチするかを見てから、 「ファイルの名前変更と変更のマージ」の段落から引用したいと思います:

私がファイルを変更し、その名前を新しい名前に変更してから、それぞれの変更をマージすると、元の名前でのファイルへの変更が新しい名前でファイルに反映されます。(これは「単純に機能する」と思われるかもしれませんが、すべてのリビジョン管理システムが実際にこれを行うわけではありません。)

Mercurialを試してみる理由になるかもしれません。

于 2010-11-08T20:48:54.763 に答える