0

私は と で深刻な愚かさをsvn movesvn ciました。

古いディレクトリ構造:

source/branch1/test_framework/
source/branch2/test_framework/

望ましいディレクトリ構造:

source/branch1/
source/branch2/
source/test_framework/ <-- This is a merge of the 2

予想される手順:

  • source/branch1/test_framework/ を source/test_framework/ に移動
  • source/branch2/test_framework/ を source/test_framework/ にマージします

私が始めた方法:

[dev@bld Prod1]$ svn move source/branch1/test_framework/ source/test_framework/
A         source/test_framework
D         source/branch1/test_framework/main.sh
D         source/branch1/test_framework

私がすべきだったこと:

[dev@bld Prod1]$ svn ci source/test_framework/ source/branch1/test_framework/ -m "Move test framework to top level."

私の愚かさ:

[dev@bld Prod1]$ svn ci source/test_framework/ -m "Move test framework to top level."
Authentication realm: <http://localhost:8443> UNIX/LDAP User Account
Password for 'dev':
Adding         source/test_framework

Committed revision 274232.

[dev@bld Prod1]$ svn ci source/branch1/test_framework/ -m "Move test framework to top level."
Authentication realm: <http://localhost:8443> UNIX/LDAP User Account
Password for 'dev':
Deleting       source/branch1/test_framework
svn: Commit failed (details follow):
svn: Item '/repo/CoreApps/Prod1/source/branch1/test_framework' is out of date

ここで、Google と StackOverflow を検索し、Item ... out of dateエラーに対して提案された次の修正を行いました。

[dev@bld Prod1]$ svn update
Authentication realm: <http://localhost:8443> UNIX/LDAP User Account
Password for 'dev':
   C source/branch1/test_framework
At revision 274233.
Summary of conflicts:
  Tree conflicts: 1

今、私はこれで立ち往生しています:

[dev@bld Prod1]$ svn ci source/branch1/test_framework/ -m "Move test framework to top level."
Authentication realm: <http://localhost:8443> UNIX/LDAP User Account
Password for 'dev':
svn: Commit failed (details follow):
svn: Aborting commit: '/repo/CoreApps/Prod1/source/branch1/test_framework' remains in tree-conflict

では、この競合を修正するにはどうすればよいでしょうか。svn mergeこれは問題ではなく、ここにたどり着いた方法の単なる説明ポイントであることに注意してください。

何をすべきかについての理由を示す回答もいただければ幸いです。

編集- 問題を解決するために使用した解決策 (これは理想的ではありません。受け入れられた回答の方が優れています):

  • svn status source/branch1/test_framework/実行中に削除されたファイルを一覧表示するsvn move
  • svn revert source/branch1/test_framework/$FILE上記の各ファイルの削除/削除アクションを元に戻すには、svn move
  • svn delete source/test_framework/のコピー アクションを元に戻すには、svn move削除svn ci source/test_framework/をチェックインします。
  • 正しく実行してください。
4

1 に答える 1

1
  1. 新しい作業コピーをチェックアウトし、悪いリビジョンを取り消し (svn merge -c-274232 .)、コミットします。
  2. 最初から正しく行う

これは Subversion の元に戻す/やり直し機能の一種であり、上部で多くのコミットが行われておらず、乱雑なコミットに知的作業があまりない場合に、不適切なコミットによって引き起こされたリポジトリの乱雑な状態を整理する一般的な方法です。それ(まさにあなたのケースです。コミットは単純svn mvです)。したがって、基本的には、乱雑な状態を理解しようとせずに(そして時間を節約するために)変更をやみくもにロールバックしてから、svn mv正しく繰り返すことをお勧めします。

于 2013-07-11T07:37:53.037 に答える