之前手动调整基线正如你所发现,与HgSubversion主要的限制是,你需要它推到Subversion时,你的线性历史水银。这意味着您的Mercurial历史中不能有分支机构,因此作为一个团队很难一起工作。
此外,当您推送Mercurial变更集时,HgSubversion将执行变更。想象一下,在推送到团队Mercurial服务器之前,您的团队会谨慎地重新设置他们的本地提交。善变的历史是这样的:
... r10 --- a1 --- a2 --- b1 --- b2 --- b3
其中Alice和Bob都推在他们面前重建基础的变更。当你使用Subversion同步你:
... r10 --- a1 --- a2 --- b1 --- b2 --- b3
\
r11 --- r12
和HgSubversion现在变基上的[r12]
顶部的水银的变更:
... r10 --- r11 --- r12 --- a1' --- a2' --- b1' --- b2' --- b3'
Alice和Bob还有没有质数原始未重建基础的变更。所以他们需要在他们从团队Mercurial服务器拉出之前剥离。这样的工作流程需要很多的关注。
我曾经为客户端设置过一个更简单的工作流程:我们只是将当前版本的文件提交给Subversion,而不是在Subversion修订版上重新定位Mercurial变更集。这意味着我们不会保留 Subversion版本库中完整的Mercurial历史记录。另一方面,我们可以很容易地处理合并和什么。
在上面的例子中,SVN服务器将得到一个r13
,Mercurial存储库的状态从b3
。 r13
修订版将会很大:它包含在a1
到b3
之间所做的所有更改。如果仍然使用Subversion的人希望看到个别更改,那么他们必须查看Mercurial服务器 - 我们放入Subversion的提交消息已链接到Mercurial的hgweb
中的单个更改集,因此很容易跳到那里。
是的,我同意。 HgSubversion工作流程不适合团队(即使对于个人来说也不太舒服)。如果SVN丢失了提交历史记录并不令人反感,最好将快照提交给SVN(例如,在cron作业或每次推送代码时)。 – 2012-02-28 15:15:38
Martin,Laurens - 是的,在转移到Mercurial之后放弃SVN中的提交历史记录是可以接受的。我认为这个解决方案(批量SVN提交)适合我的情况。 – Olegas 2012-02-29 06:09:12