【发布时间】:2011-03-17 10:55:40
【问题描述】:
哪些成熟的版本控制系统允许覆盖查找和应用 delta 的算法?无论是通过插件还是通过外部工具,都没有关系。
必须可以为特定文件类型覆盖 VCS 的内部差异算法。自定义增量必须存储在存储库中以供增量应用算法使用。
在我的情况下,内部二进制差异是不可接受的。
我的意思是完全覆盖算法,而不是使用自定义差异程序显示差异。
【问题讨论】:
-
我感觉您的要求过于具体。像这样“必须将自定义增量存储在存储库中” 的措辞会立即排除不存储增量的 VCS-es。 -- IOW:你怎么还不确定你将使用哪个 VCS,却又知道你需要重写算法?是否有任何理由假设某个 VCS 会与您的特定文件类型行为不端?如果您需要访问特定的增量,您可以从您的树中生成它们(例如,在 git 中有一个预提交挂钩或按使用文件属性)
-
“自定义增量必须存储在存储库中……” – Git 不会将增量存储在存储库中,而是完整的文件。它仅将增量用于网络通信和补丁(显然,出于兼容性原因,这些都是通用补丁格式)。因此,无需更改 Git 中的内部 delta 算法。您可以以这种方式更改 difftool,以便
git diff为特定文件类型调用自定义 difftool。 -
戳,好的,那么我们需要覆盖客户端和服务器端的比较算法。我想 difftool 仅用作向用户表示增量的一种方式,而不是用于生成补丁。
-
@utapyngo 你有没有设法得到任何可接受的解决方案?我正在寻找构建结果的版本控制,比如可执行文件等。但我发现它实际上是一个更复杂的问题,因为 .zip 和各种档案也需要正确版本控制,因此需要自定义差异无论如何。
-
@AndreyTch.: 不,我只是使用了自定义差异和合并程序。
标签: svn git version-control mercurial bazaar