15

私はSVNの世界で最も単純なユースケースを持っているように感じます:

  • SVNのファイルがありますTest.javatrunk
  • に分岐trunkdev-branchます。
  • のフォルダに移動Test.javaします。com/mycompanytrunk
  • Test.javaで変わりdev-branchます。
  • にマージdev-branchtrunkます。
  • ツリーの競合が発生します。

なぜ、なぜ、SVNはこれを処理できないのですか?私たちは何か間違ったことをしていますか?これは簡単なはずなのに、私の会社のすべてのエンジニアは困惑しています。

ここでSVN指向の回答を探します(「gitに移動」などではありません)。

4

1 に答える 1

8

SVNでは、移動は削除と追加です。ブランチにマージすると、移動の追加部分が実行されますが、競合のために削除を実行できませんでした。ここで、次の方法で競合を手動で解決する必要があります。

  1. にコピーTest.javacom/mycompany/Test.java、古いものを上書きします。これにより、そのファイルとの競合が解決されます。
  2. Test.java古い場所からファイルを削除します。これは、マージを行ったときにSVNが実行できなかった変更セットの削除部分を手動で実行する方法です。コマンドを使用しsvn delete Test.javaます。
  3. SVNに競合が解決され、作業ディレクトリが正しいことを伝えます。svn resolve --accept working .最後のドットは現在のディレクトリ用です。
  4. Test.javaファイルの競合も解決されることをSVNに伝えますsvn resolve --accept working Test.java

次に、マージされたバージョンをコミットすると、リポジトリとの同期に戻ります。

于 2012-09-07T21:34:46.180 に答える