Extender un sistema de control de versiones con algorithm delta personalizado

¿Qué sistemas de control de versiones maduras permiten replace los algorithms de búsqueda y aplicación de delta? Ya sea a través del complemento o a través de una herramienta externa, no importa.

Debe ser posible anular el algorithm interno de diferencia de un VCS para types de files específicos. Los deltas personalizados deben almacenarse en el repository para ser utilizados por el algorithm de aplicación delta.

La diferencia binaria interna no es aceptable en mi caso.

Me refiero a anular algorithms, no mostrar las diferencias usando un progtwig de diferencias personalizado.

Para server: hasta donde yo sé (¡no soy un experto en este tema!) Esto no se hace fácilmente. Así que lo mejor que se puede hacer es get la fuente de Apache Subversion y modificarla / ampliarla según sus necesidades. Echar un vistazo a "Pre-Commit Hooks" también es una idea.

Para el lado del cliente: ClearCase tiene algunas herramientas de fusión extra para, por ejemplo, documentos de oficina. También es posible cambiar la herramienta diff / merge en Tortoise SVN Client.

En el caso de git , no sé de ninguna manera fácil de anular el método para calcular los deltas binarys que se utilizan para el almacenamiento eficiente en los files del package. (Los files de package se generan con la mayoría de los transportes para un transporte eficiente de datos hacia y desde el server).

Sin embargo, es posible que desee echar un vistazo al proyecto bup para git. Esto toma el enfoque de generar directamente files de package de git para el caso de usar git para hacer copys de security de grandes cantidades de datos. Eso suena muy similar a lo que quieres hacer.

[Entiendo que excluye esto de manera explícita en su pregunta, pero en caso de que otro lector encuentre esta pregunta a quién le interesan las diferencias agradables de files binarys visibles por el usuario, señalaré este útil ejemplo de Pro Git .]

Definitivamente puede escribir complementos para Bazar que proporcionan algorithms de fusión personalizados: 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

Después de un rápido vistazo no vi algo así para hacer diffs, pero estoy seguro de que no será tan difícil agregar algo así. Sé que hay complementos como bzr-tools que pueden proporcionar salida de diff alternativa (cdiff que imprime el diff con un poco de color).