哪些成熟的版本控制系统允许覆盖查找和应用增量的算法?无论是通过插件还是通过外部工具,都没关系。
对于特定文件类型,必须能够覆盖 VCS 的内部差异算法。自定义增量必须存储在存储库中,以供增量应用算法使用。
在我的情况下,内部二进制差异是不可接受的。
我的意思是完全覆盖算法,而不是使用自定义 diff 程序显示差异。
Which mature version control systems allow overriding algorithms of finding and applying delta? Either through plugin or through exteral tool, does not matter.
It must be possible to override internal diff algorithm of a VCS for specific file types. Custom deltas must be stored in the repository to be used by the delta applying algorithm.
Internal binary diff is not acceptable in my case.
I mean exactly overriding algorithms, not displaying the differences using a custom diff program.
发布评论
评论(3)
对于服务器端:
据我所知(我不是这方面的专家!)这并不容易做到。所以你最好从 Apache Subversion 获取源代码并根据你的需要修改/扩展它。研究一下“Pre-Commit Hooks”也是一个想法。
对于客户端:
ClearCase 有一些不错的额外合并工具,例如办公文档。
还可以更改 Tortoise SVN 客户端中的差异/合并工具。
For Server Side:
As far as I know (I´m no expert on this subject!) this is not easily done. So you´re best shot seems to get the source from Apache Subversion and modify/extend it according to your needs. Taking a look into "Pre-Commit Hooks" is also an idea.
For Client Side:
ClearCase has some nice extra Merge Tools for e.g. office documents.
Also it is possible to change the diff/merge tool in the Tortoise SVN Client.
对于 git ,我不知道有什么简单的方法可以覆盖计算用于包文件中高效存储的二进制增量的方法。 (包文件是通过大多数传输生成的,以便有效地将数据传输到服务器或从服务器传输数据。)
但是,您可能需要查看 bup 项目。对于使用git备份大量数据的情况,采用直接生成git pack文件的方式。这听起来与您想做的事情大致相似。
[我知道您在问题中明确排除了这一点,但如果其他读者发现这个问题,对二进制文件的用户可见差异感兴趣,我会指出 来自 Pro Git 的这个有用示例。]
In the case of git , I don't know of any easy way to override the method for calculating the binary deltas that are used for efficient storage in pack files. (Pack files are generated with most transports for efficient transport of data to and from the server.)
However, you might want to take a look at the bup project for git. This takes the approach of directly generating git pack files for the case of using git for backing-up huge amounts of data. That sounds broadly similar to what you want to do.
[I understand that you explicitly exclude this in your question, but in case another reader finds this question who is interested in nice user-visible diffs of binary files, I'll point out this useful example from Pro Git.]
您绝对可以为 Bazaar 编写提供自定义合并算法的插件:
http://doc.bazaar .canonical.com/development/en/user-guide/hooks.html#example-a-merge-plugin
http://doc.bazaar .canonical.com/development/en/user-reference/hooks-help.html#merge-file-content
快速浏览后,我没有看到类似的东西来进行差异,但我确信它添加类似的东西并不难。我知道有像 bzr-tools 这样的插件可以提供替代的 diff 输出(cdiff 用某种颜色打印 diff)。
You can definitely write plugins for Bazaar that provide custom merge algorithms:
http://doc.bazaar.canonical.com/development/en/user-guide/hooks.html#example-a-merge-plugin
http://doc.bazaar.canonical.com/development/en/user-reference/hooks-help.html#merge-file-content
After a quick look I didn't see something like that for doing diffs, but I'm sure it will not be that hard to add something like that. I know there are plugins like bzr-tools that can provide alternative diff output (cdiff which prints the diff with some colour).