我有以下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 存储库并通过git svn dcommit
和git svn rebase
管理同步。
我可以轻松地使用git svn clone https://svn-repo
为他们复制整个 svn 存储库,但这也会为他们提供system-a
下的所有内容以及system-b
下除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 存储库中拥有这种"稀疏结帐"结构?
当然,让我为您引用手册页
--include-paths=<正则表达式>正则表达式>
这允许人们指定一个Perl正则表达式,该表达式将导致仅包含来自SVN签出的匹配路径。
--include-paths
选项应与给定存储库上的每次获取(包括由于克隆、dcommit、变基等原因导致的自动获取(匹配。--ignore-path 优先于 --include-paths。
config key: svn-remote.<name>.include-paths