Fusionar dos revisiones de rama usando Subversion


95

Me gustaría fusionar todos los cambios que tuvieron lugar entre la rev 10 y HEAD rev en http: // url-of-branch-a y aplicarlos a http: // url-of-branch-b .

Algo como...

svn merge -r 10:HEAD http://url-of-branch-a 

es posible? Si es así, ¿cuál es la sintaxis?

Estoy ejecutando el cliente SVN desde la línea de comandos de Unix. La versión del cliente SVN es 1.4

EDITAR: Sí, mi solución específica fue ...

  1. cambiar el directorio a la ubicación de mi copia de trabajo que quiere recibir los cambios (rama-b)
  2. svn merge -r 10: HEAD http: // url-of-branch-a

Esto fusiona los cambios de 'branch-a' en 'branch-b'


4
También necesita saber cuándo se tomó la sucursal. Puede hacer esto (svn log --stop-on-copy.) En su rama para obtener el número de revisión desde el que se ramificó.
jmc

@jmc, ya no necesitas esto desde el año 2008 cuando se lanzó SVN 1.5, AFAIR
bahrep

Respuestas:


55

Checkout URL A. Use SVN merge para fusionar URL B con su copia de trabajo de A. Commit A.

O viceversa, por supuesto :)


127

El proceso es el siguiente:

  1. Establecer una copia de trabajo de la rama B ( svn checkout http://branch-b)
  2. Fusionar los cambios de la rama A en una copia de trabajo de B ( svn merge -r 10:HEAD http://branch-a .)
  3. Confirmar (después de resolver conflictos) la copia de trabajo B en la rama b ( svn commit)

Consulte la página de manual (archivo de ayuda) para ver la semántica de fusión de svn. Le muestra que svn merge siempre descarga los resultados en una copia de trabajo.

Consulte el SVNBook para conocer todos los detalles.


¿Podrías también dar una idea de cómo hacerlo usando el complemento SVN en eclipse?
Snehal Masne

Esto funciona para mí: svn merge --force --allow-mixed-revisions -r 10: HEAD branch-a
Minh Nguyen

2
¿Por qué especificamos la revisión 10 a HEAD? ¿Por qué dos puntos finales de revisión en lugar de solo una revisión para usar como instantánea? ¿A qué rama se refiere "10 to HEAD"?
ahnbizcad

2

Principalmente confuso mergeal intentar hacerlo en el repositorio svn, no podemos fusionar directamente con el repositorio svn, podemos fusionarlo con la copia de trabajo de la máquina local de la siguiente manera:

  • Esta copia de trabajo debe ser destination URLde fusión (es decir, destino de pago).

  • fusionar copia de trabajo con source URLde fusionar.

  • commit al destino.

Práctica recomendada: fusionar, fusionar.

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.