首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cvs2svn与合并信息

cvs2svn与合并信息
EN

Stack Overflow用户
提问于 2009-03-10 23:46:10
回答 2查看 501关注 0票数 1

我希望使用cvs2svn将CVS项目转换为Subversion。它有一个主主干(HEAD),由主干创建了几个临时开发分支。

在转换它之前,我们将把主干中的最新更改合并到所有dev分支中。但是,它们也会有一些尚未合并回主干的更改。

当我将项目转换为SVN时,它将没有任何合并历史属性。那么,我如何初始化这些属性,以便随后与分支合并?

换句话说,在转换之后,主干和任何给定的分支之间都会有一些不同。下一次,当我从主干合并到分支时,我不希望看到这些差异是需要合并的更改。但当我从树枝上合并到树干里时,我会的。这个是可能的吗?

UPDATE:我采纳了mhagger的建议,并告诉SVN分支已经从主干合并了所有更改:

代码语言:javascript
复制
svn co [branch URL] .
svn merge --record-only [trunk URL]
svn commit -m ''

这是可行的,所以下次我尝试从主干合并到分支时,它将不会显示新的更改。

但我还是有问题--重新整合,从树枝回到树干。它最后显示了大量"R"eplaced文件,这意味着主干有一个文件X,而分支有一个文件X,但是它们不被认为是同一个文件。这使得合并变得有点混乱,尽管最终的结果似乎是正确的。

我认为发生这种情况是因为以下一系列事件:

  • 创建了分支(在CVS中)
  • 文件X被添加到主干中(在CVS中)
  • X被合并到分支中(也在CVS中)
  • 项目被转换为Subversion
  • Subversion不知道分支/X是从主干/X复制的,所以它认为它是一个替代品。

SVN历史看起来如下所示:

代码语言:javascript
复制
r100: create branch (copied from trunk)
r200: add trunk/X
r300: add branch/X (because of a CVS merge, but it's not a SVN copy)

那么,在进行重新整合合并时,我有没有办法告诉Subversion忽略文件的祖先呢?还是更好的转换这些文件的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-10 04:46:06

好吧,我想我有办法解决上面提到的重新整合问题,以防有人感兴趣。

根据本文件的说法,如果我已经将主干的最新版本合并到分支中,那么执行--重新整合与对主干执行此操作本质上是一样的:

代码语言:javascript
复制
svn merge [trunk URL] [branch URL]

但是这个语法允许--忽略祖先,这--不能重新整合。所以我可以:

代码语言:javascript
复制
svn merge --ignore-ancestry [trunk URL] [branch URL]

这向我展示了和重新整合一样的结果,没有所有的“R”文件。唯一的其他区别似乎是mergeinfo属性。我不确定这些是否正确,所以最好在之后删除这个分支,就像你在重新整合之后那样。

票数 0
EN

Stack Overflow用户

发布于 2009-03-11 04:29:03

您可能知道,cvs2svn不生成任何合并元数据,除了关于分支从何处发芽的隐式信息。(它不能,因为CVS没有记录这样的信息。)因此,在转换之后,您必须显式地告诉Subversion在CVS下完成的合并。

最简单的方法是使用"svn merge --record-only ...",如颠覆书中所描述的。

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

https://stackoverflow.com/questions/632729

复制
相关文章

相似问题

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