web-dev-qa-db-ja.com

git svnを使用したリモートブランチのチェックアウト

Git svnを使用してsvnリポジトリをチェックアウトしました。次に、ブランチの1つをチェックアウトして追跡する必要があります。それを行う最良の方法はどれですか?

180
markovuksanovic

標準Subversionレイアウト

Subversionトランク、タグ、ブランチを含むgitクローンを作成します。

git svn clone http://svn.example.com/project -T trunk -b branches -t tags

Subversionリポジトリが典型的な構造を使用している場合、--stdlayoutオプションは素敵なショートカットです。

git svn clone http://svn.example.com/project --stdlayout

GitリポジトリがSubversionリポジトリが行うすべてを無視するようにします:

git svn show-ignore >> .git/info/exclude

これで、git側のすべてのSubversionブランチが表示されるはずです。

git branch -r

Subversionのブランチの名前がwaldoであるとします。 git側では、実行します

git checkout -b waldo-svn remotes/waldo

-svnサフィックスは、次の形式の警告を回避するためのものです

警告:refname 'waldo'はあいまいです。

Gitブランチwaldo-svnを更新するには、実行します

git checkout waldo-svn 
 git svn rebase

トランクのみのチェックアウトから開始

Subversionブランチをトランク専用クローンに追加するには、gitリポジトリの.git/configを変更して、

[svn-remote "svn-mybranch"] 
 url = http://svn.example.com/project/branches/mybranch
 fetch =:refs/remotes/mybranch

ランニングの習慣を身に付ける必要があります

git svn fetch --fetch-all

git svnが別個のリモートであると考えるものをすべて更新します。この時点で、上記のようにブランチを作成および追跡できます。たとえば、mybranchに対応するgitブランチを作成するには、次を実行します。

git checkout -b mybranch-svn remotes/mybranch

git svn dcommitを使用するブランチについては、その履歴を線形に保ちます。


さらに詳しい情報

関連する質問への回答 を読むこともできます。

343
Greg Bacon