如何使用git-svn处理svn存储库的不同部分?

时间:2017-08-14 13:11:46

标签: git version-control 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*

我有一个团队需要开发component-1 system-b,但他们需要在本地使用git,因为他们无法直接访问我们的svn服务器。 git-svn似乎正是我所寻找的,因为它允许我创建他们的git repo并通过git svn dcommitgit svn rebase管理同步。

我可以使用git svn clone https://svn-repo轻松地为他们复制整个svn repo,但这也会为system-a下的所有内容以及component-1system-b以外的所有内容提供所有内容。有几个原因没有这样做,其中最不重要的是复制(并跟踪变化)大量不影响system-b/component-1的存储库是不明智的。队。

上面显示的已加星标的目录是他们真正需要获取更新和更改的唯一目录。让他们无法意外地改变他们不需要访问的东西也是很好的。

如何使用git-svn完成此操作?我以为我可以创建一些单独的git repos,la:

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 个答案:

答案 0 :(得分:1)

当然,让我为你引用man page

  

<强> - 包括路径= LT;正则表达式&GT;

     

这允许指定Perl正则表达式,该表达式将仅包含来自SVN的checkout的匹配路径。 --include-paths选项应匹配每个 fetch (包括由于 clone dcommit rebase 等)在给定的存储库上。 --ignore-paths优先于--include-paths。

     

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