まずはオンラインでgithubに新しいレポジトリ(modlogslow)を作成してから、自分のところで次のようにgitレポジトリの下ごしらえをする。
mkdir modlogslow cd modlogslow git-svn init http://modlogslow.googlecode.com/svn --no-metadata --stdlayout git remote add origin git@github.com:yokawasa/modlogslow.git※ no-metadataとstdlayoutオプションについて前者はsvn用の余計な情報を省くで、後者はtrunk、tags、branchesを相対パスで表現するです。くわしくはman git-svn
次にソースや履歴を持ってくるときのためにSVNユーザをGITユーザにマッピング。
vim ~/svnusers.txt yokawasa = Yoichi Kawasaki <yokawasa at gmail.com> git config svn.authorsfile ~/svnusers.txt
そしてfetchして実際にsvnからソースと履歴を吸い取る。
git-svn fetch
(出力内容)
r1 = f24189e180c0e9f923f344d6c374cb82aac07d12 (git-svn)
A mod_log_slow.c
r2 = 6a0a3790566b8966ae18190892a8c1d12d0eeac5 (git-svn)
M mod_log_slow.c
....
r39 = 264fbd8608404ca19c67ac6ee333f3e50bd21a1d (git-svn)
M Makefile13
r40 = 60930f20ffaae7b41b984d9d6e56e919d8dcd9ef (git-svn)
Checked out HEAD:
http://modlogslow.googlecode.com/svn/trunk r40
....
Found possible branch point: http://modlogslow.googlecode.com/svn/trunk => http://modlogslow.googlecode.com/svn/tags/modlogslow-1.0.5, 37
Found branch parent: (tags/modlogslow-1.0.5) f38530e9f85a22d03488fd532fa2a05c7c4b6ffb
Following parent with do_switch
Successfully followed parent
r38 = eccb7db33018207a2fab70c6c15499b6b5eaa51e (tags/modlogslow-1.0.5)
M Makefile13
r39 = 264fbd8608404ca19c67ac6ee333f3e50bd21a1d (trunk)
M Makefile13
r40 = 60930f20ffaae7b41b984d9d6e56e919d8dcd9ef (trunk)
Checked out HEAD:
http://modlogslow.googlecode.com/svn/trunk r40
どうやらうまくいったような感じなので、吸い取ったブランチを見てみる。
git branch -a (出力内容) * master tags/modlogslow-1.0.2 tags/modlogslow-1.0.3 tags/modlogslow-1.0.4 tags/modlogslow-1.0.5 trunk
trunkはいいとして、subversionでのタグがtags/タグ名というブランチとして吸い取られている。ヘルプに書かれている「there may be issues if you have branches or tags」とはこのことなんでしょうね。細かいことは気にしないでとりあえずtrunkをgitにpushする。
git remote add origin git@github.com:yokawasa/modlogslow.git git push origin master
githubをみてみると問題なくpushされていることを確認。では次に漏れたタグをつける作業に入る。
マニュアルを見てタグのつけ方を調べる。そして、git logで該当するレビジョンを探し出し、そこをめがけてタグをつける。面倒だけどこれが一番安心できる方法。特に全てのタグを復旧は面倒なので、とりあえず最後のタグ(modlogslow-1.0.5)のみを復旧させることにする。git logでmodlogslow-1.0.5あたりのログを探し出す。
git log (出力内容) .... commit 264fbd8608404ca19c67ac6ee333f3e50bd21a1d Author: Yoichi KawasakiDate: Sat Apr 4 03:14:33 2009 +0000 commit f38530e9f85a22d03488fd532fa2a05c7c4b6ffb Author: Yoichi Kawasaki Date: Sat Apr 4 03:05:20 2009 +0000 changed define name from LOGRC_DEBUG to LOGSLOW_DEBUG commit b4732a4ed1012300de4c69f60d2db0983f42c993 Author: Yoichi Kawasaki Date: Sat Apr 4 03:03:47 2009 +0000 modified comment ....
ちょうど「f38530e9f85a22d03488fd532fa2a05c7c4b6ffb」あたりmodlogslow-1.0.5タグをつけたコミットなので次のようにタグ付けをする。
git tag modlogslow-1.0.5 f38530e9f85a22d03488fd532fa2a05c7c4b6ffb git push --tags (出力内容) Total 0 (delta 0), reused 0 (delta 0) To git@github.com:yokawasa/modlogslow.git * [new tag] modlogslow-1.0.5 -> modlogslow-1.0.5
メモおわり。
2009/06/30 06:50AM | Comment (0)















