¿Cuál es la forma correcta de hacer una fusión de Subversion en Eclipse?

Estoy bastante acostumbrado a cómo hacer fusiones CVS en Eclipse, y estoy contento con la forma en que tanto Subclipse como Subversive trabajan con el repository SVN, pero no estoy muy seguro de cómo hacer las fusiones correctamente.

Cuando hago una fusión, parece querer pegar los files fusionados en un directory separado en mi proyecto en lugar de sobreescribir los files antiguos que se replaceán en la fusión, como estoy acostumbrado en CVS.

La pregunta no es particular de Subclipse o Subversivo.

¡Gracias por la ayuda!

Aconsejaría no tratar de usar los complementos de Eclipse como su acceso principal a Subversion.

Si está desarrollando en Windows, TortoiseSVN es el mejor progtwig que he visto para acceder a Subversion. Explore al directory del que desea fusionar, haga clic derecho sobre él y use la opción de fusión Tortoise SVN. Suponiendo una fusión no interactiva, una vez que tenga conflictos, tendrá que examinar cada file en conflicto y editar los conflictos antes de marcarlos como resueltos. Para este process recomiendo un progtwig llamado KDiff3, que muestra su copy de repository local (lo que estaba almacenado en .svn antes de la fusión), su copy local (incluidos los cambios) y la copy que proviene del repository, y le permite vea fácilmente (e incluso modifique manualmente si es necesario) el resultado de la fusión. También maneja un grupo de conflictos menores automáticamente.

KDiff3 es portátil, TortoiseSVN es una extensión de shell de Windows, por lo que si está usando otro entorno, trataría de usar SVN para fusionar. Pero eso sería mucho más doloroso 🙂

Fusionando una twig entera en el tronco

  1. Inspeccione el historial del proyecto de la sucursal para determinar la versión de la cual se tomó la sucursal

    • de forma pnetworkingeterminada, el "Historial" del equipo de Eclipse solo muestra las últimas 25 revisiones, por lo que deberá hacer clic en el button de esa vista con la label "Mostrar todo".
    • cuando dices "Mostrar todo" te llevará más allá de la date de la sucursal y te mostrará todo el historial para el tronco, así que tendrás que search tu comentario donde te ramificaron
    • NOTA : si usa Tortise SVN para esta misma tarea (vaya a la twig y select "Mostrar logging"), le mostrará solo el historial de la sucursal para que pueda decir exactamente dónde comenzó la sucursal.
  2. Así que ahora sé que 82517 fue la primera ID de la historia de la sucursal. Entonces, todas las versiones de la twig más allá de 82517 tienen cambios que deseo fusionar en el tronco

  3. Ahora ve al proyecto "troncal" en tu área de trabajo de Eclipse y selecciona "clic derecho – Equipo – Fusionar"

  4. La vista pnetworkingeterminada es la fusión de 1 url

    • select la URL de la twig desde la cual se está fusionando
    • en Revisiones, select "Todos"
    • presiona OK
  5. Esto lo llevará a la perspectiva de "Sincronización de equipo" (si no es así, debe ir allí) para resolver conflictos (ver a continuación)

Re-fusionar más cambios de twig en el tronco

  1. Inserta el historial del proyecto del tronco para determinar la última vez que te uniste al tronco (deberías haberlo comentado)

    • por el bien de la argumentación, digamos que esta versión era 82517
  2. Así que ahora sé que cualquier versión mayor que 82517 en la twig necesita fusionarse en el tronco

  3. Ahora ve al proyecto "troncal" en tu área de trabajo de Eclipse y selecciona "clic derecho – Equipo – Fusionar"

  4. La vista pnetworkingeterminada es la fusión de 1 url

    • select la URL de la twig desde la cual se está fusionando
    • en Revisiones, select el button de opción "Revisiones" y click "Buscar"
    • esto abrirá una list de las últimas 25 revisiones de sucursales
    • select todas las revisiones con un número mayor que 82517
    • presiona OK (deberías ver la list de revisión en el campo de input al lado del button de radio)
    • presiona OK
  5. Esto lo llevará a la perspectiva de "Sincronización de equipo" (si no es así, debe ir allí) para resolver conflictos (ver a continuación)

Resolviendo conflictos

  1. Debería estar en la perspectiva de "Sincronización de equipo". Esto se parecerá a cualquier synchronization periódica para fines de confirmación en la que vea files nuevos y files que tengan conflictos.

  2. Para cada file donde veas un conflicto elige "clic derecho – Editar Conflictos" (no hagas doble clic en el file, aparecerá la herramienta de confirmación de la versión de confirmación, esto es MUY diferente)

    • si ve cosas como "<<<<<<<. trabajo" o ">>>>>>> .merge-right.r84513", entonces se encuentra en el modo de edición incorrecto
  3. una vez que haya resuelto todos los conflictos en ese file, dígale al file "marcar como fusionado"

  4. una vez que todos los files estén libres de conflictos, puede sincronizar su proyecto Eclipse y enviar los files a SVN

