2014年11月22日土曜日

(リビジョンを変更せずに)Subversionで過去のリビジョンを永久に削除する方法

前回の方法でリポジトリを作成した場合、リビジョン番号は削除前のリビジョン番号よりも小さな値になる。
このとき、作成済みの作業コピーが記録しているリビジョン番号と異なるため、作業コピーから再作成後のリポジトリへアクセスすることができない。

そこで、リポジトリに空リビジョンを作成し、リビジョン番号の辻褄を合わせる。
まず、リポジトリを再作成する前に、リビジョン 0 より空リビジョン用のダンプファイルを作成する。
sudo sh -c "svnadmin dump -r 0:0 repo > skip.dump"
次にダンプファイル内の以下の値を変更する。
特に日時は、作業コピー作成前の日時になるように変更する。
sudo vim skip.dump


SVN-fs-dump-format-version: 2

UUID: 9bdad3bf-5b2e-41d3-be84-38a2beedc9c1

Revision-number: 1           # 0 → 1
Prop-content-length: 56
Content-length: 56

K 8
svn:date
V 27
2014-11-07T16:52:13.885682Z  # 作業コピー作成前の日時
PROPS-END
前回と同様にリポジトリを再作成するが、ダンプファイルをリロードする際、上で作成した skip.dump を空リビジョンとしてリロードしたのち、バックアップダンプファイルをリロードする。
for (( i=0; i<4; i++)); do sudo svnadmin load repo < skip.dump; done
sudo svnadmin load repo < repo.dump
なお、TortoiseSVN を利用して作業コピーから再作成したリポジトリへアクセスする場合は、まずSVN更新すること。

0 件のコメント:

コメントを投稿