コードリポジトリの最新リビジョンが破損し、アプリが不安定になりました。以前のリビジョンに戻したい。
しかし、作業コピーで単に「元に戻す」を使用したくありません。私は実際に自分のレポのヘッドリビジョンといくつかのリビジョンを削除し、それによりレポを以前のリビジョンに「戻し」、それがヘッドリビジョンになります。誰も私がこれをどうやってやるのか知っていますか?
コードリポジトリの最新リビジョンが破損し、アプリが不安定になりました。以前のリビジョンに戻したい。
しかし、作業コピーで単に「元に戻す」を使用したくありません。私は実際に自分のレポのヘッドリビジョンといくつかのリビジョンを削除し、それによりレポを以前のリビジョンに「戻し」、それがヘッドリビジョンになります。誰も私がこれをどうやってやるのか知っていますか?
回答:
たぶん、このリンクはあなたを助ける:
http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/
見積もり:
作業コピー内の最上位ディレクトリに移動します(作業コピー全体をロールバックすると仮定します)。
実行
svn revert
して、作業コピーのファイルを、最後にコミット/チェックアウトしたときの状態に戻します。実行
svn status -v
して、作業コピーが現在対応しているリビジョン番号を確認します(svn status -v
生成するリストの中で最も高いリビジョン番号です)。実行
svn merge -rXX:YY
場所XX
前のステップで得られた数であり、YY
あなたがに戻したいリビジョンの数です。できた!これの可能な例外は、リビジョン
YY
が最初に作成されたときに存在しなかった作業コピーのファイルがまだ存在することです。デフォルトではsvnは物を削除しないからです。それらを削除したい場合はsvn del [filename]
、それぞれに対してa を実行します。よくやった!ここで、すべての中間編集が行われなかったかのように、作業コピーで遊んでください。そして、努力をコミットする準備ができたら、いつものようにsvn commitを使用してください!
svn merge -rXX:YY .
。行末に現在のディレクトリを参照するドットを忘れずに配置してください。また、TortoiseSVNには、リバースマージのオプションがあります。
これは私のために働いた。リビジョン1234がHEADであり、最後の3つのコミットを元に戻したい場合:
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
これは古い質問ですが、Windows / TortoiseSVNでこれを行う方法を見つけたところです。
コメントが示唆したように、リビジョンを「削除」することはできませんが、できることは、戻すリビジョンと同じより新しいリビジョンを作成することです。
その後、それをチェックアウトした他のすべてのユーザーにアクセスして、それらを更新してもらい、新しいファイルを削除するようにします。
また、すべての人がそのリビジョンが何であるかを確認し、潜在的に説明を更新する必要があります。
この目的でダンプ/ロードを使用できます。
svnsyncを使用して、あるリビジョンのバックアップを作成することもできます。
大きなリポジトリがある場合は時間がかかります。
私にとって(VisualSVN、30-HEAD)はこれを動作させます:
del C:\ Repositories \ MyRepo \ revs \ 0 \ 30 del C:\ Repositories \ MyRepo \ revs \ 0 \ 29 del C:\ Repositories \ MyRepo \ revs \ 0 \ 28 del C:\ Repositories \ MyRepo \ revprops \ 0 \ 30 del C:\ Repositories \ MyRepo \ revprops \ 0 \ 29 del C:\ Repositories \ MyRepo \ revprops \ 0 \ 28 echo 27> C:\ Repositories \ MyRepo \ db \ current
ターミナルに移動して、svn repsitoryに移動します。次に入力します
svn update -r「元に戻したいリビジョン番号」