Mona の subversion を git に移行中
sourcceforge.net の subversion レポジトリを git に移行してみる。
subversion レポジトリを変換
% mkdir git % cd git % cat authors.txt higepon = higepon <higepon@users.sourceforge.jp> tino = tino <none> bayside = bayside <none> eds1275 = eds1275 <none> h0shu = h0shu <none> hiratch = hiratch <none> junjunn = junjunn <none> nerry = neri <none> okuoku = okuoku <none> mjt = mjt <none> shadowin = shadowin <none> shadowulfila = shadowulfila <none> sky-blue = Gaku <none> yuinejp = yuinejp <none> yume_kondou = yume_kondou <none> syn = syn <none> root = root <none> hello = hello <none> csharp = csharp <none> yamamimail = yamamimail <none> mona_os_yossy = mona_os_yossy <none> (no author) = no_author <none> % git svn clone --no-metadata -A authors.txt -t tags -b branches -T trunk https://monaos.svn.sourceforge.net/svnroot/monaos
20時間くらいかかった。しかも途中で git-svn の 1687 行目でエラーが出たので
$u =~ s!^\Q$url\E(/|$)!! or die "$refname: '$url' not found in '$u'\n";
このあたりをコメントアウトした。多分やってはいけない変更だと思われる。
sourceforge.net の git に push
sourceforge.net を共有レポジトリの置き場とする。
% git branch -rv --no-abbrev > tmp % awk '{ system("git branch" " " $1 " " $2) }' tmp % mv .git/refs/heads/* .git/refs/tags % git config user.name "higepon" % git config user.email "higepon@users.sourceforge.jp" % git remote add origin ssh://higepon@monaos.git.sourceforge.net/gitroot/monaos/monaos % git config branch.master.remote origin % git config branch.master.merge refs/heads/master % git push --all % git push --tags
ローカル作業用に clone してコミット & push
% git clone ssh://higepon@monaos.git.sourceforge.net/gitroot/monaos/monaos % cd monaos % git config user.name "higepon" % git config user.email "higepon@users.sourceforge.jp" % # ここでファイルを変更 % git add -u % git commit % git push