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


96

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

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

回答:


115

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

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


4
すばらしいヒント、ありがとう。TortoiseSVNの落とし穴-その「コピー先...」ダイアログで、パスを「example.com/svn/tags」から「tags1」に変更してから、[OK]ボタンが有効になるように戻す必要がありました。
Borek Bernard、

2
これはタグの場合は問題ないかもしれませんが、履歴が失われるため、他のフォルダの削除を取り消すことはしないでください
slckin

3
それは歴史を維持します、それもしました。
acdcjunior 2013

ログを表示するときは、必ず[コピー/名前変更時に停止]をオフにしてください。そうしないと、TortoiseSVNが復元アクションの前に履歴を表示しません(明らかに)...
Oli

それは完全に機能しました。私の時間の多くを節約しました。ありがとう:)
dgupta3091

78

コマンドライン愛好家のために:

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

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

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

  • リビジョンマイナス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"

1
Thanks ..多くの時間を節約しました
Dharani Kumar 14年

これはちょうど私のベーコンを救った!
axiopisty 2016年

「svn copy」アプローチが実際にすべての履歴を保存し、フォルダに対しては再帰的に動作し、フォルダとすべての子を復元することを確認したかっただけです。
WallStProg 2018

11

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

svn merge -r R1:R2

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


1
リバースマージでは、R1は元に戻すリビジョンで、R2はその前のリビジョンです。
2016年

2
で履歴を失うことはありませんsvn copy
maxschlepzig 2016年

私たちの人のためではありません、コマンドラインの愛好家は、以下を参照してください。tortoisesvn.net/docs/nightly/TortoiseSVN_en/...
パスカル

2
これは削除されたすべてのファイル/フォルダを復元しませんか?特定の削除済みフォルダーを1つだけ復元し、他の削除済みフォルダーは復元しない場合、これは機能しますか?
OJ7、18年

8

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

それを行う方法の詳細(および、SVNを使用して実行する必要がある、または実行する必要のある他のほとんどすべて)については、公式の本をオンラインで入手できます


3

この改訂後に私のために働いたラウディの答えに続いて。

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

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

まだ存在するフォルダから復元している場合-r <revision>は機能します。ただし、フォルダを直接復元する場合は、を使用する必要があります@<revision>。それ以外の場合は、ファイルが見つからなかったことが通知されます。
arleslie

2

後藤Repository Browserあなたのはrepository、あなたの親フォルダを右クリックして削除したフォルダが存在していました。ここShow Logで、親フォルダーの、削除操作をコミットした前のリビジョンを選択します。リストが表示され、リビジョン情報からフォルダを右クリックして、を選択しますUpdate to this Revision

あなたは終わった


ああ、そうですね、それは[ログの表示]ダイアログではなく、メインのリポジトリブラウザウィンドウにありました。それでも、このコマンドはローカルの作業用コピーを更新しようとしますが、サーバーでこの問題を直接修正したいと思います(数千のファイルを含む数百のタグをチェックアウトすることが、私が望んでいるものとは異なると想像できます)行う)。
Borek Bernard

それは私のために働いた。コンテキストメニューオプション(右クリック)は「このリビジョンからの変更を元に戻す」であり、変更をリバースマージします。
hsg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.