0

我对 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 的合并可能达不到我的预期,而且我不想破坏事情。

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

4

3 回答 3

0

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

您合并回主分支的方式与 SVN 完全相同,但看起来要复杂得多。看看 WinCVS 是否让它变得更容易并告诉我。但是不要复制和转发,这是一种非常糟糕的方法。

于 2012-08-09T02:21:53.257 回答
0

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

于 2012-08-09T06:29:37.737 回答
0

事实证明,,它不会像我期望的那样。将 C 合并到 A 按预期工作,但在 B 上提交 AC 不会,因为我在 A 标签下工作,而不是在 HEAD 标签 (B) 下工作,并且提交只会更改旧标签。

而不是建议的方法,它应该以相反的顺序完成,或者一次完成。HEAD应该恢复为A,然后可以合并分支,也可以同时进行。Eclipse 中的 CVS 没有一种简单的方法可以干净地完成此操作,但它确实有一种烦人的方法可以干净地完成此操作:

  • 在您的工作区中打开 HEAD。
  • 右键单击项目 -> 比较 -> 另一个分支或版本...
  • 选择分支分裂的点 (A) 或要用 (C) 替换 HEAD 的分支末端。
  • 同步视图将向您显示两个版本之间不同的每个文件。
  • 对于每个不同的文件,返回包资源管理器视图并右键单击 -> 历史...(不是“另一个分支或版本...”,因为这样您将一次使用多个标签并提交会去不同的地方)。然后选择包含您要保留的文件版本的标签(A 或 C,取决于您要比较的内容)。
  • 一旦没有剩余的差异,就提交。

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

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

于 2012-08-10T04:55:39.903 回答