2008-12-30 16 views
67

Estoy usando Subversion 1.4.6, y no puedo actualizar a la versión 1.5 en este momento.Merge trunk to branch en Subversion

La situación:

  1. El maletero tiene una gran cantidad de cambios estructurales (es decir, mover archivos, sobre todo).

  2. Tengo una rama que se fusionó recientemente del maletero, pero antes de los cambios importantes.

¿Cuál es la mejor manera de unir el tronco a la rama?

Lo que tenía en mente:

  1. En primer lugar se funden con cuidado la rama al tronco, mediante la fusión sólo los archivos modificados en la rama al tronco.

  2. Copie la cajuela en la rama. ¿Cuál es la mejor manera de hacer esto sin perder el historial de la sucursal? ¿Debo desaprobar la sucursal y crear una nueva?


bien, parece que no he dado SVN suficiente crédito. Es lo suficientemente inteligente después de todo. Me quedé desanimado por la salida de "D" y "A", pero en el fondo hizo un movimiento.

+1

** La pregunta y las respuestas son relevantes para muy antiguo versiones de cliente y servidor SVN y no es relevante para SVN SVN 1.5+ y especialmente 1,8 + ** – bahrep

Respuesta

81

¿Hay algo que le impida fusionar todas las revisiones en el tronco desde la última fusión?

svn merge -rLastRevisionMergedFromTrunkToBranch:HEAD url/of/trunk path/to/branch/wc 

debería funcionar bien. Al menos, si desea fusionar todos los cambios en el tronco de su sucursal.

+3

Cuando dried- ejecutarlo, donde había una gran cantidad de "D" y "A" para muchos archivos, ya que los archivos se movieron en el tronco. Mi pregunta es si SVN recuerda los historiales de los archivos en este caso. –

+0

¿Utilizaste svn rename cuando movías archivos en el trunk? Si lo hicieras, la historia debería permanecer. Creo que deberías probar esto en pequeña escala: crea un nuevo repositorio, un tronco con un único archivo, una rama con un cambio, haz un cambio de nombre de svn en el tronco y comprueba si el historial existe. –

+1

¿Cómo puedo saber cuál fue la última revisión fusionada de línea a parte? –

15

última incorporada desde el tronco a la rama se pueden encontrar mediante la ejecución de este comando dentro del directorio de copia de trabajo:

svn log -v --stop-on-copy 
+4

Eso simplemente detiene el registro cuando se creó la rama, no muestra ninguna fusión que ocurrió después de ese punto. – moswald

+2

Porque, con esa pequeña advertencia de @moswald, esto puede ser bastante útil para saber. No veo el problema. No suelo tener ramas de vida larga (a lo sumo una semana), por lo que normalmente solo salgo del tronco justo antes de la reintegración. –

9

Es la manera “antigua” para especificar los rangos de revisiones que desea fusionar. Con 1.5+ puede utilizar:

svn merge HEAD url/of/trunk path/to/branch/wc 
+3

Estoy usando 1.6.11 y me está causando ingrese un rango – Brent212

+16

¿Tiene que decir tanto? ¿Qué hay de malo con 'svn merge/url/of/trunk' mientras está en la copia de trabajo? – GreenAsJade

+0

svn: E195002: Fuente de combinación no válida 'HEAD'; una ruta de copia de trabajo solo se puede usar con una revisión de repositorio (un número, una fecha o un encabezado) – Solo

Cuestiones relacionadas