CentOS 5 で既存 Subversion リポジトリを Git から使えるようにする

January 16, 2009

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

Git で編集する

svn commit と同じです。ファイルを更新した後、git commit を行います。

$ git commit <修正したファイル>

Git の変更を SVN リポジトリに反映させます。

$ git-svn dcommit

Subversion の更新を手元の Git に反映する

$ git-svn rebase

tilfin freelance software engineer