2009-01-08 11 views
117

Usando TortoiseSVN, necesito tomar los cambios que he hecho en una rama y luego combinarlos con Trunk.Use TortoiseSVN para combinar los cambios de rama con el tronco

Soy el único desarrollador en este proyecto, por lo que sé que trunk no ha cambiado. Estoy aprendiendo SVN para que eventualmente mi equipo pueda usarlo.

Básicamente, quiero que mi baúl se vea exactamente como la rama.

En el mundo anterior a svn, simplemente copiaba los archivos en mi carpeta de ramas, borraba los archivos en la carpeta de troncales y luego copiaba la rama en el tronco.

En TortoiseSVN, he intentado "Reintegrar una rama", "Fusionar una variedad de revisiones" y "Combinar dos árboles diferentes". Nada parece realmente cambiar el tronco. También intenté ramificarme en la parte superior del maletero. Esto me da un error, diciendo que el tronco ya existe.

En este punto, simplemente estoy ignorando el uso de los botones con la esperanza de que algo funcione.

Respuesta

155

En su caso:.

  1. interruptor de la copia de trabajo a el tronco (SVN Interruptor)
  2. fusionar la rama en la copia de trabajo (Merge SVN)
  3. Asegúrese de que todo sigue compila y funciona
  4. comprometer a la copia de trabajo (el tronco)
  5. Considere matar la rama

En un entorno equipo Yo sugeriría que primero fusionar las últimas modificaciones del tronco en su rama, asegúrese de que todo se compila y funciona, a continuación, realice los pasos anteriores (que será trivial, ya ya has probado los cambios).


actualización

En el paso 5, menciono matando a la rama. Esto se debe a que una vez que una rama de una característica se encuentra en el tronco, se debe considerar como parte del tronco. En ese caso, se debe matar a la rama para que nadie siga trabajando en ella. Si se necesitan modificaciones importantes para esa característica, debe crear una nueva rama para eso.

Las únicas ramas que no elimino son las ramas de mantenimiento y liberación, a menos que una versión en particular ya no sea compatible.

No importa qué, siempre tiene acceso a todas las revisiones, por lo que matar a una sucursal solo se usa para evitar que otros desarrolladores se desarrollen en una rama muerta.

+3

Esta es la mejor respuesta hasta ahora, pero podría ser un poco más precisa: 1. Cambie la copia de trabajo al tronco (interruptor SVN), 2. Incorpore la rama a la copia de trabajo (Combinación SVN), 3. Compile el funcionamiento copiar, 4. Confirmar la copia de trabajo (Compromiso SVN). ... –

+0

Gracias, hice esto y funcionó como yo quería. También pude etiquetar el código con los mismos pasos. En el paso 5, ¿cuáles son las razones para matar a la sucursal? ¿Es para ahorrar espacio? –

+0

hecho y hecho, gracias por los comentarios – mbillard

6

Primero cambie su copia de trabajo al maletero. Luego haga un rango de fusión de revisiones, desde la rama hasta el tronco. Una vez que se completa este diálogo, las diferencias estarán pendientes de cambios en su copia de trabajo de la línea troncal. Deberá enviarlos como si hubiera realizado manualmente los cambios en su copia de trabajo.

En mi uso, es más típico para mantener el tronco funcionando y girar ramas en el momento de las compilaciones. Entonces, la única fusión que necesito hacer es obtener una corrección de errores de trunk y ponerlo en la última rama de compilación y volver a lanzar esa rama. La forma más fácil para mí es hacer esto, ya que, como han descubierto, la fusión es, en el mejor de los casos, torpe. Es mantener la última rama y el tronco desprotegido a mi máquina, y copiar literalmente los archivos desde el tronco para ramificarse y comprobar tanto en

+2

Se debe tener mucho cuidado al "copiar" los archivos. Use algo como la exportación de TortoiseSVN para evitar corromper los directorios svn ocultos. – Milimetric

10

Creo que en TortoiseSVN 1.8.5, Merge | Combinar dos árboles diferentes debería funcionar. Cuando fusiona una rama/etiqueta de nuevo en el tronco, el truco es que la URL De es la troncal y la A es la etiqueta/rama. Raro pero cierto

Fuente: Merging

Para los directorios que no esté en su copia de trabajo, pero se encuentran en la etiqueta/sucursal puede obtener errores de conflicto. Solo acepta el conflicto y rehace la fusión.

+2

Me tomó un tiempo darme cuenta de que To y From son contrarios a la intuición :) –

+0

Después de seguir las instrucciones en el sitio de tortoisesvn, asegúrese de que después de la fusión, se compromete el tronco sin modificar nada. Intenté quitar la marca de algunas cosas que no quería que cometieran, lo que causaba una advertencia de compromiso no recursiva. Además, considere eliminar la rama como dicen las instrucciones. –

2

estoy utilizando TortoiseSVN 1.9.3, Build 27038.

siga los pasos siguientes con el fin de fusionar la rama en el tronco.

1) Haga clic con el botón derecho en la copia de trabajo del maletero y seleccione la siguiente opción.

enter image description here

2) En caso de Rama La fusión en el tronco opción de selección de segunda como se muestra a continuación y haga clic en siguiente

enter image description here

3) En el campo Desde: introduzca la URL completa de la carpeta el maletero. Esto puede sonar mal, pero recuerde que el tronco es el punto de inicio al cual desea agregar los cambios de rama. En el campo Para: ingrese la URL completa de la carpeta de la característica.

enter image description here

4) Haga clic en Siguiente y hacer la prueba de fusionar

enter image description here

5) Si fusión prueba es satisfactoria continuación, haga clic en el botón Combinar.

6) Una vez que la fusión se realiza correctamente, realice los cambios en el enlace troncal.

+0

Todavía no estoy convencido de por qué se cambian TO y FROM, ¿podría explicarlo más? Por cierto, gracias, esta fue la mejor respuesta – behzad

Cuestiones relacionadas