1

SVN でツリーの競合が発生しています。それは奇妙だ!

私は標準的なトランク、ブランチ、タグ構造を持ち、複数のチーム モデルに従っています。Branch1、Branch2 はトランクから作成され、並行してアクティブになります

以下の手順に従います
。 1. Branch1 Work: 2newfile.cで追加およびコミット。 : Branch1 から -> トランク (成功; トランクにファイルが追加されました) 3. : トランク -> ブランチ 2 からダウンマージ。(成功。Branch2 にファイルが追加されました) 4. : 通常の Branch2 作業を実行し、コミットします。 5. : Branch2 から Trunk へ => このステップで Tree-conflict がスローされますBranch1
Merge
Merge
Branch2 Work
Mergenewfile.c

Branch2 チームは、newfile.cまったく触れていないツリーの競合を取得しています。なぜこうなった。何か提案をお願いします。これを回避できますか? この問題は私を悩ませています。

PS: TortoiseSVN client 1.6.0 と TortoiseSVN 1.6.16 - 32 Bit を使用しました (どちらも別々に使用)

マージ エラー (上記の手順 5):

>svn merge file:///E:/Treeconflict_test/svnRepo/Branches/Br2 Trunk
--- Merging r3 through r8 into 'Trunk':
   C Trunk\src\ARTransactionFeeDto2.java
U    Trunk\pom.xml
 G   Trunk
Summary of conflicts:
  Tree conflicts: 1

>svn status Trunk
 M      Trunk
      C Trunk\src\ARTransactionFeeDto2.java
      >   local obstruction, incoming add upon merge
M       Trunk\pom.xml

PFB svn リポジトリ ログ (上記の手順 1-4):

>svn log -v file:///E:/Treeconflict_test/svnRepo
------------------------------------------------------------------------
r8 | rohit | 2013-03-05 16:30:35 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   M /Branches/Br2/src/ARTransactionFeeDto2.java

br2 branch changes
------------------------------------------------------------------------
r7 | rohit | 2013-03-05 16:29:34 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   M /Branches/Br2
   M /Branches/Br2/pom.xml
   A /Branches/Br2/src/ARTransactionFeeDto2.java (from /Trunk/src/ARTransactionF
eeDto2.java:6)

dowm-merge from Trunk to branch-Br2
------------------------------------------------------------------------
r6 | rohit | 2013-03-05 16:26:56 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   M /Branches/Br2/pom.xml

br2 branch changes
------------------------------------------------------------------------
r5 | rohit | 2013-03-05 16:22:26 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   M /Trunk
   M /Trunk/pom.xml
   A /Trunk/src/ARTransactionFeeDto2.java (from /Branches/Br1/src/ARTransactionFeeDto2.java:4)

up-merge from branch-Br1 to Trunk
------------------------------------------------------------------------
r4 | rohit | 2013-03-05 16:20:48 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   M /Branches/Br1/pom.xml
   A /Branches/Br1/src/ARTransactionFeeDto2.java

br1 changes
------------------------------------------------------------------------
r3 | rohit | 2013-03-05 16:19:07 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   A /Branches/Br2 (from /Trunk:2)

created branch br2
------------------------------------------------------------------------
r2 | rohit | 2013-03-05 16:18:57 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   A /Branches/Br1 (from /Trunk:1)

created branch Br1
------------------------------------------------------------------------
r1 | rohit | 2013-03-05 16:18:13 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   A /Branches
   A /Tags
   A /Trunk
   A /Trunk/pom.xml
   A /Trunk/src
   A /Trunk/src/ARTransactionFeeDelegateResponse.java
   A /Trunk/src/ARTransactionFeeDto.java
   A /Trunk/src/ResponseARTransFeeDtlsDto.java

initial commit Trunk
------------------------------------------------------------------------
4

3 に答える 3

2

1.6 であっても、このワークフローでは不可能です。すべてのコマンドと出力を表示する必要があります

ログによると、あなたは2009 年版の「Tree Conflict」設計ドキュメントに記載されている「XFAIL conflict from merge of add over versioned file」の被害者です。最も重要な部分は

r35341 の期待値を修正

また、このリビジョンをバグ修正付きの TortoiseSVN ビルドにどのように変換できるかはわかりません。最新の 1.6 ( ) でワークフローをテストしますTortoiseSVN 1.6.16, Build 21511 - 32 Bit , 2011/06/01 19:00:35

使用したログTortoiseSVN 1.7.11, Build 23600 - 32 Bit(すべてのマージ - GUI ベースのローカル リポジトリ)

>svn log -v file:///Z:/Repo/
------------------------------------------------------------------------
r10 | Badger | 2013-03-05 17:32:32 +0600 (Вт, 05 мар 2013) | 2 lines
Changed paths:
   M /trunk
   M /trunk/Base.txt
   M /trunk/C1.txt
   M /trunk/C2.txt

