¿Hay alguna forma de diferenciar archivos de C++?


Estoy buscando una biblioteca de diferencias en C o C++. Sé que puedo usar la herramienta Unix diff en combinación con system o exec, pero realmente quiero una biblioteca. Sería útil si la biblioteca pudiera realizar parches también, como la herramienta Unix patch.

 26
Author: Matt Fichman, 2009-09-20

6 answers

Creo que he encontrado una buena solución, finalmente:

La Biblioteca de Plantillas DTL - Diff --- Tutorial

Es compatible con el parche. Tuve que escribir " diff.cpp " en Google para encontrarlo. Esperemos que funcione!

 21
Author: Matt Fichman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-14 09:53:36

Parece que las bibliotecas Google Diff, Match y Patch son lo que necesitas.

 11
Author: Paul Biggar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-20 18:43:15

Esto es una implementación de una "solución a SES / LCS con el refinamiento del espacio lineal Hirschberg como se describe en la siguiente publicación":

E. Myers, " Una O(ND) Diferencia Algoritmo y Sus Variaciones," Algorithmica 1, 2 (1986), 251-266. http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps

Lo encontró en la página de Wikipedia en diff.

Eso es solo para encontrar un diff, sin embargo, no aplicarlo como un parche. Creo que esa aplicación de un parche es en realidad un problema más difícil; debido al riesgo de conflictos. Necesitaría algún tipo de mecanismo de retroalimentación de control del usuario, para resolver conflictos.

 3
Author: unwind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-24 06:41:56

Subversion incluye una biblioteca libsvn_diff.

 2
Author: Martin v. Löwis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-28 03:37:45

Hay uno que es parte de Mercurial. Existe como un código C que está diseñado como una extensión de Python, pero probablemente podría extraerse con bastante facilidad. Creo que también puede hacer diffs binarios.

El pertinente .los archivos c son mercurial/bdiff.c, mercurial / mpatch.c y posiblemente diffhelpers mercuriales.c .

 2
Author: Omnifarious,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-29 04:39:38

También es prácticamente imposible de encontrar en Google, resulta que Gnulib tiene un módulo diff. Este parece suficiente para lo que quería una biblioteca de diferencias. Sin embargo, no parece tener un módulo de parche.

 1
Author: ptomato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-12 04:55:24