在CVS(Eclipse)中将过时的分支与HEAD合并

时间:2013-02-27 14:54:12

标签: java merge cvs branching-and-merging

基本上,我们有一个分支(称之为B,它包含一些特定于分支的代码),需要与HEAD合并。我们遇到的问题是分支是很久以前创建的。从那时起,HEAD已经多次更新,具有许多新功能,并且修复了许多错误。 B分支仍然已经在HEAD中修复了大部分错误,并且缺少一些功能。因此,需要做的是采取分支B的一些功能(可能有大约50个文件包含新功能 - 我不确切知道这些文件是什么),同时保留HEAD的其余部分。

目前,Eclipse中的合并工具报告了1700多个更改,自动合并覆盖了HEAD中的代码和分支中的代码(因此,引入了已修复的错误)。有没有更好的方法来解决这个问题,而不是通过所有1700更改并手动合并它们?

1 个答案:

答案 0 :(得分:0)

如果我了解您的问题,您想了解特定分支上的更改,并将这些更改应用于主干。我认为最简单的方法是创建补丁文件。

首先将分支的基础和提示检入单独的目录。你说你有一个基本标签,它使你领先99%使用CVS的人。如果不是这样,那么您可以进行基于日期的结账。找到正确的日期将是一个痛苦;最简单的方法是查看日志,查看您知道在分支上未更改的文件,并跟踪该分支在修订历史记录中的显示位置。

第二步是创建一个补丁文件,描述在分支上进行的所有更改。说明here似乎已完成(我在谷歌搜索“创建补丁”并查看了最佳结果)。

接下来做什么取决于补丁的大小,以及自分支切割以来树干的变化程度。如果您感到幸运,最简单的方法是检查主干并按照链接文档中的说明应用补丁。您可能至少会遇到一些故障,并且您需要检查每个更改,以验证它仍然有意义。

另一种方法是打开三个窗口:窗口#1是补丁文件,它将告诉您更改的文件和更改的文件。窗口#2是分支(尖端)上的文件,因此您可以看到它当前正在做什么。窗口#3是主干上的文件。在这种方法中,您将代码从#2复制到#3,这是有意义的,#1仅用作复制内容的指南。

对于它的价值,虽然CVS在分支和合并方面特别痛苦,但没有VCS能够合并高度分歧的分支(无论Joel说什么)。