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

反映された→ http://monaos.git.sourceforge.net/git/gitweb.cgi?p=monaos/monaos;a=commitdiff;h=2ee9186cd367cc4ba56793cd3b4278d77789d925