ソースをgitとsvnで管理する設定

git-svnが動くようになったところで、UNIX(CentOS)サーバとWindowsに環境設定、SourceForgeSVNで管理していたソースを、svn, gitそれぞれ両方で管理できるように設定。

git svnコマンド使う方法もありますが、今までなれたsvn単独、調べやすいgit単独でまずやってみたいので・・・・

(追記:以下、src以下を全部引越していますが、プロジェクトごとにtrunk以下のみを移転してgitリポジトリ作った方が良さそうです。操作は、git svnの指定URLが変わる程度)

SourgeForge側の設定

http://sourceforge.jp/docs/Git%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
開発ダッシュボード→プロジェクト情報変更から「Gitの使用」にチェック
ソースコード→Git管理から、リポジトリ追加。とりあえず「src」を作っておく*1
SSH鍵はSVNと同じものを使用。

CentOS側の設定

svn(ver.1.6.6)とgit(ver.1.5.1.2)はyum(rpmforge.repo)でインストール。


SorceForgeの規定で、emailはSourceForgeから割り当てられるアドレスに擦る必要があるので、以下の通り設定。

[cake@cake sourceForge]$ git config --global user.email ログイン名@users.sourceforge.jp


現在、sourceForgeSVNのsrc以下のソースを設置しているディレクトリを、gitでも管理可能に設定してみます。

svnのsrc以下に、Gitのシステムファイル無視の設定を追加

[cake@cake git]$ svn propset svn:ignore ".git*" \.
[cake@cake src]$ svn st
 M      .
[cake@cake src]$ svn commit -m "Git設定ファイル無視の追加"


別のディレクトリで、svnからソースをコピー。.svnを無視するように設定してから、gitにリポジトリに書き込み。

[cake@cake git]$ git svn clone svn+ssh://cake_67@svn.sourceforge.jp/svnroot/trpgtools-onweb/src
[cake@cake git]$ vi .gitignore
*.svn
[cake@cake git]$ git commit -m ".svnを無視"
[cake@cake git]$ git push cake_67@git.sourceforge.jp:/gitroot/trpgtools-onweb/src.git master
Enter passphrase for key '/home/cake/.ssh/id_rsa':
The authenticity of host 'git.sourceforge.jp (202.221.179.25)' can't be established.
RSA key fingerprint is b7:78:67:21:63:ef:c2:a8:af:88:6c:a6:98:a7:06:75.
Are you sure you want to continue connecting (yes/no)? yes
updating 'refs/heads/master'
  from 0000000000000000000000000000000000000000
  to   318e89cbb1bb58616f6a4cfea26d90d84419c164
Generating pack...
Done counting 3428 objects.
Deltifying 3428 objects...
 100% (3428/3428) done
Writing 3428 objects...
 100% (3428/3428) done
Total 3428 (delta 1835), reused 0 (delta 0)

最初のpushなのでmasterが必要。

gitディレクトリから、trunk, tagsなどsvnと共通のディレクトリをすべて削除、ここにsvn checkoutでsrcをチェックアウトする。
この時、.gitや..gitignoreは削除しない。


これで、編集したソースがsvn, git両方で差分管理可能なディレクトリの完成。

*1:数分程度で更新