如果你要合并的文件中包含关键字[第 12 章],你会得到一大堆冲突,这是因为关键字与合并的版本关联。
因此,你需要指定-kk[替换模式 在 第 12 章]参数在合并的命令行里面。这样只会替换关键字名而不包括里面的值。这个选项认为那些都是相同的,使合并避免产生假的冲突。
例如,假定你有一个这样的文件:
+---------+
_! 1.1.2.1 ! <- br1
/ +---------+
/
/
+-----+ +-----+
! 1.1 !----! 1.2 !
+-----+ +-----+ |
当前你的工作目录在主干上(版本1.2),合并时会得到下面的信息:
$ cat file1 key $Revision: 1.2 $ . . . $ cvs update -j br1 U file1 RCS file: /cvsroot/first-dir/file1,v retrieving revision 1.1 retrieving revision 1.1.2.1 Merging differences between 1.1 and 1.1.2.1 into file1 rcsmerge: warning: conflicts during merge $ cat file1 <<<<<<< file1 key $Revision: 1.2 $ ======= key $Revision: 1.1.2.1 $ >>>>>>> 1.1.2.1 . . . |
产生这些信息是由于合并尝试将1.1与1.1.2.1之间的差异合并到你的工作目录。因为版本关键字从Revision: 1.1变为Revision: 1.1.2.1,cvs试图合并这些差异,而事实上仅仅是你的工作目录里面的文件包含了Revision: 1.2。
下面是使用-kk后的结果:
$ cat file1 key $Revision: 1.2 $ . . . $ cvs update -kk -j br1 U file1 RCS file: /cvsroot/first-dir/file1,v retrieving revision 1.1 retrieving revision 1.1.2.1 Merging differences between 1.1 and 1.1.2.1 into file1 $ cat file1 key $Revision$ . . . |
这时在文件中1.1和1.1.2.1版本的关键字使用的是关键字名Revision,因此合并认为没有什么修改,也就不会有冲突产生。
使用合并的-kk参数有一个要留意的地方。因为它会处理所有的cvs关键字,这样对处理使用-kb参数的二进制文件会有问题。因此,在二进制文件处理中应该是解决冲突而不要使用-kk。