Tanto CVS como Subversion tienen una práctica función de combinación para que cuando actualice un archivo fuente que haya modificado, se una a los cambios que otros hayan realizado en el mismo archivo.¿Se pueden configurar CVS y Subversion para que ignoren los espacios en blanco en la fusión?
Sin embargo, si sus cambios y los demás son incompatibles, generalmente si ambos han cambiado las mismas partes del código, creará un conflicto. Ambos tramos de código fuente se incluirán en el archivo fusionado y deberá determinar manualmente qué cambios conservar. Todo bien hasta ahora.
Mi problema es que algunos de nosotros utilizamos entornos de desarrollo diferentes (Netbeans versus vi si debe saber) y Netbeans tiene una función de sangría automática que vuelve a introducir el código. Por lo tanto, cuando fusionamos los cambios, a veces obtenemos grandes conflictos que son causados principalmente por cambios simples en la sangría y no son cambios genuinos en el código. A menudo, estos crean cientos de líneas de conflictos aparentes que deben resolverse manualmente, pero generalmente se reducen a unas pocas líneas de cambios reales. Una situación similar ocurre cuando el editor de alguien cambia Unix a Windows newlines o viceversa.
Entonces, ¿puedo establecer la combinación para ignorar estos "conflictos" al comparar las dos versiones? Diff tiene la opción --ignore-space-change o -b y me gustaría tener esencialmente la misma característica disponible en cvs o svn. Usamos cada herramienta en diferentes proyectos, por lo que me gustaría obtener la respuesta para cualquiera de ellos o para ambos.
Dos notas finales:
- claramente el proceso de fusión tendrían que hacer una elección arbitraria en cuanto a qué versión del espacio en blanco para usar en el archivo fusionado. Estoy de acuerdo con eso, siempre podemos volver a formatearlo más tarde.
- Pude evitar algo de esto siendo más disciplinado y registrándome más seguido, reconocido y entendido. Pero no soy perfecto.
Suena bien, gracias. Entonces, la siguiente pregunta es: ¿alguien sabe una fusión que puede ignorar espacios en blanco? En otra pregunta encontré algunas herramientas de fusión visual que se ven bien (meld, tortoisesvn) pero ¿alguien sabe de una línea de comandos? –
puede ver en winmerge (http://www.winmerge.org/) Es de código abierto y puede usarlo fácilmente en tortugaSVN como diff/merge viewer –
He estado investigando esto en Linux, y parece que hay no es una manera fácil de hacer esto. Por ejemplo, puedes decirle que use "diff3" pero no tiene ningún parámetro para ignorar el espacio en blanco. Pero puede pasarle un parámetro para usar un programa diferente "diff". Entonces, lo tienes llamar "diff -b". Pero luego no puedes hacer eso recursivamente (aparentemente) desde el comando SVN (es decir, svn (usando diff3 (usando (diff -b)))). La solución que voy a investigar a continuación es crear un script de shell que llame a "diff3" usando "diff" para ignorar el espacio en blanco. Entonces haré que SVN use el script de shell. – UncaAlby