1. ホーム
  2. svn

[解決済み] SVN 2つのブランチにファイルが追加された場合の新しいツリーの競合を解決する方法

2023-01-25 06:29:16

質問

ファイルが両方のブランチに追加された (そして、それらの別々のブランチで作業された) いくつかのブランチを (SVN 1.6.1 を使用して) マージするとき、新しいツリーの競合の 1 つが発生します。

      C foo.txt
  >   local obstruction, incoming add upon merge

両方のブランチからの変更が必要ですが、ツリーの競合によって、通常の .working, .merge-left & .merge-right ファイルが得られません -- これは競合の性質上、理解できることです。これらの競合はかなり多く、同じファイルの削除が各ブランチで発生したものもありますが、解決するのは簡単です。

この問題を解決するにはどうすればよいのでしょうか。SVN redbean book (1.6 用) はこの状況をカバーしていません。

どのように解決するのですか?

古いバージョン(2009年)で言及されていたように ツリー コンフリクトのデザインについて のドキュメントに記載されています。

バージョン管理されたファイルへの追加マージによる XFAIL の衝突

このテストは、次のようなマージを行います。 履歴のないファイルへの追加を 既存のバージョン管理されたファイル .

のファイルにツリーコンフリクトが発生するはずです。 local obstruction, incoming add upon merge '品種になります。r35341 で期待値を修正しました。

(ちなみにこれは ClearCase では "evil twins" とも呼ばれます)。

ファイルが 2 つの異なるブランチで 2 回作成され(ここでは "added" が 2 回)、2 つの異なる要素に対して 2 つの異なる履歴が作成されますが、名前は同じです。

理論的な解決策は、これらのファイルを (外部の diff ツールで) 手動でマージして、宛先ブランチである ' B2 '.

まだソースブランチで作業している場合、理想的なシナリオは、ソースブランチからそのファイルを削除することです。 B1 からマージして B2 から B1 でそのファイルが見えるようにするために B1 に表示されるようにします (その後、同じ要素で作業することになります)。

からしかマージが発生しないため、マージバックが不可能な場合。 B1 から B2 に変更する場合、手動でのマージが必要になります。 B1->B2 のマージが必要です。