git svnを使用してリモートブランチをチェックアウトする


188

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

回答:


355

標準のSubversionレイアウト

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

git svn clone http://svn.example.com/project -Tトランク-bブランチ-tタグ

--stdlayoutSubversionリポジトリが一般的な構造を使用している場合、このオプションは便利なショートカットです。

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

gitリポジトリに、Subversionリポジトリが行うすべてのことを無視させます。

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

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

gitブランチ-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、その履歴を線形に保ってください!


さらに詳しい情報

また、関連する質問へ回答を読むことに興味があるかもしれません。


私はgit svn cloneを使用してトランクをチェックアウトしたため、これは機能しません。ブランチをチェックアウトするように設定していません...最初にそれを行う必要があると思います。
markovuksanovic

実際のところ、私はgit svn clone svn.example.com/project/trunkを使用 しましたが、現在のリポジトリを失うことなく他のブランチを追跡するように設定する方法がわかりません...
markovuksanovic

20
あなたのsvnリモートにプレフィックスを提供することをお勧めします。(またはの--prefix=svn/ときに追加)これにより、ローカルブランチにサフィックスを追加する必要がなくなります。git-svn initgit-svn clone
jasonkarns

複数のブランチがある場合、他のブランチを処理する前に「git checkout master」を実行することを忘れないでください
Eildosa '27

show-ignoreエラーが発生した場合は、試してくださいgit svn show-ignore -i trunk
Antti Haapala
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.