发布
社区首页 >问答首页 >使用mercurial合并cvs分支

使用mercurial合并cvs分支
EN

Stack Overflow用户
提问于 2010-12-13 17:05:10
回答 3查看 403关注 0票数 1

目前,我的公司正在使用cvs进行版本控制。我们有一个旧的代码分支,专门用于一个客户机(不要问),我们想要合并到头。

由于这个分支和头部之间的差异,我认为mercurial的合并功能应该会使我的工作更容易一些。我的推理是:

  1. 创建分支和当前头部的汞存储库。
  2. 将分支回购合并到主干回购。

在这个阶段,我期望mercurial能提供比cvs更好的merge support

然后,我会将对主干存储库的更改提交回cvs。

这个方法听起来不错吗?这个策略会不会像我想的那样导致一个不那么痛苦的合并,还是我缺少了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-13 17:35:40

Mercurial合并比CVS或Subversion更好的原因是因为它跟踪了这两个头/分支的最新共同祖先,因此您将确保您提供的信息是准确的,否则可能会导致更糟的合并。

如果你这样做:

代码语言:javascript
代码运行次数:0
复制
hg init newrepo
cd newrepo
cvs checkout POINT_OF_DIVERGENCE
hg commit --addremove -m 'commiting point of divergence'
cvs checkout BRANCH
hg addremove --similarity 90 # let Mercurial discover any renames
hg commit -m 'committing branch head'
hg update -r 0               # jump back to point of divergence
cvs checkout HEAD
hg addremove --similarity 90 # let Mercurial discover any renames
hg commit -m 'commiting HEAD head'
hg merge

那么这两个头的共同祖先将是发散点(抱歉,如果CVS命令错了,这是一个很长的时间)。

问题是知道POINT_OF_DIVERGENCE在CVS中的位置-- CVS根本不跟踪这一点,这就是为什么它自己的合并不使用它。

CVS的最佳实践总是建议,每当您分支时,您都会创建一个标记来标记分歧点,但是如果您没有这样做,那么前面就会有一些棘手的搜索。

如果没有一个正确的最近的共同祖先,汞的合并不会比CVS的更好。

票数 1
EN

Stack Overflow用户

发布于 2010-12-13 17:09:21

是的,这应该是可行的,但在此过程中可能会出现一些小问题(比如如何将源从CVS中获取到Mercurial:使用hg convert或手动导入某个修订版,等等)。

如果遇到问题,请创建一个新的问题。

票数 0
EN

Stack Overflow用户

发布于 2011-06-09 20:18:52

除了非常简单的历史之外,内置的转换扩展在CVS中不会做得很好。使用cvs2svn的分叉名为cvs2hg

http://hg.gerg.ca/cvs2svn

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4431389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档