it-swarm-ja.com

SVNリポジトリからリビジョンを削除したい

コードリポジトリの最新のリビジョンが破損し、アプリが不安定になりました。以前のリビジョンに戻したいのですが。

しかし、作業コピーで単に「元に戻す」を使用したくありません。私は実際に自分のヘッドリビジョンと以前のいくつかのリビジョンをリポジトリ内で削除し、それによって私のリポジトリを以前のリビジョンに「戻し」、それがヘッドリビジョンになることを望んでいます。誰か私がこれをどうやってやるか知っていますか?

33
Chris Barnhill

多分このリンクはあなたを助けるでしょう:

http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/

見積もり:

  1. 作業コピー内の最上位ディレクトリに移動します(作業コピー全体をロールバックする場合)。

  2. 実行svn revert作業コピーのファイルを、最後にコミット/チェックアウトしたときの状態に戻します。

  3. 実行svn status -v作業コピーが現在対応しているリビジョン番号を確認します(リストの中で最も高いリビジョン番号ですsvn status -vが生成します)。

  4. 実行svn merge -rXX:YYここで、XXは前のステップで取得した番号で、YYは元に戻すリビジョンの番号です。

  5. できた!これに対する可能な例外は、リビジョンYYが最初に作成されたときに存在しなかった作業コピー内のファイルは、デフォルトではsvnが削除しないため、まだそこにあるということです。それらを取り除く場合は、svn del [filename]それぞれに。

  6. よくやった!次に、これらの中間編集がすべて行われなかったかのように、作業コピーを操作します。そして、コミットする準備ができたら、いつものようにsvn commitを使用してください!

12
Felix

これでうまくいきました。 HEADとしてリビジョン1234があり、最後の3つのコミットを元に戻したいとします。

svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
76
martin

これは古い質問であることはわかっていますが、Windows/TortoiseSVNでこれを行う方法を見つけました。

コメントが示唆するように、リビジョンを「削除」することはできませんが、できることは、元に戻したいリビジョンと同じ最新のリビジョンを作成することです。

  1. リビジョンを元に戻したいディレクトリのリポジトリのHEADをチェックアウトします。
  2. 元に戻す最上位のディレクトリ(「Trunk」など)のTortoiseSVNで「ログの表示」ビューをロードします。
  3. 削除するリビジョンを右クリックします注:これは、削除するリビジョンであり、元に戻すリビジョンではありません。
  4. 「このリビジョンから変更を元に戻す」を選択します。
  5. プロンプトで「はい」をクリックします。
  6. 通常どおりにチェックアウトを更新しますが、「HEAD」に更新します。
  7. コミットします。

次に、それをチェックアウトした他のすべての人に行って、更新してもらい、新しいファイルを必ず削除するようにします。

また、そのリビジョンが誰であるかを誰もが知っていることを確認し、潜在的に説明を更新する必要があります。

5
Martin

私(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 
 
4
Anton Golikhoff

この目的でダンプ/ロードを使用できます。

Svnsyncを使用して、リビジョンのバックアップを作成することもできます。

大きなリポジトリがある場合は時間がかかります。

4

ターミナルに移動し、svn repsitoryに移動します。ここで、

svn update -r "復帰したいリビジョン番号"

0
Mohd Ikram