【问题标题】:Versioning when binary AND text files are involved?涉及二进制和文本文件时的版本控制?
【发布时间】:2011-06-28 21:36:38
【问题描述】:

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

  1. 使用补丁
  2. 使用 git 或 hg 等版本控制系统。

就我的目的而言,如果只是文本文件,补丁是一个更好的选择。但是,由于有些图像可能会被替换/添加/删除,那么最好的方法是什么?

是否有一个干净的 diff/patch 实用程序也可以处理二进制差异(我不必指定它是二进制的——我应该能够区分整个目录而不是单个文件,我不能在二进制模式下使用 bash 的差异)并将它们用作补丁? 如果不是,对于二进制文件,哪个版本控制系统更简洁?

【问题讨论】:

    标签: git mercurial versioning patch quilt


    【解决方案1】:

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

    • 使用单个补丁队列并将所有补丁顺序依次放入其中
    • 通过 qqueue 命令使用多个补丁队列,并根据适合您的标准对补丁进行分组。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • VCS 让管理这个变得更加复杂,信不信由你。就我的目的而言,如果一切都可以通过某种补丁来完成,并且这些补丁都保存在存储库中,那么它会更干净。
      • VCS 只不过是这样一个包含补丁的存储库的工具。
      • @Vanwaril:听起来您可能正在寻找补丁队列?如果是这样,有些项目在 Mercurial 和 Git 之上实现了补丁队列。对于 Mercurial,请参阅 hg mq,对于 Git,请参阅 git.wiki.kernel.org/index.php/…
      • Mercurial 和 Git 可以制作二进制补丁。
      • @Vanwaril:hg mq 可以处理不同的补丁队列(看看stevelosh.com/blog/2010/08/…)。此外,只要它们真正独立,您就可以轻松更改补丁顺序。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        相关资源
        最近更新 更多