コードリポジトリの最新のリビジョンが破損し、アプリが不安定になりました。以前のリビジョンに戻したいのですが。
しかし、作業コピーで単に「元に戻す」を使用したくありません。私は実際に自分のヘッドリビジョンと以前のいくつかのリビジョンをリポジトリ内で削除し、それによって私のリポジトリを以前のリビジョンに「戻し」、それがヘッドリビジョンになることを望んでいます。誰か私がこれをどうやってやるか知っていますか?
多分このリンクはあなたを助けるでしょう:
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]
それぞれに。よくやった!次に、これらの中間編集がすべて行われなかったかのように、作業コピーを操作します。そして、コミットする準備ができたら、いつものようにsvn commitを使用してください!
これでうまくいきました。 HEADとしてリビジョン1234があり、最後の3つのコミットを元に戻したいとします。
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
これは古い質問であることはわかっていますが、Windows/TortoiseSVNでこれを行う方法を見つけました。
コメントが示唆するように、リビジョンを「削除」することはできませんが、できることは、元に戻したいリビジョンと同じ最新のリビジョンを作成することです。
次に、それをチェックアウトした他のすべての人に行って、更新してもらい、新しいファイルを必ず削除するようにします。
また、そのリビジョンが誰であるかを誰もが知っていることを確認し、潜在的に説明を更新する必要があります。
私(VisualSVN、30-HEAD)はこれを機能します:
del C:\ Repositories\MyRepo\revs\0\30 del C:\ Repositories\MyRepo\revs\0\29 del C:\ Repositories\MyRepo\revs\0\28 デルC:\ Repositories\MyRepo\revprops\0\30 デルC:\ Repositories\MyRepo\revprops\0\29 デルC:\ Repositories\MyRepo\revprops\0\28 echo 27> C:\ Repositories\MyRepo\db\current
この目的でダンプ/ロードを使用できます。
Svnsyncを使用して、リビジョンのバックアップを作成することもできます。
大きなリポジトリがある場合は時間がかかります。
ターミナルに移動し、svn repsitoryに移動します。ここで、
svn update -r "復帰したいリビジョン番号"