svnのリポジトリからgit cloneするには

2012年11月29日

たとえば、svnのリポジトリhttp://server/svn/trunk/repoをgitで扱いたい場合、
[shell]git svn clone http://server/svn/trunk/repo[/shell]
とやれば、svnのリポジトリをgitとして扱うことが出来ます。

gitでtagやbranchなども使ってsvnリポジトリを扱いたい場合
[shell]git svn clone -s http://server/svn/trunk/repo[/shell]
とすれば、ブランチやタグの情報も取得出来るようになります。

ただし、

http://server/svn/trunk/repo
http://server/svn/branches
http://server/svn/tags

という構成になっていないと
よろしくやってくれないようです。

通常と違う構成でsvnを使っている場合、-sオプションでは無く
[shell]git svn clone –trunk=<trunkのパス> –tags=<タグのパス> –branches=<ブランチのパス> <リポジトリURL>[/shell]
というオプションでそれぞれのパスを指定すれば、よろしくやってくれるようです。

git svn cloneしたローカルリポジトリには、通常通りgit commitなどで作業が出来ます。

ただし、svnリポジトリにpushする時には
[shell]git svn dcommit[/shell]
を使用します。

そして、svnリポジトリから更新を取得するには
[shell]git svn rebase[/shell]
を使用します。

svn上のブランチの一覧を取得するには
[shell]git svn branch -r[/shell]
ブランチに対して作業する場合
[shell]git branch local-my_repo my_repo[/shell]
とすることで、my_repoブランチを手元のローカルブランチに作成する

さらに、そのローカルブランチをチェックアウト
[shell]git checkout local-my_repo[/shell]
あとは作業してコミットしたり

pushは、先ほどと同様に
[shell]git svn dcommit[/shell]
ブランチの作業が終了すれば
[shell]git checkout master
git branch -d local-my_repo[/shell]
とすれば良い

タグも同様

git

Posted by GENDOSU