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

2012年11月29日

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

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

ただし、

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

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

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

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

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

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

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

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

pushは、先ほどと同様に
git svn dcommit
ブランチの作業が終了すれば

git checkout master
git branch -d local-my_repo

とすれば良い

タグも同様

アンケート

git

Posted by GENDOSU