我现在工作的公司使用SVN。这里有很多团队,他们为他们所从事的项目拥有自己的存储库。这些存储库有时相互依赖(使用svn:外部),例如,一些终端用户项目使用核心团队回购,等等。
我想从SVN转到我的团队。我希望像这样设置工作流
hg serve )。我想知道有可能做这样的设置吗?我已经阅读了这关于HgSubversion扩展的文章,但是它不能给我第三步--向SVN上游同步--然后对Mercurial的更改来自远程团队成员。
发布于 2012-02-28 13:00:29
正如您已经发现的,使用HgSubversion的主要限制是,在将汞历史推到Subversion时,需要将其线性化。这意味着你在变化无常的历史中不可能有分支,所以很难作为一个团队一起工作。
此外,当您推送您的变送器集时,HgSubversion将进行重基操作。假设您的团队在推送到服务器之前要小心地重新定位他们的本地提交。变化无常的历史看起来是这样的:
... r10 --- a1 --- a2 --- b1 --- b2 --- b3艾丽斯和鲍勃在推他们之前重新建立了他们的改变集。当您与Subversion同步时,您将得到:
... r10 --- a1 --- a2 --- b1 --- b2 --- b3
\
r11 --- r12HgSubversion现在将在[r12]的基础上重新建立汞变化集。
... r10 --- r11 --- r12 --- a1' --- a2' --- b1' --- b2' --- b3'艾丽斯和鲍勃还没有素数的原始的无重基的变化集。因此,他们需要在从团队Mercurial服务器撤出前脱光衣服。这样的工作流程需要非常小心才能完成。
我曾经为客户端设置了一个更简单的工作流:我们没有在Subversion版本的基础上重新设置Mercurial变更集,我们只是将当前版本的文件提交给Subversion。这意味着我们不会在Subversion存储库中保存完整的汞历史记录。另一方面,我们可以很容易地处理合并之类的事情。
在上面的示例中,SVN服务器将从r13获得一个具有Mercurial存储库状态的b3。r13修订版将是很大的:它包含了a1对b3所做的所有更改。如果仍然使用Subversion的用户希望看到单个更改,那么他们必须查看Mercurial服务器--我们将提交到Subversion中的提交消息有链接到hgweb中用于Mercurial的单个更改集,因此很容易跳到那里。
发布于 2012-02-28 10:18:22
我想知道有可能做这样的设置吗?
是的,但是在不太明显的情况下会有一些麻烦,因为这种情况不能透明地(并且自动地)从hg翻译到svn。
上游同步到SVN,然后更改为Mercurial来自远程团队成员。
hg推,与svn-回购在路径段.但如上文所示,它将使不总是工作,并且可能需要在推送前手动重基。
https://stackoverflow.com/questions/9479476
复制相似问题