subversionのリポジトリをgitに変換はよくあると思うが、gitのリポジトリをSubversionに変換というのを今回やりたい。
というのも、何度もいっているが、中央には、Subversionで、各ワークをgitで私は使いたいからだ。
(これは、Tracとはviewvcとか、すでに構築してしまった環境を変えるのも面倒というのもある。)
しかし、今回はとりあえず、ネットにつながっていない環境で初めてしまったgitのリポジトリをSubversionに変換して、
再度、git-svnで再開したいのだ。
こんな用途を持っている人はあまりいないのか、WEBで方法を探したがすぐには見つからなかったので、
自分なりに、次のような手順でログ情報だけでも取り込むことにした。
Subversionのリポジトリを作成
ここでは、Subversionでのリポジトリを作成する方法は述べない。
で、svnで、trunk , tags, branches のディレクトリを作成し、コミットしておく。
これで、リビジョンは、[1]になったわけだ。
※どうやら、log情報がないとこれからやる処理がうまくいかないらしく、リビジョン1を作成するためにやった。
git-svnで、リポジトリの情報を取得
git svn clone svn://・・・・・ -T trunk -t tags -b branches
これで、gitとしてのワークができあがったことになる。
gitで育ててしまったワークをgit-svn のワークのリモートとして登録する。
ここでは、/home/foo/local.git がgitのリポジトリとする。
また、その名前を”org”としてつけた。
もちろん、このコマンドはgit-svn のワークの中で行う。
git remote add org /home/foo/local.git git fetch org
パッチファイルを作成する。
ここで、git-mergeをはじめ行ったが、それでは、リビジョン1の前のログとなってしまい、Subversionにログを登録することができなかった。
そのために、git-format-patch を使った。
git format-patch -o patches master..org/master git am patches/*.patch
できあがったログをSubversionにコミットする。
git svn dcommit
で終了だ。


