2011-03-24 24 views
7

我发现在这里似乎是非常类似的问题,看起来好的答案是什么;但由于某种原因,我似乎还无法弄清楚如何让这个工作。我担心的是,这可能根本不可能。当其他团队成员正在使用SVN时,在本地使用Hg并推送到SVN回购 - 这可能吗?

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

当时间来到推,我们收到了来自汞柱此错误信息:我想知道

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

如果问题是,我们必须从SVN拉的变化让我们的队友的更新,然后融合我们当地的变化,现在Hg无法弄清楚如何让SVN快乐?这似乎是我从其他SO问题得到的消息&我看过的答案;然而,在这些情况下(做hg rebase --svn)分配的建议似乎对我们也不起作用;同样的“无法找到svn父母”的消息给出。

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

+0

既然你提到Git ..我经常使用git-svn与Subversion版本库进行交互。我可以通过SVN或通过Git直接与其他人进行交互,并且不会将问题推回到Subversion(重新绑定后)。我没有使用hg-svn连接器进行比较。 – 2011-03-24 20:58:23

+0

你不能将hg合并到svn中。您需要将Hg回购转换为线性版本历史记录。 HTTP://计算器。com/questions/5336192/steps-needed-to-allow-hgsubversion-svn-clone-to-push-back – Rudi 2011-03-25 08:12:31

回答

5

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

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

6

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

我用this来设置并从此一直爱它!

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

我已经准备了详细描述此过程的博客文章。你可以在这里看到:http://xinmyname.tumblr.com/post/11305033055/subversion-mercurial-branches-oh-my

祝你好运!

+1

Andy,我喜欢你的提示,关于如何务实地处理Hg和SVN之间的分支问题。你能否详细说明如何做到这一点?我想这样做(SVN是我的上游项目,我有一组我想要应用的更改,但守门员希望我在接受并合并到SVN中继之前先将其提交到不同的SVN分支)。所以目前我用hgsubversion克隆了SVN的trunk。我应该直接用SVN创建一个分支吗?然后使用hgsubversion来克隆这个分支,然后我的提交以后去哪里? – 2011-10-08 04:30:40

+0

是的,我想要更多的细节。我尝试使用hg,而其他人都使用SVN,但似乎毫无意义,如果我本地不能拥有不同的分支。它听起来像是你可能不得不手动推送更改到hg分支?所有SVN关心都是线性历史,对吗?如果我还没有准备好提交SVN,我可以在幕后有多个分支吗?这次我带着书签去了,但不确定那是我真正想要的。 – nportelli 2011-10-10 12:56:06

+0

我想这将是一个值得博客的博客,呃?我会尝试今天晚上的工作并发布一个链接。是的,你必须手动将更改回推到SVN。至少,据我所知。也许有人知道更好的方法? – 2011-10-10 17:07:51

相关问题