Merge from branches/b2:

------------------------------------------------------------------------
r9 | Badger | 2013-03-05 17:27:42 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   M /branches/b2/Base.txt
   M /branches/b2/C1.txt
   M /branches/b2/C2.txt

Anfanglichen Deutsch Korperregion
------------------------------------------------------------------------
r8 | Badger | 2013-03-05 17:19:28 +0600 (Вт, 05 мар 2013) | 2 lines
Changed paths:
   M /branches/b2
   M /branches/b2/Base.txt
   M /branches/b2/C1.txt
   M /branches/b2/C2.txt
   A /branches/b2/Reference.txt (from /trunk/Reference.txt:7)

Merge from trunk

------------------------------------------------------------------------
r7 | Badger | 2013-03-05 17:15:29 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   M /trunk
   M /trunk/Base.txt
   A /trunk/Reference.txt (from /branches/b1/Reference.txt:6)

Merge B1 branch changes
------------------------------------------------------------------------
r6 | Badger | 2013-03-05 17:12:26 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   M /branches/b1/Base.txt
   A /branches/b1/Reference.txt

Structure reflected
------------------------------------------------------------------------
r5 | Badger | 2013-03-05 17:09:46 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   M /trunk/C1.txt
   M /trunk/C2.txt

Edition 1
------------------------------------------------------------------------
r4 | Badger | 2013-03-05 17:06:38 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   A /branches/b2 (from /trunk:3)

Branching for task2
------------------------------------------------------------------------
r3 | Badger | 2013-03-05 17:05:49 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   A /branches/b1 (from /trunk:2)

Branching for task1
------------------------------------------------------------------------
r2 | Badger | 2013-03-05 17:03:21 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   A /trunk/Base.txt
   A /trunk/C1.txt
   A /trunk/C2.txt

Basic set
------------------------------------------------------------------------
r1 | Badger | 2013-03-05 16:59:36 +0600 (Вт, 05 мар 2013) | 1 line
Changed paths:
   A /branches
   A /tags
   A /trunk

Imported folder structure
------------------------------------------------------------------------

コメント:

私はあなたの行動をできるだけ正確に再現しようとしました

  • r2-r4 - 準備されたテスト エリア: トランクと 2 つのブランチ
  • r5 - 履歴を分岐させるためにトランクを変更しました
  • r6 - ブランチ b1 に新しいファイルを追加 (Reference.txt)
  • r7 - ブランチ b1 をトランクにマージ (Reference.txt がトランクに表示されます)
  • r8 - トランクをブランチ b2 にマージ (Reference.txt は b2 に表示されます)
  • r9 - b2 の変更されたファイル、Reference.txt はそのまま
  • r10 - エラーなしで b2 をトランクにマージします

アドオン

1.6.16 でテストし、ツリーをマージする前にブランチ ファイルで編集したものをトランクに事前にマージした場合でも、記述された結果を得ました

アドオン 2

ゴッダム!!! 最新の1.7でも動作しません。それは私を夢中にさせる

于 2013-03-05T11:54:03.447 に答える
1

エラーメッセージは不可解に見えるかもしれませんが、基本的に問題を説明しています:

ローカル障害物、マージ時に追加される着信

r3 から r8 を BR2 からトランクに移植しています。問題は、r7 で以下を追加することですARTransactionFeeDto2.java

r7 | rohit | 2013-03-05 16:29:34 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   A /Branches/Br2/src/ARTransactionFeeDto2.java (from /Trunk/src/ARTransactionF
eeDto2.java:6)

...しかし、ファイルが既に存在するため、そのような変更をトランクに移植することはできません:

r5 | rohit | 2013-03-05 16:22:26 +0530 (Tue, 05 Mar 2013) | 1 line
Changed paths:
   A /Trunk/src/ARTransactionFeeDto2.java (from /Branches/Br1/src/ARTransactionFeeDto2.java:4)

Subversion はそれを回避するための非常に洗練された方法を提供していますが、TortoiseSVN を使用してマージを行うことをお勧めします。r7 で競合についてプロンプトが表示されたら、ローカル ファイルを保持することを選択します (受信ファイルと同じです)。

于 2013-03-06T08:23:36.673 に答える
0

SVN 1.7 でこれらの手順を (実際に利用可能なコマンドのリストがなくても可能な限り厳密に) 実行しようとしましたが、期待どおりに動作するように見えました。

ブランチをトランクにマージするときに使用する必要がある「--reintegrate」オプションが原因で、機能しない可能性があると思います。いずれかのブランチからトランクにマージするたびに、このオプションを使用したことは確かですか?

そのオプションを使用した場合は、この回答を無視してください。

于 2013-03-27T14:21:27.957 に答える