CentOS 5 で既存 Subversion リポジトリを Git から使えるようにする
Git
参考にしたもの
git-svnを使って既存のSVNリポジトリでGitを使う方法のメモ - Hello, world! - s21g
git-svnメモ - I sort my thought...
インストール
標準パッケージに Git はないので、RPMForge を yum で使う設定が必要
CentOS 5.2 で yum の対象リポジトリに RPMforge を追加するには - Tosshi Note
# yum install --enablerepo=rpmforge (省略) Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing for dependencies: git i386 1.5.2.1-1.el5.rf rpmforge 27 M perl-Compress-Zlib i386 1.42-1.fc6 base 52 k perl-Error noarch 0.17015-1.el5.rf rpmforge 27 k perl-Git i386 1.5.2.1-1.el5.rf rpmforge 18 k perl-HTML-Parser i386 3.55-1.fc6 base 92 k perl-HTML-Tagset noarch 3.10-2.1.1 base 15 k perl-libwww-perl noarch 5.805-1.1.1 base 376 k subversion-perl i386 1.4.2-2.el5 base 748 k Transaction Summary ============================================================================= Install 8 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 28 M (省略) Running Transaction Installing: perl-Error ######################### [1/8] Installing: subversion-perl ######################### [2/8] Installing: perl-HTML-Tagset ######################### [3/8] Installing: perl-HTML-Parser ######################### [4/8] Installing: perl-Compress-Zlib ######################### [5/8] Installing: perl-libwww-perl ######################### [6/8] Installing: perl-Git ######################### [7/8] Installing: git ######################### [8/8] Dependency Installed: git.i386 0:1.5.2.1-1.el5.rf perl-Compress-Zlib.i386 0:1.42-1.fc6 perl-Error.noarch 0:0.17015-1.el5.rf perl-Git.i386 0:1.5.2.1-1.el5.rf perl-HTML-Parser.i386 0:3.55-1.fc6 perl-HTML-Tagset.noarch 0:3.10-2.1.1 perl-libwww-perl.noarch 0:5.805-1.1.1 subversion-perl.i386 0:1.4.2-2.el5 Complete!
Git リポジトリを SVN から作成
この後のサンプルは SVN リポジトリ URL が file:///var/svn/project とします。その階層下に trunk / brunches / tags がそれぞれあるとします。
trunk / brunches / tags の全部取得する
下記だと SVN リポジトリの trunk / brunches / tags の全部取ってきてしまうので、結構時間がかかります。
$ git-svn clone file:///var/svn/project (省略) Checking 4129 files out... 100% (4129/4129) done Checked out HEAD: file:///var/svn/project r185
直近のリビジョン以降かつ trunk だけを取得する
$ git svn clone --trunk trunk --revision 180 file:///var/svn/project Initialized empty Git repository in .git/ (省略) r180 = 2b82878aaa2fe3edac8e7f91b27a319fee51802a (trunk) Checked out HEAD: file:///var/svn/project/trunk r180
Git の設定を確認
使い始める前に設定を確認してみる。user.name が空になっている。
$ cd project $ git config -l user.name= core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true svn-remote.svn.url=file:///var/svn/project svn-remote.svn.fetch=trunk:refs/remotes/trunk
ユーザー名 user.name とメールアドレス user.email を設定します。
$ git config --global user.name toshi $ git config --global user.email toshi@midgar.local
再度確認すると設定されています。
$ git config -l user.name=toshi user.email=toshi@midgar.local core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true svn-remote.svn.url=file:///var/svn/project svn-remote.svn.fetch=trunk:refs/remotes/trunk
Subversion の更新を手元の Git に反映する
$ git-svn rebase