Como parte de un proyecto más grande, quiero tener la capacidad de tomar dos cuerpos de texto y entregarlos a un algoritmo de fusión que devuelva un resultado combinado automático (en los casos en que los cambios no sean conflictivos) o arroje un error y (potencialmente) produce un solo documento de texto con los cambios conflictivos resaltados.Cómo combinar archivos de texto con conflictos potenciales (ala git o svn, etc.)
Básicamente, solo quiero una forma programática de hacer lo que hace internamente cada sistema de control de fuente en el planeta, pero estoy teniendo dificultades para encontrarlo. Hay toneladas de GUIs visuales para hacer este tipo de cosas que dominan mis resultados de búsqueda, pero ninguno de ellos parece hacer fácilmente accesible el algoritmo de fusión de núcleo. ¿Todos confían en algún algoritmo/biblioteca común y bien entendido y simplemente no sé el nombre, así que estoy teniendo dificultades para buscarlo? ¿Esto es solo un pequeño reto en diff y debería buscar bibliotecas diff en lugar de fusionar bibliotecas?
Las bibliotecas de Python serían muy útiles, pero puedo vivir con la sobrecarga de la interfaz con alguna otra biblioteca (o solución de línea de comandos) si es necesario; esta operación debería ser relativamente infrecuente.
Las fusiones automáticas no son seguras, porque no comprenden el intento de los programadores (plural); no hay ninguna garantía de que un archivo "fusionado" funcione, mucho menos funciona según lo previsto por alguien. Los sistemas de control de origen evitan esto suponiendo implícitamente que el usuario de alguna manera volverá a probar (aunque si eso sucede es otra pregunta). ¿Cómo usarías los resultados de una combinación automática? –
En este caso, no estoy fusionando el código, estoy sincronizando archivos de texto que pueden haber sido modificados sin estar en contacto con el servidor. Cuando el cliente fuera de línea vuelve a conectarse, necesito comparar su versión local con la versión del servidor. Los verdaderos conflictos no fusionables serán raros debido al diseño de la aplicación, pero sucederán ocasionalmente y solo necesito saber cuándo se producen. No espero que la fusión automática sea perfecta, solo para notificarme cuando falla y permitirme degradar con elegancia sin perder el servidor ni el contenido del cliente en el proceso. – drewww
Preguntas como estas son las razones por las que amo StackOverflow. ¡La calidad de la comunidad aquí es increíble! – ehfeng