在Eclipse中,我在CVS项目中的这一系列操作是否会按照我的要求执行?

时间:2012-08-09 00:38:31

标签: eclipse version-control cvs

我对CVS并不十分熟悉,但在我的工作中,我在CVS中有一个形状如下的项目:

------A-------B  D         Main branch
      |
      |----------C         My branch

标签A上的项目有效。在标签B,它没有,所以A正在生产中。这些都是几年前完成的。我来了,想要改变A,但我不太了解B,因为我不想触摸它,我做了一个分支。在C,我已经决定我的变化很重要,B是无关紧要的。我希望C处的任何东西都坐在主分支上的D上,而A到B的所有东西都要被忽略。

有人在我的工作中建议我通过操作系统将主分支的内容复制到主分支的内容,但后来说它打破了历史记录,我应该首先向Stack Overflow寻求更好的解决方案。

我在Eclipse中都是这样做的,所以我的想法是在工作区中打开A,将C合并到其中,并将结果提交到头部,优先考虑我的方面以获得每个差异,以获得D. ,我担心从AC到D的合并可能不会达到我的预期,而且我不想破坏它。

我的问题是:这会做我期望它做的吗?如果没有,比我同事的建议更安全的做法是什么?

3 个答案:

答案 0 :(得分:0)

如果我必须使用CVS,我更喜欢使用WinCVS。我们的一些遗留物使用CVS,这很痛苦。

您以与SVN完全相同的方式合并回主分支,但它看起来更复杂。看看WinCVS是否更容易让我知道。不要复制&转发,这是一个非常糟糕的方法。

答案 1 :(得分:0)

http://www.eclipse.org/articles/article.php?file=Article-BranchingWithEclipseAndCVS/article2.html简要显示了CVS Merge功能。您需要找到代表您与HEAD分歧的点的标记,以便使用它。

答案 2 :(得分:0)

原来,没有,它不会做我期望的事情。将C合并到A按预期工作,但是在B上提交AC不会,因为我在A标记下工作,而不是HEAD标记(B),并且提交仅更改旧标记。

而不是提出的方法,它应该以相反的顺序完成,或者一次完成。 HEAD应该还原为A,然后可以合并分支,或者您可以同时执行它们。 Eclipse中的CVS没有一种简单的方法可以干净地完成这项工作,但它 有一种恼人的方式干净地完成它:

  • 在工作区中打开HEAD。
  • 右键单击项目 - >比较 - >另一个分支或版本......
  • 选择分支拆分的点(A)或要用(C)替换HEAD的分支的末尾。
  • “同步”视图将显示两个版本之间不同的每个文件。
  • 对于不同的每个文件,请返回Package Explorer视图并右键单击 - >历史......(不是"另一个分支或版本......"因为那时你将同时处理多个标签,并且提交将转到不同的地方)。然后选择包含您要保留的文件版本的标记(A或C,具体取决于您与之比较的内容)。
  • 一旦没有剩余差异,请提交。

如果与C进行比较,则两个分支都处于相同状态。你完成了。 D会有你想要的东西。

相反,如果您与A进行比较,您现在可以将C合并到HEAD上。一旦你再次提交,D将拥有你想要的东西。