¿Cómo puedo bifurcar apropiadamente post-commit y revertir el tronco en svn?

StackOverflow https://stackoverflow.com/questions/148902

  •  02-07-2019
  •  | 
  •  

Pregunta

Tengo algunas confirmaciones que he decidido, después del hecho, serán más trabajo de rama que de tronco. ¿Cómo creo la rama y revierto el tronco sin dejar de garantizar que la fusión no sea dolorosa más tarde?

¿Es tan simple como copiar el tronco actual a una rama y revertir el tronco? ¿O esto creará dolores de cabeza más tarde?

¿Fue útil?

Solución

Creo que el método de Philips sería algo como lo siguiente, suponiendo que el último "bueno" la revisión estaba en 100 y ahora está en 130, para crear la nueva sucursal:

svn copy -r100 svn://repos/trunk svn://repos/branches/newbranch
svn merge -r 100:130 svn://repos/trunk svn://repos/branches/newbranch

Tenga en cuenta que la idea es preservar los cambios realizados en esas revisiones para que pueda aplicarlos nuevamente al tronco.

Para revertir el tronco:

svn merge -r130:100 .
svn ci -m 'reverting to r100 (undoing changes in r100-130)' . 

(No importa en qué orden los realizó, por lo que podría revertir el tronco antes de crear la rama).

Entonces podría cambiar a la nueva rama que creó en el repositorio:

svn switch svn://repos/branches/newbranch workdir

Otros consejos

Para ser honesto, copio mis cambios, revertí el tronco, la rama, y ??luego confirmo mis cambios en la rama. La razón principal es la facilidad de fusión posterior (si luego se fusiona desde el tronco a la rama en el punto de bifurcación, la combinación contendrá una reversión de sus cambios iniciales).

Esto puede no ser el " correcto " De esta forma, como siempre puede omitir las revisiones cuando se fusiona, pero luego es mucho menos un dolor de cabeza para mí. Descargo de responsabilidad: no soy svn guru, por lo que puede ser más fácil para mí porque lo estoy haciendo mal, pero uso svn bastante.

No hay nada de malo en seguir el método de Philip, aparte de que deja algo de " cruft " En la historia de la revisión. Si desea eliminarlos por razones de orden, y las revisiones están en HEAD, puede eliminarlas del repositorio siguiendo estas instrucciones .

Actualización: el método de Philip es mejor que el sugerido en la pregunta por las razones que indicó. Los métodos de Mine y Philip serían similares, excepto que en lugar de revertir el tronco, propongo eliminar las revisiones del historial de revisiones. (como dije, esto solo se puede hacer si todas las revisiones que desea eliminar se encuentran en el HEAD del repositorio).

No tengo svn disponible aquí, pero así es como trataría de hacerlo:

Determine el punto en el historial en el que comenzó a cometer cosas malas (diga la revisión " 100 " mientras está en " 130 ")

svn copy trunk branch # create your branch while preserving history
svn copy trunk@100 trunk #replace current revision with revision 100  

Esto debería omitir el historial incorrecto sin agregar una combinación inversa (en realidad, está omitiendo el historial de la troncal entre 100 y 130, pero mantuvo un enlace a esa historia en la rama y accedió a la troncal mientras que forzar la revolución aún producirá el historial correcto)

entonces

svn switch branch workdir

esto debería funcionar si desea eliminar por completo los cambios del tronco. Si desea conservar algunos pequeños, puede elegirlos nuevamente de rama a tronco (si utiliza svn 1.5, hará un seguimiento de los puntos de fusión y evitará conflictos espurios)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top