svnでリポジトリを他のリポジトリの配下に入れたくなった
1. 始めに
svnでリポジトリを跨いだディレクトリとかのコピー、インポートをしたくなった。
具体的には hoge, fuga というリポジトリがあるんだけど、hogeリポジトリをfugaリポジトリの中のディレクトリ、fuga/hogeに入れたくなった。
svnadminにdump, loadがあるのでそれでできないかな、ということで試してみた。
2. コマンド
結論から行くといけた。手順を追ってみる。
shell> cd fuga; mkdir hoge; svn add hoge; svn ci hoge –m ‘add hoge dir.’ shell> ssh svnhost shell> svnadmin dump /path/to/repositories/hoge \ | sed -e 's/Node-path: /Node-path: hoge\//' \ | sed -e 's/Node-copyfrom-path: /Node-copyfrom-path: hoge\//' \ | sudo svnadmin load /path/to/repositories/fuga
まずはインポート先のディレクトリを作っておく。
その後はsvnのホストに移動する。ここではリポジトリの実パスを /path/to/repositories としてある。
実際に作業をする前にはsvnの提供をやめてコールドバックアップを取っておいたほうがいいと思う。
(service svnserve stop; service httpd stop; tar zcvf /tmp/repositories.tar.gz /path/to/repositories; などなど)
次に実際にダンプ、インポートとしていく。そのときに途中でsedを使って対象ファイルの相対位置を変えてやる。
具体的にはNode-pathで始まる行、Node-copyfrom-pathで始まる行をそれぞれ書き換えてやる事に。
この辺は他のサイトを参照してみた。
http://blog.fredrikbostrom.net/2007/03/14/migrating-part-of-repository-in-svn
どんな中身がloadされるかは確認しながら行いましょう。
どうやらうまくいったみたいだけど、後のrivision番号の方が日時が遅いという自体に。まぁその通りなんだけど。それでいいです。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント