リポジトリから特定のコミットを削除する(2)

先日のエントリの実験をしてみた。結果としては、やり方は間違ってない気がするよ、ということ。

リポジトリsvntestを作る。そしてファイルa,bを作り、以下のような流れでコミットしてみる。ファイルBがなかったことにしたいファイル。間違えて登録してしまい、慌てて削除したがデータベースにはしっかり残っているので何とかして欲しい、という当初のシチュエーションを再現したつもり。括弧内はそのときファイルaに対して書き込んだ数字。

  • 1: ファイル aを登録 (1)
  • 2: ファイル aを編集 (2)
  • 3: ファイル bを追加
  • 4: ファイル aを編集 (3)
  • 5: ファイル bを削除
  • 6: ファイル aを編集 (4)

ファイルbを無かったことにするには、リビジョン3,5を削除すればいい。そのためにdumpで以下のようにデータを取り出して

% svnadmin dump ./svntest --revision 0:2> dumpfile1 
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
% svnadmin dump ./svntest --revision 4:4 --incremental > dumpfile2
* Dumped revision 4.
% svnadmin dump ./svntest --revision 6:HEAD --incremental > dumpfile3
* Dumped revision 6.

新しいリポジトリを作ってこれらをloadする。

% svnadmin create svntest2
% svnadmin load svntest2 < dumpfile1
<<< Started new transaction, based on original revision 1
     * adding path : a ... done.

------- Committed revision 1 >>>

<<< Started new transaction, based on original revision 2
     * editing path : a ... done.

------- Committed revision 2 >>>

% svnadmin load svntest2 < dumpfile2
<<< Started new transaction, based on original revision 4
     * editing path : a ... done.

------- Committed new rev 3 (loaded from original rev 4) >>>

% svnadmin load svntest2 < dumpfile3
<<< Started new transaction, based on original revision 6
     * editing path : a ... done.

------- Committed new rev 4 (loaded from original rev 6) >>>

これをチェックアウトしてログを見ると・・・

% svn co file:///Users/nunocky/tmp/SVNTest/svntest2
A    svntest2/a
Checked out revision 4.
% cd svntest2/
% ls
a
% svn log
------------------------------------------------------------------------
r4 | nunocky | 2009-12-06 16:59:39 +0900 (日, 06 12 2009) | 1 line

modified file 'a'
------------------------------------------------------------------------
r3 | nunocky | 2009-12-06 16:59:18 +0900 (日, 06 12 2009) | 1 line

modified file 'a'
------------------------------------------------------------------------
r2 | nunocky | 2009-12-06 16:57:52 +0900 (日, 06 12 2009) | 1 line

modified file 'a'
------------------------------------------------------------------------
r1 | nunocky | 2009-12-06 16:57:26 +0900 (日, 06 12 2009) | 1 line

added file 'a'
------------------------------------------------------------------------

% cat a
4

・・・ちゃんと思った通りになっているな・・