2010-01-19 12 views
13

Estoy tratando de fusionar mi rama de desarrollo de nuevo en el tronco de mi repositorio. Pasos que di:Eclipse Merge Branch into Trunk

  1. Cambiar a línea externa
  2. cheque que es hasta la fecha, resolver cualquier conflicto
  3. Ir a Team-> Combinar
  4. Seleccione URL: desarrollo de la rama
  5. de inicio de revisión: revisión cuando la rama se creó
  6. Fin de revisión: CABEZA
  7. OK

Esto debería hacer la magia - se abre la vista syncronize lo cual está bien, me muestra todos los conflictos, pero no ocurre el problema:

En el editor de comparación veo dos archivos: archivo local | Remote File (306)

Esto es realmente extraño, el número de revisión del archivo remoto es en realidad el del archivo en la copia de trabajo (trunk) y también lo es el contenido. El archivo local tiene el contenido del archivo en la rama.

Ahora la flecha muestra correctamente que estoy fusionando de izquierda a derecha (rama a tronco). Esto también ocurre cuando hago clic en Aceptar.

¡PERO solo puedo mover cambios de derecha a izquierda! Eso no es lo que quiero, no quiero sobrescribir los cambios en las ramas con el viejo contenido del maletero. Quiero mover el contenido de la izquierda (rama) a la derecha (tronco). Pero ni siquiera puedo escribir en el archivo correcto.

No sé por qué escribe el archivo remoto allí? Está mostrando claramente el archivo de copia de trabajo en la ventana del archivo remoto, y el archivo de la rama (para la fusión) se muestra en el archivo local.

Algunos errores en Subversivo?

Thx, Martin

Respuesta

6

Merges no son resultado fácil con subversivo (como se menciona en este viejo SO question), por lo que puede estar haciendo la combinación externa (o con Subclipse) sería más fácil aquí.

Si su cliente y su repositorio están ambos al menos en SVN1.5, las nuevas capacidades de fusión Subversiva son mejores, pero aún son peligrosas, como se ilustra en this thread.

Dado que Subversive ha sido modificado para SVN 1.5, el comportamiento de la fusión ha cambiado. Una cosa que realmente me gustó es la capacidad de elegir qué cambios quería, aplicar eso a mi copia de trabajo y luego comprometerme con el tronco.
Subversivo ahora ya no hace eso pero fuerza todos los cambios en su copia de trabajo y luego elige qué poner en el baúl.

Esto no solo es un comportamiento indeseable sino que también es peligroso (si se ignora la posibilidad de revertir). Prefiero comprometer cosas que sé que funcionan. Tenemos una rama de publicación que obtiene cambios que pueden o no ser migrados al enlace troncal.

+1

que es una especie de true..it miedo de que la fusión ocurre antes (sin interacción del usuario) en su copia de trabajo. Y luego tiene que comparar con el tronco y revertir los cambios no deseados. Lo prefiero al revés, (probando Versiones ahora), donde antes de la fusión en la copia de Trabajo sucede, el usuario puede elegir qué cosas fusionar. – martin

2

Bueno, esto parecía misterioso al principio, ahora voy a dar una puñalada decente para actualizar esta respuesta para todos. Esto se refiere a fusionar usando el cliente subversivo SVN para Eclipse:

Está realizando su fusión correctamente, comenzando en el tronco y luego apuntando a su archivo en su sucursal local. Sus archivos se abren en la ventana "Comparar texto" en la pestaña Sincronización de equipos. Si no ve conflictos en la columna de navegación de la izquierda, entonces su fusión acaba de suceder. Sí, esto es confuso y no intuitivo.

Lo que la ventana de Comparación de texto le ofrece es la capacidad de deshacer su cambio (o cualquier otro que pueda haber ingresado accidentalmente en su archivo fusionado) antes de comprometerlo. Recuerde que está extrayendo el archivo de Branch, por lo que la idea es que el archivo Branch esté en Trunk pero en una especie de limbo virtual hasta que se haya confirmado, y cambiar o deshacer cambios no deseados aquí hace referencia al archivo en Branch (obviamente). Es por eso que solo tiene un tubo de una vía (Troncal a rama) para sobrescribir aquellos cambiados fusionados en Troncal a través de su copia de trabajo. Tu fusión ha tenido lugar, pero aún no es completamente oficial.

Si todo parece como debería, haga clic con el botón derecho en el archivo en la ventana del navegador (panel izquierdo en mi instalación de Eclipse Helios) y elija Aceptar en el menú desplegable. A continuación, vuelva a hacer clic en la pestaña principal de visualización de código (en mi instalación es PHP pero podría ser lo que esté usando) y luego envíe el archivo a Trunk.

Si desea probar esto, haga una vista del archivo "tal cual" en Trunk antes de confirmar y debería ver los cambios reflejados allí si ha realizado la fusión correctamente. Esta parece ser la forma en que funciona para mí en un OSX Snow Leopard Macbook Pro. No estoy seguro si es lo mismo para gente de Windows o Linux. Supongo que es esencialmente el mismo proceso/similar.

0

es fácil

la salida del tronco con la salida como ... dar un nombre de proyecto diferente.

Ahora tiene tanto localmente como copia de trabajo, troncal con la que desea comprometerse y la rama en la que está trabajando y cuyos cambios ha establecido en el repositorio. Ahora, haga clic con el botón derecho en el proyecto troncal (y me refiero al proyecto, no archivos individuales) - fusionar - seleccione el proyecto de rama (de nuevo, PROYECTO) acepte todos los cambios a la copia local confirme lo que necesita al tronco como se usa todo bien, eliminar el tronco de nuevo y seguir trabajando en la rama

especialmente con ramas esto parece muy fácil y trabajado como un encanto para mí