当其他团队成员正在使用SVN时,在本地使用Hg并推送到SVN仓库 - 这可能吗?

时间:2011-03-24 20:44:22

标签: svn mercurial rebase hgsubversion

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

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

当时间到来时,我们收到了来自Hg的错误消息:

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

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

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

2 个答案:

答案 0 :(得分:6)

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

我使用this进行设置并从此一直爱着它!

需要注意的是,您无法使用Mercurial合并分支之间的更改。您仍然可以在分支上工作(使用hg up [some-branch]),但是当需要将其合并到trunk时,您需要提交,推送到some-branch,然后使用subversion合并{{1进入主干。

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

祝你好运!

答案 1 :(得分:5)

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

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