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'

user62732
fuente
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 :)

Billy ONeal
fuente
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.

Jamie Hale
fuente
¿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.

Premraj
fuente