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

3 minutos de lectura

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

  • Me parece que una biblioteca de diferencias sería bastante común, pero Google aún no ha encontrado una buena respuesta.

    – Matt Fichmann

    21 de septiembre de 2009 a las 19:28

  • Se proporcionó un excelente enfoque para C/C++ en una publicación similar.

    – Nube

    22 de febrero de 2017 a las 22:53

¿Hay alguna forma de diferenciar archivos de C
mate fichman

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

los DTL – Biblioteca de plantillas de diferenciasTutorial

Soporta parche. Tuve que escribir “diff.cpp” en Google para encontrarlo. ¡Ojalá funcione!

parece que el Bibliotecas Google Diff, Match y Patch son lo que necesitas.

  • Eh, pero la versión C++ de esa biblioteca depende de Qt. Necesito una biblioteca de diferencias/parches para una aplicación que no sea GUI.

    – Matt Fichmann

    20 de septiembre de 2009 a las 23:46

  • Qt tiene partes que no son GUI y se puede usar en una aplicación de consola.

    – Cuenta

    24 de septiembre de 2009 a las 17:03

  • Qt es una gran dependencia de biblioteca que no quiero tener. ¿Por qué el autor no usó STL?

    – Matt Fichmann

    29 de septiembre de 2009 a las 20:48

  • Un puerto STL está disponible en GitHub.

    –Josh Kelley

    20/10/2014 a las 20:19

  • Eso es definitivamente mejor que DTL (que aparentemente no ofrece un algoritmo de diferencias por línea)

    – jpo38

    24 de noviembre de 2016 a las 20:29

Esta es una implementación de una “solución para SES/LCS con el refinamiento del espacio lineal de Hirschberg como se describe en la siguiente publicación”:

E. Myers, “Un algoritmo de diferencia O(ND) y sus variaciones”, Algorithmica 1, 2 (1986), 251-266.
http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps

Lo encontré en el página de Wikipedia en diff.

Sin embargo, eso es solo para encontrar una diferencia, no para aplicarlo como un parche. Creo que la aplicación de un parche es en realidad un problema más difícil; por el riesgo de conflictos. Necesitaría algún tipo de mecanismo de retroalimentación de control del usuario para resolver conflictos.

  • Esta es la mejor respuesta que he recibido hasta ahora, pero también me gustaría una biblioteca de parches. Esperaré un poco a ver si alguien más tiene una respuesta.

    – Matt Fichmann

    24 de septiembre de 2009 a las 16:48

  • El archivo diff.c vinculado al principio parece haber desaparecido. (Sin embargo, todavía está en el índice de Google…)

    – Tanuva

    24 de julio de 2017 a las 9:02

  • @unwind Oh, lo siento. Es solo el transporte https el que produce un error 404. Al deshabilitar HTTPS Everywhere, se carga el archivo.

    – Tanuva

    24 de julio de 2017 a las 14:26


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 diferencias binarias.

Los archivos .c relevantes son mercurial/bdiff.c, mercurial/mpatch.c y posiblemente mercurial/diffhelpers.c.

Subversion incluye una biblioteca libsvn_diff.

¿Hay alguna forma de diferenciar archivos de C
tomate

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad