2011-02-17 131 views
2

我有一个项目,我需要维护对文本和二进制文件的更改。我有两个选择:涉及二进制和文本文件时的版本控制?

  1. 使用补丁
  2. 使用版本控制系统如Git或HG。

对我来说,如果只是文本文件,补丁是更好的选择。但是,由于有图像可能会被替换/添加/删除,这是最好的方式吗?

是否有一个干净的差异/补丁工具,可以照顾二元差异(以及我不必指定它是二进制的 - 我应该能够区分整个目录而不是单个文件,我可以用bash的二进制模式比较)并将它们用作补丁? 如果不是,当涉及到二进制文件时,哪个版本控制系统是一个更清洁的选项?

回答

2

Mercurial具有修补程序队列的概念(启用了mq扩展),主要受quilt的启发。
这可以让你管理你的补丁在几个方面:

  • 使用单个补丁队列,并有你的补丁顺序相继都在它
  • 使用几个补丁队列,用qqueue命令,并有补丁分组无论什么标准适合你。

作为奖励,如补丁队列是真正的补丁文件,你可以很容易地改变它们的顺序,甚至从一个队列移动/复制到另一个(在你的.hg目录一看发现补丁队列) 。

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

2

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

+0

VCS使得管理这个过程变得复杂得多,不管你信不信。就我的目的而言,如果一切都可以通过某种补丁完成,并且修补程序在存储库中进行维护,则它会更加清洁。 – Vanwaril 2011-02-17 07:12:31

0

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

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