web-dev-qa-db-ja.com

Subversion / TortoiseSVNで削除されたフォルダーを「元に戻す」方法は?

特定のタグを1つだけ削除することを意図していたSubversionリポジトリから「タグ」フォルダーを誤って削除しました。 「タグ」フォルダを元に戻す最も簡単な方法は何ですか?

TortoiseSVNをクライアントとして使用し、レポジトリブラウザーに移動してログを表示すると、作業コピーの同様のダイアログに表示されるものと同様に、「このリビジョンからの変更を元に戻す」ようなものがあると思いました。しかし、そのようなコマンドはありません...

95
Borek Bernard

削除したフォルダーを以前のリビジョンからコピーして戻すだけです。

リポジトリブラウザーで、HEAD(右上隅))というラベルのボタンをクリックして、フォルダーがまだ存在するリビジョンを表示し、そのフォルダーを右クリックして[コピー先]を選択します。 .. "フォルダーを再作成するパスを入力します(おそらく、テキストボックスに既にある同じパス)。

112
Mikael Sundberg

コマンドライン愛好家向け:

  • まず、削除が行われたリビジョン番号を見つけます。

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

リビジョン999でディレクトリが削除されたことがわかったと言います(ところで:svn repoブラウザでリビジョン番号を見つける方が簡単かもしれません)

  • リビジョンからフォルダーをコピーしますマイナス1

    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    

できあがり!

あなたの場合、これは次のようになります:

    svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"
75
raudi

これらの答えのほとんどはある程度機能しますが、正しい答えはダニエルのものです。逆マージを実行します。そのようにして、バージョン履歴を保持します。

svn merge -r R1:R2

ここで、R1は現在のリビジョンで、R2は削除されたファイル/フォルダーを含むリビジョンです。

11
Miles

リバースマージを実行する必要があります。

実行方法の詳細(およびSVNを使用して実行したい、または実行する必要のある他のほとんどすべて)については、公式の本が利用可能です online

7
Daniel

この改訂後、私のために働いたraudiの回答に続きます。

一部のsvnクライアントでは、フォルダーの後に次のように@を使用する代わりに、-r revisionパラメーターを使用して指定したリビジョン番号が必要になる場合があります。

svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"
3
Paul

repositoryRepository Browserに移動し、削除済みフォルダーが存在する親フォルダーを右クリックします。次に、親フォルダのShow Logを選択し、削除操作をコミットした前のリビジョンを選択します。リストが表示され、リビジョン情報からフォルダーを右クリックしてUpdate to this Revisionを選択します。

完了

2
Abdul Munim