Subversionのリポジトリを http://hogehoge.jp/svn とする
コミットしたユーザー名を取得
Git:8.2 Gitとその他のシステムの連携 - Git への移行より、users.txtにSubversionリポジトリでコミットしたユーザ一覧を書き出す。ローカルのSubversionで管理しているディレクトリにて以下のコマンドを実行する。
% svn log --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt
users.txt の中身は以下のようになっている。これをGitのユーザ名と対応付ける必要がある。
Subversionのユーザ名 =
これを以下のようにする。
Subversionのユーザ名 = Gitのユーザ名 <メールアドレス>
これをちゃんとやっておかないとローカルへの吐き出しに失敗する。
git-svnのインストール
% sudo aptitude install git-svn
ローカルへの吐き出し
Subversionは通例にしたがい、trunk, branches, tags という構成であるとする。このとき、以下のコマンドでローカルにクローンを作る。
% mkdir gittemp % cd gittemp % git svn clone --no-metadata -A users.txt -t tags -b branches -T trunk http://hogehoge.jp/svn or % git svn clone --no-metadata -A users.txt -s http://hogehoge.jp/svn 〜中略〜 Checked out HEAD: http://hogehoge.jp/svn rXXX % cd svn % git branch -a
gitのブランチ化
以下のようにgitに変換されたとする。
% git branch -a * master remotes/branch_dir1 remotes/branch_dir2 remotes/tags/tag1 remotes/tags/tag2 remotes/tags/tag3 remotes/trunk
”remotes/***"以下に拡張されたbranchesやtags以下のディレクトリをgitのブランチにする。
% git checkout -b NewBranchName REMOTES/HOGEHOGE remotes/branch_dir1をgitのブランチにするとき % git checkout -b branch_dir1 remotes/branch_dir1 % git branch