涉及二进制和文本文件时的版本控制?

时间:2011-02-17 07:04:11

标签: git mercurial versioning patch quilt

我有一个项目需要维护文本和二进制文件的更改。我有几个选择:

  1. 使用补丁
  2. 使用git或hg等版本控制系统。
  3. 就我的目的而言,补丁是一个更好的选择,如果它只是文本文件。但是,由于有些图像可能被替换/添加/删除,这是最好的方法吗?

    是否有一个干净的差异/补丁实用程序,可以处理二进制差异(没有我必须指定它是二进制 - 我应该能够区分整个目录而不是单个文件,我不能用bash的二进制模式差异)并将它们用作补丁? 如果不是,在二进制文件方面,哪个版本控制系统更清晰?

3 个答案:

答案 0 :(得分:2)

Git和Mercurial都可以轻松处理文本和二进制文件。使用您喜欢的任何一种。是的,VCS是正确的选择。

答案 1 :(得分:2)

Mercurial有补丁队列的概念(启用了mq扩展名),很大程度上受到quilt的启发。
这允许您以多种方式管理补丁:

  • 使用单个修补程序队列并按顺序包含所有修补程序顺序
  • 使用qqueue命令使用多个补丁队列,并按照适合您的任何条件对补丁进行分组。

作为奖励,由于补丁队列实际上是补丁文件,您可以轻松更改其顺序,甚至可以将它们从一个队列移动/复制到另一个队列(查看.hg目录以查找补丁队列)。

您可以在Steve Losh's tutorial on mercurial queue找到有关管理补丁队列的更多有用信息。

答案 2 :(得分:0)

如果您不喜欢VCS,请尝试使用包含补丁的ftp服务器。版本号可以用作目录名。可以使用脚本备份此系统,该脚本根据目录名称顺序应用修补程序。

在我正在进行的项目中,以这种方式应用数据库补丁。但是,它们保留在VCS中。文件可用于维护当前版本,脚本将读取该文件以决定应用哪个补丁。