two tortoise subversion hacer estructura create crear branches svn tortoisesvn

svn - tortoise - ¿Puedo desactivar la fusión automática en Subversion?



svn merge branch to trunk (5)

La mejor forma de evitar esto es educar a los desarrolladores. Después de hacer una actualización en TortoiseSVN, le muestra una lista de los archivos afectados. Simplemente haciendo doble clic en cada archivo, obtendrá la diferencia entre ellos. Luego podrá ver qué cambió entre su versión y la última versión del repositorio.

Estamos considerando cambiar de un sistema de control de versiones de salida / edición / check-in a Subversion, y durante la evaluación descubrimos que al realizar una acción de Actualización en TortoiseSVN (y presumiblemente en cualquier cliente de Subversion?), si los cambios en el repositorio que se deben aplicar a los archivos que ha estado editando no causan ningún conflicto, se fusionarán automática / silenciosamente.

Esto nos asusta un poco, ya que es posible que esta fusión, sin producir ningún error de compilación, al menos pueda introducir algunos errores lógicos que pueden no detectarse fácilmente.

Ejemplo muy simple: estoy trabajando dentro de un método C # cambiando alguna lógica en la última parte del método, y otra persona cambia el valor al que se inicializa una variable al comienzo del método. El cambio de la otra persona no está en las líneas de código en las que estoy trabajando, por lo que no habrá conflicto; pero es posible cambiar drásticamente la salida del método.

Lo que esperábamos que fuera la situación es que si se necesita una fusión, entonces se mostrarían los dos archivos y se presentaría al menos una opción simple de aceptar / rechazar cambio, para que al menos seamos conscientes de que algo ha cambiado y tienen la opción de ver si impacta nuestro código.

¿Hay alguna manera de hacer esto con Subversion / TortoiseSVN? ¿O estamos demasiado atrapados en nuestras formas actuales de trabajo y deberíamos dejar que lo hagamos?


Sugiero que aprendas a trabajar con el modelo de Subversion natural si es posible. En la práctica, encontramos que los conflictos son raros, y el tipo de conflicto lógico del que usted habla casi no existe (no puedo recordar una instancia en los últimos 4 años en nuestro repositorio).

Los miembros del equipo deben registrar los cambios en una escala lo más pequeña posible (mientras se mantiene la corrección) en lugar de poner en un lote todo el trabajo de un día para simplemente registrarlo una vez. Esto reducirá la posibilidad de pisar el trabajo de otra persona.

Si le preocupa un cambio particular que esté realizando, Subversion proporciona un mecanismo de bloqueo que le permite evitar otros cambios en el archivo. Vea los capítulos del Libro Rojo sobre el bloqueo .


Aquí hay un truco para TortoiseSVN:

Cómo desactivar "fusión automática" en Subversion

El truco para svn.exe es establecer la herramienta svn external diff en un programa que fallará constantemente.

svn --diff-cmd=/bin/false

Si el programa externo de diferencias falla, svn concluye que el conflicto no se puede resolver y no lo fusionaría.


Esta es la razón por la cual las pruebas automatizadas (de unidades) son una parte fundamental del desarrollo de software distribuido. En el ejemplo que das, al menos una prueba de unidad debe fallar en la actualización de svn y alertarte del error.

Recuerde lo que es Subversion: un sistema de control de versiones, no una herramienta de combinación de código que funcione perfectamente.


Está en las Preguntas frecuentes: ¿Cómo puedo evitar que Subversion realice fusiones automáticas?

  1. En TortoiseSVN-> Configuración-> General-> archivo de configuración de Subversion, haga clic en el botón Editar.
  2. Cambie la sección [helpers] agregando

    diff-cmd = "C://false.bat"

    (tenga en cuenta la doble barra invertida)

  3. Crea el archivo C: / false.bat que contiene dos líneas

    @type %9 @exit 1