Normalmente examino ambas twigs y luego utilizo la opción de comparar entre sí que hace una comparación similar a la synchronization de los dos treees fuente. Después de integrar los cambios en una sola twig, puede volver a comprometerse con el repository.

Use la integración de Eclipse, funciona perfectamente bien.

El principal cambio de CVS es que solo combina deltas de una twig, es decir, cambia de una revisión a otra. Es decir, tienes que rastrear la revisión de inicio correcta de alguna manera (a less que tengas un historial de combinación de svn 1.5)

Si tiene ese derecho, solo le corresponde a usted realizar los cambios correctamente con el editor de comparación.

En primer lugar, si ve ">>>>>" y tal en sus files cuando los ve en Eclipse, esto probablemente significa que no está mirando el file con el editor de comparación adecuado. Intente hacer clic derecho en el file en la vista del proyecto o la vista Sincronizar y select "Editar conflictos" para mostrar un editor de comparación que le mostrará las regiones conflictivas gráficamente en lugar de como text. Tenga en count que el editor de comparación que aparece para "Editar Conflictos" es diferente al que obtiene cuando hace doble clic en un file en la vista Sincronizar – el editor de comparación doublieclick muestra las diferencias entre su file actual y la forma en que existió la última vez que la revisó o actualizó, mientras que el cuadro de dialog Editar comparación de conflictos muestra las diferencias entre dos fonts de cambios (por ejemplo, los cambios que fusionó frente a los cambios que existían en su área de trabajo antes de fusionarse).

En segundo lugar, es posible que desee conocer un error en algunas versiones del complemento subversivo Eclipse que hace que todos los files que aceptaron cambios de combinación se marquen incorrectamente como que tienen conflictos. Este error ha sido reparado, pero parece que muchas personas no se han actualizado para get la solución. Más detalles aquí:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=312585

Recuerde que con svn revertir un tree modificado a un estado limpio es bastante fácil. Simplemente tenga un espacio de trabajo limpio en la bifurcación de destino de fusión y ejecute el command de fusión para importar las modificaciones de la twig de origen de fusión, luego sincronice su espacio de trabajo y obtendrá su window de comparación de eclipse habitual que muestra todos los files modificados de fusión y los conflictos.

Si por alguna razón no puedes resolver los conflictos, puedes revertir el proyecto y volver a un estado limpio; de lo contrario, harás la fusión en su lugar y, una vez que hayas terminado, puedes confirmar. Tenga en count que no tiene que comprometerse, una vez que termine de manejar los conflictos, también puede volver a la vista de desarrollo, verificar que el código se comstack, ejecutar las testings unitarias, lo que sea y luego sincronizar nuevamente y confirmar (una vez que el conflicto sea local resolvió que no volverán)

La última vez que miré, cuando usas el command de fusión de subclipse sobrescribe el file fusionado (usando marcadores de conflicto para mostrar áreas conflictivas) y colocas el lado izquierdo y derecho original de la fusión en el mismo lugar. no debería poner nada en directorys diferentes.

Como regla general, es mejor confirmar todas las modificaciones de combinación en una única confirmación y solo tener las modificaciones de fusión en la confirmación para que pueda deshacer la fusión más adelante si es necesario.

La herramienta de fusión de openCollabNet para subclipse es bastante clara. Hay muchos types de fusión disponibles y la fusión que acabo de realizar con ella sin interrupciones. Lo recomiendo.

Lo único que le falta a la vista de sincronicidad en eclipse es la capacidad de check-in. En la vista de synchronization del equipo, puedo ver todos mis cambios y resolver conflictos, por lo que sería bastante intuitivo realizar el check-in allí mismo en lugar de volver a la vista java y hacer el check-in.

Aterricé aquí porque estaba buscando una forma de fusionarme en un editor de fusión externo (KDIFF3) pero comencé la fusión de eclipse. No estaba satisfecho con las respuestas proporcionadas anteriormente. Así que he aquí para configurar kdiff3 como editor de fusión y diff para SVN en eclipse:

vaya a Windows -> Preferences → Equipo -> SVN -> Visor Diff Agregue una nueva configuration (button Agregar): Extensión o tipo MIME: * – si lo desea, puede especificar diferentes types MIME para diferentes editores, no necesitaba que así sea el alquantor.

Diff : Ruta del progtwig C: \ Archivos de progtwig \ KDiff3 \ kdiff3.exe (o donde tenga su editor de combinación – sry para la ruta de Windows, puede agregar una versión de Linux en los comentarios o editar esta respuesta).

Argumentos: $ {base} $ {mine} $ {theirs}

Merge : Ruta del progtwig C: \ Archivos de progtwig \ KDiff3 \ kdiff3.exe

Argumentos: $ {base} $ {mine} $ {theirs} -o $ {merged}

Esto probablemente funcionará también para otros editores de fusión, pero con una syntax de argumento diferente (descárguelo y háganos saber :)).

El uso es el habitual (conflictos equipo-> editar) para fusionar y comparar-> foo para la vista de diferencias.

Aclamaciones