3

我正在尝试使用SubGit,但我遇到了分支问题:我希望在 Git 下创建的分支只能在 Git 内生存和死亡。我发现了这个:SubGit:如何排除分支?,但它说

麻烦来自于合并提交:如果提交 A 是合并分支 foo 到 master 的结果,那么 SubGit 在 Subversion 端为提交 A 的相应父级创建分支/foo。如果您不想将 SubGit 生成的分支包含到分支/* 命名空间中,请考虑在 Subversion 端也使用一些特殊分支

我不想弄乱 SVN,因为我正在评估 Subgit,我不想改变 SVN 上的任何东西。我想我可以通过在推送到 Git 存储库之前重新定位来实现我的目标(意思是,只提交合并的历史记录而不是 git 分支)但我担心这可能会在提交回 SVN 时导致冲突。关于如何解决这个问题的任何想法,而无需等待 SubGit 2.1 版(声称可以做我想做的,但不会在不久的将来 - 引用链接答案:)it's going to take some time before we implement it

4

1 回答 1

5

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/* 分支以跟踪具有长名称的分支从一个或另一个命名空间。这就是为什么我认为这对你来说是一个很好的解决方案。

于 2014-03-14T14:54:14.507 回答