svn - son - Reemplazo de tronco con rama en Subversion
tortoise svn lock (5)
Combine todos los cambios de la rama al tronco y luego resuelva todos los conflictos con
svn resolve path --accept theirs-full
O bien, puede indicarle a la fusión que haga eso:
svn merge -rX:HEAD url/of/branch trunk/wc --accept theirs-full
Después de dicha combinación, tiene una copia de trabajo que se parece a la de la sucursal. Todo lo que tienes que hacer es enviar la copia de trabajo de ese tronco.
Digamos que las personas han estado trabajando en el tronco y en una rama de un repositorio de Subversion. Quiero descartar cualquier cambio en el tronco y reemplazarlo con una copia de la rama.
Como se sugirió en otra pregunta , puedo mover o quitar el tronco y luego copiar la rama al tronco. Pero entonces la historia del tronco se reemplaza con la historia de la rama. ¿Qué pasa si quiero conservar la historia del maletero?
Creo que lo que quiero es algo así como una fusión, pero una donde los cambios del destino son ignorados y simplemente reemplazados por la fuente. ¿Cómo haría esto en Subversion? ¿Esto se considera una buena práctica?
No estoy seguro de entender lo que intentas hacer. ¿Qué desea que suceda con todos los cambios realizados en el troncal después de la creación de la rama? ¿Desea que no aparezcan en el registro cuando vea el historial de un archivo después de la fusión? Si es así, eso es lo que obtendrás si eliminas el enlace troncal y copias la bifurcación en su lugar: la bifurcación comparte el historial con el enlace troncal antes de ser ramificado, por lo que es el mismo excepto las revisiones realizadas después de la bifurcación.
Si desea mantener el historial del enlace troncal, pero simplemente pisar todos los cambios realizados entre la bifurcación y la fusión, ese es un problema un poco más complicado. Creo que si haces una fusión que ignora los ancestros (hay una opción --ignore-ancestry
), reemplazará el contenido del trunk con la rama. También es posible que desee probar la opción --force
con la combinación (tanto en lugar de y en conjunción con --ignore-ancestry
). Pruébelo de diferentes maneras para ver si obtiene los resultados que desea ...
Si eso falla, siempre puede fusionar inversamente todos los cambios en el tronco desde el punto de ramificación, luego combinar en la rama. Parece probable que esto cause algunos conflictos, que por supuesto querrá resolver utilizando la versión de su sucursal. No sé si alguna de estas ideas es óptima.
Pre-1.5 esto es simple: asegúrate de que tu copia de trabajo apunte a trunk, luego haz "svn merge url-of-trunk url-of-branch". Los cambios que recibe son delta entre el tronco y la rama, efectivamente "me dan todo lo que se necesita para que el tronco se vea como una rama".
No tengo idea si las nuevas capacidades de fusión de 1.5 cambian este escenario.
Aunque es un hilo muy viejo, pero aún así, comparto mi experiencia
Hace poco hicimos esto para uno de nuestros proyectos y seguimos pautas como:
svn copy <repos/trunk> <repos/tag/old_trunk> -m "copied old trunk as tag"
svn delete <repos/trunk> -m "deleted trunk temporarily"
svn copy <repos/branch/new_fetaure_branch> <repos/trunk> -m "placed new trunk with features"
Siguiendo estos pasos, se mantiene intacta la historia de la línea troncal y se reemplaza la nueva rama de características como troncal.
trunk remplace (trunk with your branch)
*----x * ---->
/ |
/ |
*--------|
branch
Esta rama se creó a partir del tronco, así que tenga cuidado de no eliminar brutalmente el tronco (problemas con la ascendencia). Primero haga una etiqueta con su tronco, su copia de seguridad, en cualquier caso ...
Sugiero hacer esto:
Usando Eclipse SVN
haga clic a la derecha> Rama / etiqueta del equipo (cree una etiqueta - su copia de seguridad)
Equipo> cambiar otra rama / etiqueta ... seleccione su rama, asegúrese de que la rama esté cargada correctamente.
En la rama: Equipo> Desconectar. Eliminar información SVN.
Equipo> compartir proyecto ... elige tu maletero.
Equipo> commit en tu maletero.
haga clic derecho ... seleccione Comparar con .. Sucursal / etiqueta -> busque su sucursal. Si todo está bien, tendrá: "No hay diferencias entre las entradas seleccionadas".
Espero que ayude.