将源代码管理中的更改提交到多个分支的实用方法

时间:2009-01-01 13:35:36

标签: eclipse version-control cvs branch

使用源代码管理时的常见情况是拥有开发分支以及版本化发布分支。我们使用CVS,HEAD作为开发分支,以及一个名为eg的分支。发布 - 6-2以获取当前版本的产品。

新功能的开发仅限于开发分支,但有时必须在开发分支和当前版本分支中检查错误修复。这有时会非常繁琐,所以我正在寻找实现这一目标的实用方法。

当要提交的文件在两个分支上同步时,我特别希望快速“提交这些分支”解决方案。

(我们使用CVS作为我们的源代码控制系统,因此任何CVS特定的答案都很好。但是,看看其他源代码控制系统是否能提供更好的方法也很有趣。  在客户端,我们使用Eclipse,因此Eclipse解决方案很好。但是如果你有一个非Eclipse解决方案,那也没关系。)

2 个答案:

答案 0 :(得分:9)

将修复程序应用于所需的最早版本分支。然后将更改合并到下一个版本分支,依此类推,直到从最后一个版本分支合并到HEAD。

假设您的产品的最旧版本是1.0,并且您还拥有1.1和1.5版本。 HEAD将添加下一版本的新功能。如果在1.0中发现错误,则将修复程序应用于1.0分支。从1.0合并到1.1分支。从1.1合并到1.5分支,最后从1.5分支合并到HEAD。

从分支到分支的合并比手动将修复应用于每个分支更好。

使用CVS,您必须手动跟踪合并的版本,以便在下次合并时不包含相同的修订。

如果更改为使用Subversion,则从分支到分支的合并更容易。 Eclipse的subversion工具将跟踪您之前合并的修订,大大简化了在两个分支之间重复合并的任务。

从CVS更改为Subversion很容易(ish)。你不会是第一个采取这样行动的人。

答案 1 :(得分:4)

就像awalshe所说,最好在分支之间进行合并。为了挑选合并,Pragmatic Version Control using CVS中描述的方法非常好:

在更改前的分支 - 标记(PRE_FOO)中,进行更改并提交,在更改后标记(POST_FOO)。然后,在trunk中,使用标签进行合并:

cvs up -j PRE_FOO -j POST_FOO

在SVN中合并分支更容易,更安全,将整个CVS历史转换为SVN是微不足道的 - 请参阅cvs2svn。您应该使用SVN 1.5或 - 使用早期的SVN版本 - svnmerge