2017-08-14 33 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但他们需要使用git在本地,因为他们没有对我们的SVN服务器直接访问。 git-svn似乎正是我要找的,因为它允许我创建他们的git repo并通过git svn dcommitgit svn rebase来管理同步。

我可以很容易地复制他们整个SVN回购与git svn clone https://svn-repo,但是这也将给他们system-bsystem-a下的一切,以及比其他component-1一切。有几个原因不这样做,至少是因为复制(并跟踪更改)大量存储库并不影响system-b/component-1团队是不明智的。

上面显示的已加星标的目录是他们真正需要从中更新并进行更改的唯一目录。让他们无法意外地更改他们不需要访问的东西也是非常好的。

我该如何使用git-svn来实现?我想我可以创建几个单独的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 

但是,这看起来和听起来像这将是git的球队头疼,因为,我的理解,这个创建四个实际不同的git仓库。有没有办法在一个使用git-svn的git仓库中拥有这种“稀疏结帐”结构?

回答

1

当然,让我引用man page

--include路径= <正则表达式>

这允许指定一个Perl的正则表达式,将导致只有列入匹配来自SVN结帐的路径。该--include-paths选项应该匹配每(包括自动取由于克隆dcommit变基等)在给定的存储库。 --ignore-paths优先于--include-paths。

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

相关问题