web-dev-qa-db-ja.com

Subversionで削除されたブランチを復元する必要がある

Subversionリポジトリの作業コピーが2つあります。1つはトランク、もう1つは作成したブランチです。

リポジトリブラウザで誤ってブランチを削除しました。ブランチを復元するにはどうすればよいですか?リポジトリ全体の最新のコミットを取り消す方法はありますか?

65
Luke

使用する:

svn cp [path to deleted branch]@[revision before delete] [new path]

例えば:

svn cp svn://myrepo.com/svn/branches/2.0.5@1993 \
       svn://myrepo.com/svn/branches/2.0.5_restored

1993は削除前のリビジョンです...

こちら いくつかの優れたドキュメントです...

ユーザー名に@記号をエスケープする方法が必要です...

75
John Weldon

TortoiseSVNを使用している場合の解決策は次のとおりです。

  1. リポジトリブラウザーで、削除したフォルダーの親フォルダー(「ブランチ」など)に移動します。
  2. フォルダを右クリックして、「ログを表示」を実行します。
  3. 特定のブランチフォルダを削除したリビジョンを見つけます。
  4. そのリビジョンの直前のリビジョンを選択します。
  5. 右クリックして、「リポジトリの参照」を選択します。これで、ブランチを削除する直前の時点のリポジトリの状態を確認できます。
  6. 削除したブランチフォルダを見つけ、選択して右クリックし、[コピー先]を選択します
  7. これで、削除したフォルダーを新しい名前または同じ名前にコピーできます。
91
Brian Neal

最後のリビジョンが108であると仮定します:

svn merge --revision 108:107
svn diff 
svn commit -m "Reverted revision 108"

ソースURLをマージに追加することもできます。

svn merge --revision 108:107 http://svn/repo/

スタックオーバーフローのその他の場所:TortoiseSVNでコミットを取り消す

4
leonm

私はこの問題に遭遇しましたが、上記のコマンドはうまくいきませんでした。やったことはずっと簡単でした。ブランチを削除する前に、あるリビジョンでブランチをチェックアウトしました。

削除されたリビジョンは9331でした。9330でチェックアウトしました。

svn co https://svn.acme.com/svn/giantFlySwatterTargetingSystem/branches/bug1234@9330 restored

それは私が望んでいた簡単な解決策でした。

3
Alan B. Dee

これは私のために働いた、

svn cp --username your_user_name https:// path_to_your_repo/branches/deleted_branch_name @ last_revision_before_deletion https:// path_to_your_repo/branches/new_name_for_branch

あるいは、ブランチを削除したのが単一のコミットの場合:

コミットを取り消してからコミットする

svn merge -c -REV .
svn commit -m "Reverting deletion of branch XYZ"
1

私は同じ問題にぶつかり、SmartSVN(Enterprise 6.0.2)でこのように解決しました:

  • トランク/ヘッドでビューを開きます
  • コールメニューリポジトリ/リポジトリブラウザで開く(削除されたブランチはブランチフォルダにありません)
  • リポジトリブラウザで、メニューリポジトリ/リビジョンを表示...を呼び出します.
  • 削除する直前のリビジョンを選択します(削除されたブランチがブランチフォルダに再表示されます)
  • 削除されたブランチを右クリックして、メニューで[コピー]を選択し、宛先に同じパスを入力します
0