继续我们上面的例子。现在这棵树看起来是这样的:
+-----+ +-----+ +-----+ +-----+ +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- 主干
+-----+ +-----+ +-----+ +-----+ +-----+
! *
! *
! +---------+ +---------+
Branch R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !
+---------+ +---------+ |
正如上面所讨论的,分支1.2.2.2所引导的“*”号表示从R1fix分支到主干的合并。
现在我们继续开发R1fix分支:
+-----+ +-----+ +-----+ +-----+ +-----+
! 1.1 !----! 1.2 !----! 1.3 !----! 1.4 !----! 1.5 ! <- 主干
+-----+ +-----+ +-----+ +-----+ +-----+
! *
! *
! +---------+ +---------+ +---------+
分支 R1fix -> +---! 1.2.2.1 !----! 1.2.2.2 !----! 1.2.2.3 !
+---------+ +---------+ +---------+ |
然后你可能会希望合并新的变更到主干中去。如果你仍使用cvs update -j R1fix m.c,cvs将试图合并你已经合并过的东西,这可能导致一些不希望发生的事情。
因此,你必须表达清楚你希望只合并未被合并的内容的意思。这样需要使用两个-j参数。CVS合并从第一个“-j” 的版本到第二个“-j”版本的变化。例如,在我们上面的例子中:
cvs update -j 1.2.2.2 -j R1fix m.c # Merge changes from 1.2.2.2 to the
# head of the R1fix branch |
如果出现的问题是你需要手工指定1.2.2.2的版本号,一个更好的方法是使用:
cvs update -j R1fix:yesterday -j R1fix m.c |
然而,更好的方式是在每一次合并后加一个标笺给R1fix分支,然后就可以使用标笺以后的合并:
cvs update -j merged_from_R1fix_to_trunk -j R1fix m.c |