Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于二进制文件的问题 cvs diff

Posted on 2008-12-17 12:47 Prayer 阅读(1266) 评论(0)  编辑 收藏 引用 所属分类: CVS

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

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

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

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

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


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理