2012-02-05 15 views
5

Por lo tanto, deseo investigar la aplicabilidad de git al seguimiento de versiones de ciertas estructuras de datos de árbol binario o de texto. La cuestión es que quiero que la lógica de diferencias sea completamente personalizada, adaptada al patrón de estructura de datos.Versiones de datos con git: diff personalizado para archivos específicos

Supongamos que el archivo en cuestión es cierto objeto JSON, quiero un diff personalizado para archivos JSON por lo que si tengo la versión A, ya que:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': ready } } 

y me aplico el siguiente cambio:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': done } } 

por lo que mi diff sería inteligente para detectar que solo el elemento 1 ha cambiado. Con el valor predeterminado diff, si alguien más realizó un cambio en, por ejemplo, en la clave a, elemento [0], esto generaría un conflicto que se debe fusionar manualmente . El diff personalizado apuntaría a personalizar la lógica de diff para tipos de archivos y contenidos específicos.

Algo ligeramente diferente para los archivos binarios también puede aplicar.

El propósito de esta pregunta es para ver si hay:

  • maneras en git actual para apoyar esta personalización
  • proyectos o ramas de desarrollo git para apoyar esta personalización
  • alguna otra herramienta mejor destinado a esto

gracias!

Editar i encontró this article, que creo que da una muy amplio alcance de la clase de cosas que estoy preguntando acerca. También es probable que sea una señal de que realmente no hay una buena solución para este problema hasta el momento.

+0

lejos de una respuesta completa; pero aquí hay algunos problemas que afectan a los algoritmos de diff de objetos de árbol en general (no específicos de git) http://useless-factor.blogspot.com/2008/01/matching-diffing-and-merging-xml.html – lurscher

Respuesta

2

Puede create custom diff view for binary files (sección "Diffing Binary Files") como documentos de Word. Pero esto es útil solo para viendo las diferencias, no para fusionando.

No conozco nada que pueda ayudarte con eso.

+0

interesante, lo que escribió anteriormente se basó en la suposición de que la fusión se basó en la herramienta diff para hacer su trabajo – lurscher