Como has descubierto, sin duda, copiar en un directorio de destino que ya existe no funcionará:
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
porque tronco ya existe, por lo que iba a terminar con:
Usando merge tiene la desafortunada propiedad de no mantener el historial de la etiqueta del proveedor 1.1 en subversión anterior a la 1.5 que introdujo el seguimiento de combinación. Puede que no te importe. En este caso de combinación sería la solución correcta:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc
La mejor manera de leer esta fusión es la siguiente: En primer lugar determinar los cambios necesarios para hacer trunk
idéntica a vendor/1.1
, a continuación, aplicar los cambios en la copia de trabajo dado (también de tronco, en este caso).
Debo señalar que esta combinación efectivamente eliminará todo lo que estaba en el maletero anteriormente. Por lo tanto, si ya tiene modificaciones locales (no vendidas) en el enlace troncal, querrá aplicar solo los cambios entre 1.1 y el anterior hito de proveedor:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 trunk-wc
Si existe tronco, pero está vacía usted tiene dos opciones: reemplazar el tronco, o escribir un pequeño bucle de shell:
Sustitución del tronco se parece a esto:
svn rm svn://my_project/trunk
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
Aprovechando la cáscara (bash):
svn co svn://my_project/trunk trunk
svn co svn://my_project/vendor/1.1 1.1
(cd 1.1
for x in * ; do
svn cp $x ../trunk
done
)
svn ci trunk