かつてのプロジェクトを改修することになりました。さらには新メンバーを迎えることになりましたので、使っていたsubversionリポジトリをgitへ移行することにしました。

環境

こんな環境です。古いgitだとgit svnコマンドが無いかもです。

  • FreeBSD 10.0
  • git 2.3.5

作業内容

svnリポジトリをclone

svnリポジトリを取得して、ローカルに展開します。


git svn clone -s --prefix=svn/ file://home/project/repos/myproj

svnリポジトリはtrunk、tags、branchesディレクトリに分かれているので、-sオプションを付けます。これを付けないと、tagsやbranchesのディレクトリがそのままできてしまいま(す|した)。 :sweat:

--prefixオプションを付けると、gitのブランチ名にプレフィックスが付きます。なくてもいいけど、付けるとわかりやすいかもです。

タグを移行

git branch -rとすると、svn/tags/の下にかつて付けたタグが出てきます。これらをgitのタグにします。やってもやらなくてもいいかもです。 :expressionless:


git branch -r | grep svn/tags | sed -e 's#svn/tags/##' | xargs -I % git tag % svn/tags/%

中央リポジトリの作成

このあたりはいつものやり方です。はい。


mkdir /home/project/repos/myproj.git
chgrp myteam /home/project/repos/myproj.git
git init --bare --shared=group /home/project/repos/myproj.git

中央リポジトリにpush

このあたりもいつものやり方です。


git remote add origin file:///home/project/repos/myproj.git
git push -u origin --all
git push origin --tags

おしまい

準備できましたので、新人さんにgit cloneしてもらいましょー。

これにて終了です。
お疲れさまでした。