It's raining cats and dogs.

無駄なことなんてないはず

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.
------------------------------------------------------------------------


手順はシンプル

  1. repos2をsvndumpでdumpする
  2. repos1にrepos2用のディレクトリをつくりコミットする
  3. 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
------------------------------------------------------------------------