下一个: , 上层: Binary files


9.1 关于二进制文件的问题

什么时候需要对二进制文件进行管理是很明显的:你通常使用的是二进制文件,把它们放到版本控制时,要注意的一些额外的问题。

版本控制的一个基本功能是显示两个修订版之间的差异。 例如,如果某人检入了一个文件的新版本, 也许你想看看这个版本有什么变化并想确定这些改变的好坏。 对于文本文件 cvs 是通过 cvs diff 命令来提供该功能。 对于二进制文件,一种可能的做法是:首先抽取这两的修订版本,然后使用 cvs 外部工具(例如,字处理软件通常都具有这样的功能)来比较它们。 如果没有这样的工具,那么必须通过其他的机制来跟踪改变,例如督促人们认真记录日志信息,并希望他们实际所作的改动就是他们想要改的。

版本控制系统的另一个功能是合并两个修订版。 对于 cvs,两种环境下发生这种情况。 一是用户所作的改变是在不同的工作目录下(参阅 Multiple developers)。 第二是是某人用 `update -j' 命令显式合并时(参阅 Branching and merging)。

对于文本文件,cvs 可以独立地合并,如果有冲突还可以给出冲突信号。 而对于二进制文件,cvs 的最好做法是提供两个文件的不同副本,让用户自己解决冲突。 用户可以任选其中一个副本,或者通过能处理该格式文件的合并工具来解决这个问题。 注意,让用户解决合并,主要靠用户不会偶然忽略一些改变,因此会有潜在的错误发生。

如果不喜欢上述处理方式的话,最好的解决办法是避免合并。 如何避免由于不同的工作目录引起的合并,参见 Multiple developers 里关于保留的检出方法(文件加锁)的讨论。 为了避免由于分支引起的合并,还要限制使用分支。