Estoy buscando una biblioteca de C o C++ diff. 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
.¿Hay alguna forma de diferenciar archivos de C++?
Respuesta
creo que he encontrado una buena solución, por último:
El DTL - Diff Template Library --- Tutorial
Es compatible con parche. Tuve que escribir "diff.cpp" en Google para encontrarlo. ¡Espero que funcione!
¡Esto funcionó muy bien para mí! – KeatsKelleher
Parece que el Google Diff, Match and Patch libraries es lo que necesita.
Eh, pero la versión C++ de esa biblioteca depende de Qt. Necesito una biblioteca de diff/patch para una aplicación que no sea GUI. –
Qt tiene partes que no son de GUI, y puede usarse en una aplicación de consola. – Bill
Qt es una gran dependencia de la biblioteca que no quiero tener. ¿Por qué el autor no usó STL? –
This es una implementación de una "solución a SES/LCS con el refinamiento espacio lineal Hirschberg como se describe en la siguiente publicación":
E. Myers, `` Un O (ND) Diferencia Algoritmo y sus variaciones, '' Algorithmica 1, 2 (1986), 251-266. http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps
encontró en la Wikipedia page on diff.
Eso es solo para encontrar un diff, sin aplicarlo como un parche. Creo que la aplicación de un parche es en realidad un problema más difícil; debido al riesgo de conflictos Necesitaría alguna forma de mecanismo de retroalimentación que controle al usuario, para resolver conflictos.
Esto es lo mejor que respondo hasta ahora, pero realmente me gustaría una biblioteca de parches también. Esperaré un poco para ver si alguien más tiene una respuesta. –
El archivo 'diff.c' vinculado al principio parece haber desaparecido. (Todavía está en el índice de Google ...) – Tanuva
@Tanuva Huh? Esto funciona para mi. – unwind
Subversion incluye una biblioteca libsvn_diff
.
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.
También bastante indescifrable en Google, resulta que Gnulib tiene un diff module. Este parece suficiente para lo que yo quería una biblioteca diff. Sin embargo, no parece tener un módulo de parche.
- 1. ¿Hay alguna forma de sincronizar archivos gif?
- 2. ¿Hay alguna forma de currying en C?
- 3. ¿Hay alguna manera de diferenciar archivos oración por frase en lugar de línea por línea?
- 4. ¿Hay alguna forma de diferenciar entre las teclas Mayúsculas izquierda y derecha presionadas?
- 5. vsto + diferenciar archivos adjuntos
- 6. ¿Hay alguna forma de usar operadores implícitos C# de F #?
- 7. ¿Hay alguna forma de FALSIFICAR herencia en C#/VB.NET?
- 8. ¿Hay alguna forma de incorporar Fitnesse al código C++?
- 9. C#: ¿Hay alguna forma de usar expresiones como variable/parámetro?
- 10. ¿Hay alguna forma de optimizar doxygen para C++?
- 11. Simplemente curioso, ¿hay alguna forma de evitar MustOverride en C#?
- 12. C# - ¿Hay alguna forma de lanzar una colección genérica?
- 13. ¿Hay alguna forma de crear estructuras anónimas en C#?
- 14. ¿Hay alguna forma de que este código C# sobrescriba automáticamente los archivos?
- 15. iOS: ¿Hay alguna manera de eliminar archivos específicos de forma segura del sistema de archivos?
- 16. ¿Hay alguna forma de 'resaltar' el código?
- 17. ¿Hay alguna forma de vincular Keyboard.FocusedElement?
- 18. ¿Hay alguna forma mejor de escribir esto?
- 19. ¿Hay alguna forma de sobrecargar + = en python?
- 20. ¿Hay alguna forma de multirreproducir un SqlDataReader?
- 21. ¿Hay alguna forma de cancelar TabControl.Items.CurrentChanging?
- 22. ¿Hay alguna forma de pasar el iPhone?
- 23. ¿Hay alguna forma común de escribir y leer archivos de configuración?
- 24. ¿Alguna forma de diferenciar un edificio de una carretera en Google Maps?
- 25. ¿Cómo diferenciar solo los archivos fuente?
- 26. ¿Hay alguna forma de simplificar esta declaración de caso?
- 27. ¿Hay alguna forma de generar programáticamente bytecode de Python?
- 28. Rendimiento de superposición de archivos TortoiseSVN: ¿hay alguna forma de mejorarlo?
- 29. ¿Hay alguna forma de mostrar vistas parciales en WebForms?
- 30. ¿Hay alguna forma de iniciar el proceso en estado suspendido?
Me parece que una biblioteca de diferencias sería bastante común, pero Google aún tiene que dar una buena respuesta. –
[Se proporcionó un enfoque excelente para C/C++ en una publicación similar.] (Https://stackoverflow.com/questions/42377443/diff-compare-two-files-by-file-descriptor-fd-instead-of- nombre-archivo/42380790 # 42380790) – DevNull