CVS通常都是用来存储文本文件的。对于文本文件,CVS可以合并修订,并且可以按照人的可读性显示不同修订版本之间的区别以及类似的操作。但如果你放弃这些功能的话,CVS也可以存储二进制文件。例如,某个人或许在CVS里保存一个既有文本又有图像的WEB站点。
什么时候需要对二进制文件进行管理是很明显的:你通常使用的是二进制文件。把它们放到版本控制时,要注意的一些额外的问题。
版本控制的一个基本功能是显示两个版本之间的区别。例如,如果某人检入了一个文件的新版本,也许你想看看这个版本有什么变化并想确定这些变化是好还是坏。对于文本文件可以通过cvs diff命令来实现。而对于二进制文件,一种可能的做法是:首先把这两的修订版本导出,然后使用外部工具(例如,字处理软件通常都具有这样的功能)来比较它们。如果没有这样的工具,那么必须通过其他的机制来跟踪改变,例如督促人们认真记录日志信息,并希望他们实际所作的改动就是他们想要改的。
版本控制的另一个功能是合并两个修订版本。对于CVS,有两种情况需要这个功能。一是用户所作的改变是在不同的工作目录下[第 10 章]。另一种情况是某人用update -jj命令显式合并时[第 5 章]。
对于文本文件,CVS可以独立地合并,如果有冲突还可以给出冲突信号。而对于二进制文件,CVS的最好做法是提供两个文件的不同拷贝,让用户自己解决冲突。用户可以任选其中一个拷贝,或者通过能处理该格式文件的合并工具来解决这个问题。注意:让用户解决合并,主要靠用户不会偶然忽略一些改变,因此会有潜在的错误发生。
如果不喜欢上述处理方式的话,最好的解决办法是避免合并。如何避免由于不同的工作目录引起的合并,参见[第 10 章]里关于保留的检出方法(文件加锁)的讨论。为了避免由于分支引起的合并,还要限制使用分支。