svnのリポジトリを統合する
とあるリポジトリを別のリポジトリの配下に移してリポジトリを統合したい。
どういうことかというと
repos1 └ foo.txt repos2 └ bar.txt
これを
repos1 ├ foo.txt └ repos2 └ bar.txt
のようにrepos1配下にrepos2を移動して統合する。
事前にそれぞれのリポジトリのログを見ておくと、現状は以下のような感じ。
- repos1のログ
[/path/to/workdir/repos1]$ svn log ------------------------------------------------------------------------ r2 | tadasy | 2013-04-05 16:25:52 +0900 (金, 05 4 2013) | 1 line repos1 foo.txt add. ------------------------------------------------------------------------ r1 | tadasy | 2013-04-05 16:23:21 +0900 (金, 05 4 2013) | 1 line repos1 init ------------------------------------------------------------------------
- repos2のログ
[/path/to/workdir/repos2]$ svn log ------------------------------------------------------------------------ r2 | tadasy | 2013-04-05 16:25:15 +0900 (金, 05 4 2013) | 1 line repos2 bar.txt add. ------------------------------------------------------------------------ r1 | tadasy | 2013-04-05 16:23:32 +0900 (金, 05 4 2013) | 1 line repos2 init. ------------------------------------------------------------------------
手順はシンプル
- repos2をsvndumpでdumpする
- repos1にrepos2用のディレクトリをつくりコミットする
- repos2のdumpファイルをrepos2用のディレクトリにloadする
repos2をsvndumpでdumpする
svnadminでdump
$ svnadmin dump /var/repos/repos2 > /var/tmp/repos2_dumpfile
repos1にrepos2用のディレクトリをつくりコミットする
repos1の作業コピーに移動
$ cd /path/to/workdir/repos1
repos2用のディレクトリを作ってコミットする
[/path/to/workdir/repos1]$ svn mkdir repos2
[/path/to/workdir/repos1]$ svn ci -m 'add repos2 dir.' repos2
repos2のdumpファイルをrepos2用のディレクトリにloadする
svnadminでloadする。 --parent-dirにはさっき作ったrepos2用のディレクトリ名を指定する
[/path/to/workdir/repos1]$ svnadmin load --parent-dir repos2 /var/repos/repos1 < /var/tmp/repos2_dumpfile
repos2のsvn logを確認しておく
r4,5にrepos2のログがマージされている
[/path/to/workdir/repos1]$ svn log ------------------------------------------------------------------------ r5 | tadasy | 2013-04-05 16:25:15 +0900 (金, 05 4 2013) | 1 line repos2 bar.txt add. ------------------------------------------------------------------------ r4 | tadasy | 2013-04-05 16:23:32 +0900 (金, 05 4 2013) | 1 line repos2 init ------------------------------------------------------------------------ r3 | tadasy | 2013-04-05 16:26:54 +0900 (金, 05 4 2013) | 1 line add repos2 dir. ------------------------------------------------------------------------ r2 | tadasy | 2013-04-05 16:25:52 +0900 (金, 05 4 2013) | 1 line repos1 foo.txt add. ------------------------------------------------------------------------ r1 | tadasy | 2013-04-05 16:23:21 +0900 (金, 05 4 2013) | 1 line repos1 init ------------------------------------------------------------------------