¿Manejar conflictos en SVN con Tortoise?

Cada vez que surge un problema como un conflicto de fusión o algo similar, realmente me ralentiza.

¿Puede alguien explicarme cómo forzar-resolver conflictos?

Por ejemplo, un amigo mío hizo una edición de un file en el repository y se comprometió. Mientras estaba haciendo eso, ya había cambiado el nombre de ese file y le hice muchas ediciones en mi copy de trabajo.

Cuando fui a comprometerme, obviamente recibí el error de conflicto. El file que editó ya no existe en mi copy de trabajo. ¿Cómo puedo decirle a SVN que simplemente deje de llorar por el conflicto y lo obligue a aceptar mi copy de trabajo (es decir, sobrescribir la revisión principal con mi copy de trabajo).

Cuando actualice su copy de trabajo, puede hacer clic con el button derecho en la list de logging y elegir cómo resolver el conflicto:

  • resolver usando un editor / TortoiseMerge (o cualquier herramienta de fusión configurada)
  • resolver usando "theirs", es decir, la versión en el repository
  • resolver usando "mío", es decir, su versión del file.

Esto también funciona al eliminar files correctamente , es decir, necesita eliminar el file usando svn si desea realmente eliminarlo del repository. Si eliminó el file por razones de conveniencia, puede svn revert antes de actualizar ya que un file que falta en la copy de trabajo también es un file modificado (como era de esperar).

Para resumir: no puedes decirle a svn que "deje de llorar" y simplemente sobrescribir con tu copy de trabajo. Ésto es una cosa buena. Debe resolver el conflicto (lo que podría significar simplemente sobreescribir el estado actual), marcar los files afectados como resueltos ( svn resolved ) y luego confirmar el resultado.

Así es como lo hice:

  1. Haga clic con el button derecho en la carpeta Soluciones, click TortoiseSVN -> Mostrar logging.
  2. Haga clic con el button derecho en la revisión que desea revertir, select "Revertir cambios desde esta revisión"
  3. Haga clic derecho en las carpetas en conflicto, select "Resuelto".
  4. Confirma tu solución
  5. Lucro

La mejor manera de evitar que esto ocurra es actualizar antes de comprometerse.

Yo diría: la mejor manera de evitar que esto suceda es actualizar antes de … MODIFICAR el file. Una vez que haya terminado con los cambios, los perderá si actualiza antes de comprometerse.

Aquí está: si estás en dos paneles, entonces solo puedes editar el file en el panel derecho (Mine). Para aplicar los cambios realizados en el file de la izquierda (el suyo), haga clic con el button derecho en las líneas modificadas y select Menú contextual → Usar bloque de text de 'ellos'. Luego, los cambios del file de la izquierda se agregan al file correcto.

A veces, realmente quieres ambos bloques de text, y el menu contextual también te ofrece Menú contextual → Usar ambos bloques de text (este primero) y Menú contextual → Usar ambos bloques de text (este último).

Si se encuentra en una vista de tres paneles (a veces llamada vista combinada), solo puede editar el file en la vista inferior (Fusionada). Como en la vista de dos paneles, puede hacer clic con el button derecho en las líneas en conflicto y seleccionar Menú contextual → Usar bloque de text de "ellos" o Menú contextual → Usar bloque de text de "mío". Además, si desea ambos bloques, puede seleccionar Menú contextual → Usar bloque de text de 'mío' antes de 'ellos' o Menú contextual → Usar bloque de text de 'ellos' antes 'mío'. De acuerdo con el command que ha seleccionado, los cambios se utilizan en el file fusionado resultante.

Enlace referencedo: https://tortoisesvn.net/docs/nightly/TortoiseMerge_en/tmerge-dug-conflicts.html