使用自定义增量算法扩展版本控制系统

时间:2011-03-17 10:55:41

标签: svn git version-control mercurial bazaar

哪些成熟的版本控制系统允许覆盖查找和应用delta的算法?无论是通过插件还是通过外部工具,都无所谓。

必须可以覆盖特定文件类型的VCS的内部差异算法。自定义增量必须存储在存储库中以供增量应用算法使用。

在我的情况下,内部二进制差异是不可接受的。

我的意思是完全覆盖算法,而不是使用自定义差异程序显示差异。

3 个答案:

答案 0 :(得分:0)

对于服务器端: 据我所知(我不是这方面的专家!)这不容易做到。所以你最好的镜头似乎从Apache Subversion获取源代码并根据你的需要修改/扩展它。看一看“Pre-Commit Hooks”也是一个想法。

对于客户端: ClearCase有一些很好的额外合并工具,例如办公文件。 此外,还可以更改Tortoise SVN Client中的差异/合并工具。

答案 1 :(得分:0)

对于 git ,我不知道有什么简单的方法来覆盖用于计算包文件中高效存储的二进制增量的方法。 (使用大多数传输生成包文件,以便有效地与服务器之间传输数据。)

但是,您可能需要查看git的bup项目。这采用直接生成git pack文件的方法,以便使用git备份大量数据。这听起来与你想做的大致相似。

[我知道您在问题中明确排除了这一点,但是如果另一位读者发现这个问题谁对用户可见的二进制文件差异感兴趣,我会指出this useful example from Pro Git。]

答案 2 :(得分:0)

你绝对可以为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)。