2017-08-14 10 views
0

私は、次のSVNリポジトリの構造を持っている:git-svnを使ってsvnリポジトリの異種の部分を扱うにはどうすればいいですか?

branches 
    branch-1 
    branch-2 
trunk 
    system-a 
     component-0 
     component-1 
    system-b* 
     component-0 
     component-1* 
    shared* 
    site_scons* 
    SConscript* 

私はsystem-bcomponent-1を開発する必要がありますが、彼らは私たちのSVNサーバへの直接アクセスを持っていないので、彼らはローカルのgitを使用する必要がチームを持っています。 git-svnはちょうど私が探しているようで、git svn dcommitgit svn rebaseを使ってgit repoを作成し、同期を管理することができます。

私は簡単にgit svn clone https://svn-repoで彼らのために全体のsvnレポを複製することができますが、これはまた、彼らにsystem-aの下ですべてのものだけでなく、system-bcomponent-1以外のすべてを与えるだろう。これを行わない理由はいくつかありますが、そのうちの1つは、system-b/component-1チームに影響を与えない膨大なリポジトリを複製(および変更を追跡)するのは賢明ではないということです。

上記のスター付きのディレクトリは、本当にアップデートを取得して変更する必要がある唯一のものです。また、アクセスする必要のないものを誤って変更することを不可能にすることは素晴らしいことです。

どうすればでこれを達成できますか?私は、私はいくつかの別々のGitのリポジトリを作成することができます考えラました:

git svn clone https://svn-repo/trunk/SConscript 
git svn clone https://svn-repo/trunk/site-scons 
git svn clone https://svn-repo/trunk/system-b/component-1 
git svn clone https://svn-repo/trunk/shared 

しかし、私の理解に、この4つの実際の個別のgitリポジトリを作成し、以来、これは見て、それはgitのチームにとって頭痛の種になりますように聞こえます。 git-svnを使用して、単一のgitリポジトリ内にこの「スパースチェックアウト」構造を持たせる方法はありますか?

答えて

1

確かに、これは1だけを含めることが原因となりますPerlの正規表現を指定することができます

--include-パス= <正規表現>

私はあなたのためman pageを引用しましょうSVNからのチェックアウトと一致するパス。すべてが所定のリポジトリに(によりクローンなどdcommitリベースに自動フェッチを含む)をフェッチするため--include-pathsオプションが一致しなければなりません。 --ignore-pathsが--include-pathsよりも優先されます。

config key: svn-remote.<name>.include-paths

関連する問題