2011-12-19 6 views
1

特定のファイルをリカバリするためにマージを逆にしようとしています。私はそれがどのように動作するはずですが、奇妙なエラーが発生することを理解していると思います。奇数SVNリバースマージエラーメッセージ

私はSVNブック、グーグルやスタックなどを再読しました

問題:

私は復元する1つの特定のファイルを指定したい

ファイルが存在しないが、オンラインの例ではローカルファイル名が使用されているように見えるため、SVNはローカルファイル参照が嫌いです。

リポジトリに存在しないため、完全なhttpパスも好きではありません。私はそれが今存在していないことを知っていますが、それはそこにありました。 @peg構文を使用してもエラーが発生します。

例:私はR99ので、たくさんのファイルを削除する改正で

  • は、それが存在していた時の最後のポイントでした。
  • 私たちは現在リビジョンです。私はただ1つのファイルを元に戻したいと思います。
  • プロジェクトのURLと「作業ディレクトリ」ファイルのURLがあったであろうhttp://server/repo/Project/trunk
  • である(問題はないと思う、先頭のドットを持つ)のは、ファイルが.myFileと呼ばれているとしましょうhttp://server/repo/Project/trunk/.myFile
  • 私は同等のファイルシステムディレクトリにあり、更新やコミットが保留されていないとします。つまり、svn status --show-updatesです。は私が最新であることを示しています。
  • そして私は、SVN猫にhttp://server/repo/Project/trunk/[email protected]

試行失敗行うことができるよ:

svn merge -c -100 .myFile 
Error: .myFile not under version control 

svn merge -c -100 http://server/repo/Project/trunk/.myFile 
Error: svn: '/repo/!svn/bc/120/Project/.myFile' path not found 
Note that rev 120 is between the delete (r100) and now (r150) 

svn merge -c -100 http://server/repo/Project/trunk/[email protected] 
Error: svn: File not found: revision 100, path '/Project/trunk/.myFile' 

svn merge -c -100 . .myFile 
Don't recall specific error. 

svn merge -c -100 . http://server/repo/Project/trunk/[email protected] 
Error: svn: Cannot specify a revision range with two URLs 

...と様々な他の組み合わせを....

私は本当に困惑。私は逆マージについて理解していると思うし、なぜ@pegsが時には必要なのかについても信じていると思うが、この組み合わせは非常に厄介である。

回避策があります:すべてのファイルを復元してクリーンアップできました。または単に古いバージョンをコピーして貼り付けるだけで、svn catコマンドでこれを行うことができます。

「正しい」方法を理解したいと思います。

答えて

1

今日は若干異なる問題で作業していますが、最終的に私の答えが見つかりました。

私は個々のファイルからの変更をマージしていましたが、削除されたコピーをリストアしていましたので、全く同じではありません。

私が作った一つの重要な変更:

  • 私はからの明示的な-rを使用:範囲TO、だけではなく、-cショートカットを使用します。

その他の点は:

  • ソース
  • 宛先がローカル./filename形でなければならないURLの形態であるべきである

仮説例リビジョン要約:

  • 現在、システムは次のとおりです。r150
  • 01それはで始まるので、私の例のファイル名は、Unixの隠しファイルです:
  • ファイルはR100
  • ファイルで削除された(変更されていないが)R99の最後に存在していた
  • ファイルはR85
  • ノートで更新/最後の追加されましたドット - ほとんどのファイルはそれを持っていません。

元に戻す削除、私はそれが可能だと思う:

cd localWorkDir/Project/trunk 
svn update 
svn merge -r100:85 http://server/repo/Project/trunk/.myFile ./.myFile 
svn commit -m "restoring files" 
(message saying committed r151) 

だから私は、-c構文は、個々のファイルをマージするとき、問題があると思います。