Fusionar rama con tronco


119

Usando TortoiseSVN, necesito tomar los cambios que hice en una rama y luego fusionarlos con el tronco.

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

Básicamente, quiero que mi tronco se vea exactamente como la rama.

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

En TortoiseSVN, lo he intentado Reintegrate a branch, Merge a range of revisionsy Merge two different trees. Nada parece cambiar realmente el maletero. También intenté ramificarme en la parte superior del maletero. Esto me da un error, diciendo que el tronco ya existe.

Respuestas:


157

En tu caso:

  1. Cambiar la copia de trabajo al tronco (SVN Switch)
  2. Fusionar la rama en la copia de trabajo (Fusionar SVN)
  3. Asegúrese de que todo aún se compile y funcione
  4. Confirmar la copia de trabajo (el tronco)
  5. Considere matar la rama

En un entorno de equipo , sugeriría que primero combine las últimas modificaciones del tronco en su rama, asegúrese de que todo se compile y funcione, luego siga los pasos anteriores (que serán triviales ya que ya ha probado los cambios).


Actualizar

En el paso 5, menciono matar la rama. Esto se debe a que una vez que una rama de una entidad está en el tronco, debe considerarse como parte del tronco. En ese caso, la rama debe matarse para que nadie siga trabajando en ella. Si se necesitan modificaciones importantes para esa función, debe crear una nueva rama para eso.

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

Pase lo que pase, siempre tiene acceso a todas las revisiones, por lo que eliminar una rama solo se usa para evitar que otros desarrolladores desarrollen en una rama muerta.


¿El comentario que agregó en el paso 5 probablemente podría ser el paso 1? Cuando desee utilizar "Reintegrar una rama" del cuadro de diálogo Fusionar de TortoiseSVN, es un requisito fusionar todos los cambios del tronco (o rama base) primero.
jbvo

1
¿El primer paso (cambiar la copia de trabajo a troncal) solo es necesario si no tiene una copia de trabajo de rama y troncal separadas?
Jeff B

1
Creo que un detalle importante que falta aquí es en qué carpeta hace clic para cada paso, para que conozca el contexto de cada paso.
MacGyver

10

Creo que en TortoiseSVN 1.8.5, Fusionar | Combinar dos árboles diferentes debería funcionar. Cuando fusiona una rama / etiqueta con el tronco, el truco es que la URL De es el tronco y el A es la etiqueta / rama. Extraño pero cierto.

Fuente: Merging

Para los directorios que no están en su copia de trabajo pero que están en la etiqueta / rama, puede obtener errores de conflicto. Simplemente acepte el conflicto y vuelva a realizar la fusión.


Después de seguir las instrucciones en el sitio de tortoisesvn, asegúrese de que, después de la fusión, confirme el tronco sin modificar nada. Intenté desmarcar algunas cosas que no quería que se comprometieran, lo que estaba causando una advertencia de confirmación no recursiva. Además, considere eliminar la rama como dicen las instrucciones.
goku_da_master

6

Primero cambie su copia de trabajo al maletero. Luego, haga una combinación de un rango de revisiones, desde la rama hasta la troncal. Una vez que este diálogo esté completo, las diferencias estarán pendientes de cambios en su copia de trabajo de trunk. Deberá confirmarlos como si hubiera realizado manualmente los cambios en su copia de trabajo.

En mi uso, es más típico mantener el tronco en funcionamiento y girar las ramas en el momento de las compilaciones. Entonces, la única combinación que necesito hacer es obtener una corrección de errores del tronco y ponerla en la última rama de compilación y volver a publicar esa rama. La forma más fácil para mí de hacer esto, ya que, como ha descubierto, la fusión es, en el mejor de los casos, torpe. Consiste en mantener la última rama y el tronco comprobado en mi máquina, y copiar literalmente los archivos de un tronco a otro y registrar ambos.


2
Se debe tener mucho cuidado al "copiar" los archivos. Utilice algo como la exportación de TortoiseSVN para evitar dañar los directorios svn ocultos.
Milimétrico

3

Estoy usando TortoiseSVN 1.9.3, compilación 27038.

Siga los pasos a continuación para fusionar la rama en el tronco.

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

ingrese la descripción de la imagen aquí

2) En caso de fusión de rama en troncal, seleccione la segunda opción como se muestra a continuación y haga clic en siguiente

ingrese la descripción de la imagen aquí

3) En el campo De: ingrese la URL completa de la carpeta del tronco. Esto puede parecer incorrecto, pero recuerde que el tronco es el punto de inicio al que desea agregar los cambios de rama. En el campo Para: ingrese la URL completa de la carpeta de la rama de la función.

ingrese la descripción de la imagen aquí

4) Haga clic en siguiente y realice la combinación de prueba

ingrese la descripción de la imagen aquí

5) Si la combinación de prueba es exitosa, haga clic en el botón Combinar.

6) Una vez que la fusión sea exitosa, confirme los cambios en el tronco.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.