7

我在 SO 上发现了一些看起来非常相似的问题,而且答案似乎很好;但由于某种原因,我似乎仍然无法弄清楚如何让它发挥作用。我担心的是,这可能根本不可能。

情况如下:我在一个使用中央 SVN 存储库作为我们的版本控制系统的小团队中工作。我的结对程序员和我对没有本地提交选项感到沮丧(并且不想经历使用 SVN 分支的麻烦),所以我们研究了使用 Git 或 Mercurial 作为 SVN 客户端并发现 hgsubversion似乎有能力做我们想做的事:在 Hg 存储库上本地工作,在本地提交,并且只有在我们准备好时才推送到 SVN。

到了 push 的时候,我们收到了 Hg 的这个错误信息:

Sorry, can't find svn parent of a merge revision.

我想知道问题是否在于我们必须从 SVN 中提取更改以获取队友的更新,然后与我们的本地更改合并,现在 Hg 无法弄清楚如何让 SVN 满意?这似乎是我从我看过的其他 SO 问题和答案中得到的信息;但是,在这些情况下(做hg rebase --svn)给出的建议似乎对我们也不起作用;给出了相同的“找不到 svn 父级”消息。

这甚至可能吗?或者当团队中的其他开发人员直接对 SVN 进行更改时,是否比它的价值更麻烦?

4

2 回答 2

6

我已经这样做了一年多了,效果很好。我得到甜蜜,甜蜜的 DVCS 爱和其他人,呃......不要。我使用hgsubversion作为我的桥梁。我在使用 hg-svn 时遇到了很多麻烦。YMMV。

我用来进行设置,从那以后就一直喜欢它!

需要注意的是,您不能使用 Mercurial 来合并分支之间的更改。您仍然可以在分支上工作(使用hg up [some-branch]),但是当需要将其合并到主干时,您需要提交,推送到some-branch,然后使用颠覆来合并some-branch到主干。

我准备了一篇博文,详细描述了这个过程。你可以在这里看到它:http: //xinmyname.tumblr.com/post/11305033055/subversion-mercurial-branches-oh-my

祝你好运!

于 2011-03-24T21:37:21.227 回答
5

问题是 hgsubversion 不能将 Mercurial 的合并推送到 Subversion。只要您不创建任何合并变更集,一切都应该可以正常工作。(FWIW Subversion 合并工作正常,因为 hgsubversion 只是忽略合并信息并创建常规的单父变更集。)您描述的问题是 hgsubversion 的已知限制之一;其他列在 中hg help subversion

为了解决这个问题,您可能需要考虑使用rebase扩展来确保推送的历史是完全线性的。

于 2011-03-24T21:32:09.197 回答