oxygen for descargar configurar eclipse svn merge subversive

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



svn for eclipse neon (9)

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

Cuando hago una fusión, parece querer pegar los archivos fusionados en un directorio separado en mi proyecto en lugar de sobreescribir los archivos antiguos que se reemplazará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 programa que he visto para acceder a Subversion. Explore al directorio del que desea fusionar, haga clic derecho sobre él y use la opción de fusión Tortoise SVN. Suponiendo que se produzca una fusión no interactiva, una vez que tenga conflictos, deberá examinar cada archivo en conflicto y editar los conflictos antes de marcarlos como resueltos. Para este proceso recomiendo un programa llamado KDiff3, que muestra su copia de repositorio local (lo que estaba almacenado en .svn antes de la fusión), su copia local (incluidos los cambios) y la copia que proviene del repositorio, 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 :)


Normalmente examino ambas ramas y luego utilizo la opción de comparar entre sí que hace una comparación similar a la sincronización de los dos árboles fuente. Después de integrar los cambios en una sola rama, puede volver a comprometerse con el repositorio.


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

El principal cambio de CVS es que solo combina deltas de una rama, es decir, cambia de una revisión a otra. Es decir, tienes que rastrear la revisión de inicio correcta de alguna manera (a menos 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.


Recuerde que con svn revertir un árbol 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 comando de fusión para importar las modificaciones de la rama de origen de fusión, luego sincronice su espacio de trabajo y obtendrá su ventana de comparación de eclipse habitual que muestra todos los archivos 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 cuenta 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 compila, ejecutar las pruebas 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 comando de fusión de subclipse sobrescribe el archivo 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 directorios 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.


Fusionando una rama 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 predeterminada, el "Historial" del equipo de Eclipse solo muestra las últimas 25 revisiones, por lo que deberá hacer clic en el botón de esa vista con la etiqueta "Mostrar todo".
    • cuando dices "Mostrar todo", te llevará más allá de la fecha de la sucursal y te mostrará todo el historial para el tronco, así que tendrás que buscar tu comentario donde te ramificaron
    • NOTA : si usa Tortise SVN para esta misma tarea (vaya a la rama y seleccione "Mostrar registro"), 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 rama más allá de 82517 tienen cambios que deseo fusionar en el tronco

  3. Ahora vaya al proyecto "troncal" en su área de trabajo de Eclipse y seleccione "clic derecho - Equipo - Fusionar"

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

    • seleccione la URL de la rama desde la cual se está fusionando
    • en Revisiones, seleccione "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 rama 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 rama necesita fusionarse en el tronco

  3. Ahora vaya al proyecto "troncal" en su área de trabajo de Eclipse y seleccione "clic derecho - Equipo - Fusionar"

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

    • seleccione la URL de la rama desde la cual se está fusionando
    • en Revisiones, seleccione el botón de opción "Revisiones" y haga clic en "Buscar"
    • esto abrirá una lista de las últimas 25 revisiones de sucursales
    • seleccione todas las revisiones con un número mayor que 82517
    • presiona OK (deberías ver la lista de revisión en el campo de entrada al lado del botón 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 sincronización periódica para fines de confirmación en la que vea archivos nuevos y archivos que tengan conflictos.

  2. Para cada archivo donde veas un conflicto, elige "clic derecho - Editar Conflictos" (no hagas doble clic en el archivo, 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 archivo, dígale al archivo "marcar como fusionado"

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


La herramienta de fusión de openCollabNet para subclipse es bastante clara. Hay muchos tipos 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 sincronización 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 de Java y realizar el check-in.


En primer lugar, si ve ">>>>>" y tal en sus archivos cuando los ve en Eclipse, esto probablemente significa que no está mirando el archivo con el editor de comparación adecuado. Intente hacer clic derecho en el archivo en la vista del proyecto o la vista Sincronizar y seleccione "Editar conflictos" para mostrar un editor de comparación que le mostrará las regiones conflictivas gráficamente en lugar de como texto. Tenga en cuenta que el editor de comparación que aparece para "Editar Conflictos" es diferente al que obtiene cuando hace doble clic en un archivo en la vista Sincronizar - el editor de comparación doublieclick muestra las diferencias entre su archivo actual y la forma en que existió La última vez que la revisó o actualizó, mientras que el cuadro de diálogo Editar comparación de conflictos muestra las diferencias entre dos fuentes 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 archivos 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 obtener la solución. Más detalles aquí:

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


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 -> Preferencias → Equipo -> SVN -> Visor Diff Agregue una nueva configuración (botón Agregar): Extensión o tipo MIME: * - si lo desea, puede especificar diferentes tipos MIME para diferentes editores, no necesitaba que así sea el alquantor.

Diff : Ruta del programa C: / Archivos de programa / 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 programa C: / Archivos de programa / KDiff3 / kdiff3.exe

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

Esto probablemente funcionará también para otros editores de fusión, pero con una sintaxis 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