2014年12月1日月曜日

svnをgitに移行する。

稼働中のsvnサーバーを別サーバーにgitとして移行する。
使用したもの。
稼働中サーバー:Ubuntu 12.04.1
移動先サーバー:Ubuntu 14.04.5
ローカル作業環境:Cygwin

稼働中のsvnサーバーから試にリポジトリを一つgit svn cloneする
clone先でコマンド実行する。
リポジトリがtrunk, tags, branchesになっている場合には-sオプションをつけるといい?
--prefix=svnオプションをつけると、タグやブランチなどがsvn表示されて判別しやすくなる。

mkdir SvnToGit
cd SvnToGit
git svn init -s --prefix=svn/ http://[サーバーアドレス]:[接続ポート]/[svnパス]
git svn fetch

これで、素直なリポジトリだとHEADまで取得できる。

タグの移行
svnからcloneしてきたタグを確認する。
タグの数が多かったり、変な名前のタグが混ざっている場合には取り除いて自動タグ作成したほうが良い。
今回は極小だったので手動タグ生成。

git tag "タグ名" "svn/tags/タグ名"
タグが生成されたか確認。
git tag -r

移行の準備が整ったリポジトリをPushする
移行先のサーバーに移行用のリポジトリを新規作成しておく。

mkdir SampleProject
cd SampleProject
git init
sudo chown -R git:git ../SampleProject
git config --bool core.bare true

Pushする。

git push ssh://git@サーバーアドレス:接続ポート/リポジトリまでのパス/.git