Subgit:避免将git分支同步到svn

Subgit:避免将git分支同步到svn,git,svn,subgit,Git,Svn,Subgit,我正在尝试使用,但我在分支方面遇到了一个问题:我希望在Git下创建的分支只在Git中生存和消亡。我找到了这个:,但上面写着 问题来自合并提交:如果提交A是将分支foo合并到主节点的结果,那么SubGit在Subversion端为提交A的相应父节点创建分支/foo。如果您不希望将子GIT生成的分支包含到分支/*命名空间中,请考虑在SuffEdSead上使用一些特殊的分支,以及 我不想弄乱SVN,因为我正在评估Subgit,我不想更改SVN上的任何内容。我想我可以在推送到git存储库之前实现我的目标

我正在尝试使用,但我在分支方面遇到了一个问题:我希望在Git下创建的分支只在Git中生存和消亡。我找到了这个:,但上面写着

问题来自合并提交:如果提交A是将分支foo合并到主节点的结果,那么SubGit在Subversion端为提交A的相应父节点创建分支/foo。如果您不希望将子GIT生成的分支包含到分支/*命名空间中,请考虑在SuffEdSead上使用一些特殊的分支,以及


我不想弄乱SVN,因为我正在评估Subgit,我不想更改SVN上的任何内容。我想我可以在推送到git存储库之前实现我的目标(也就是说,只向SVN提交合并的历史记录,而不向git分支提交),但我担心这可能会在提交回SVN时导致冲突。在不等待SubGit版本2.1(声称做我想做的事,但不是在不久的将来-链接答案中的cit:
在我们实现它之前需要一些时间)的情况下,我可以解决这个问题吗?

SubGit只同步您在SubGit配置文件中指定的分支。默认情况下,它们是:

    trunk = trunk:refs/heads/master
    branches = branches/*:refs/heads/*
    shelves = shelves/*:refs/shelves/*
    tags = tags/*:refs/tags/*
因此,如果使用另一个名称空间,例如refs/heads/nosync/*,则其中的分支将不会同步

或者,您可以对正常分支(不同步)使用refs/heads/*并为同步设置特殊的refs/heads/sync/*命名空间:

    trunk = trunk:refs/heads/sync/master
    branches = branches/*:refs/heads/sync/*
    shelves = shelves/*:refs/shelves/*
    tags = tags/*:refs/tags/sync/*

请注意,长分支名称(如refs/heads/sync/master)不会带来不便,因为在克隆此类Git存储库后,您可以为自己的本地refs/heads/*分支分配短名称,以跟踪来自一个或另一个命名空间的长名称分支。这就是为什么我认为这是一个很好的解决方案。

事实上,我昨天尝试了这个解决方案(它反映了我已经找到的解决方案),并注意到合并提交不是问题,这意味着它们不会导致subgit将
特殊分支命名空间
同步到svn上。所以,这绝对是我一直在寻找的解决方案。非常感谢。也许我遗漏了一些东西,但在您的示例代码块中,分支不应该有
nosync
而不是
sync
吗?该块是正确的,
refs/heads/*
没有提到,因此它们不同步<提到了code>refs/heads/sync/*
,所以它们是同步的。啊,我现在明白了。我忽略了一点,在Git中,您将在
refs/heads//*
中创建Git本地的分支,因为只有在“/refs/heads/sync”下映射的位相对于SVN进行跟踪,所以仅Git的分支不会与SVN同步。似乎是一个相当不错的解决方案-谢谢!您是否有在克隆子Git存储库时使用短名称创建引用的示例?