práctica recomendada de subversión para fusionar la twig con el tronco donde se han modificado las estructuras de files en la twig

Estoy enfrentando una situación en la cual mi equipo de desarrollo desea reorganizar las estructuras de files en nuestros repositorys. Este process tomará alnetworkingedor de 2-3 meses. Durante la reestructuración de files, todavía tenemos que hacer un lanzamiento de software. Entonces, después del process de reestructuración, queremos fusionar los files organizados de la twig de nuevo a troncal. Es importante preservar el historial de files y también debemos poder combinar los cambios de código en el tronco desde la primera creación de la twig.

Mi primer bash fue crear una twig y luego simplemente fusionarla. Lamentablemente, no es tan simple como pensaba. Uno de mis escenarios de testing fue el siguiente:

  1. Creado la twig desde el tronco
  2. Actualiza un file en el maletero
  3. Mueva el file en la twig
  4. actualizar el file en la twig
  5. Hacer una fusión de la twig de nuevo al tronco

En el paso 5, recibí un error de " conflicto de tree " en el file que actualicé en el enlace troncal. TortoiseSVN no proporciona información sobre qué file en la twig está relacionado con el file en conflicto. En mi caso, no es tan difícil descifrar los files con problemas; sin embargo, en nuestro repository real será muy difícil porque tenemos miles de files y muchos de esos files tienen los mismos nombres de file (en carpetas diferentes).

¿Alguien tiene experiencias en la misma situación que yo? ¿Alguna sugerencia / mejores prácticas que debería / puedo hacer para garantizar la integridad de los códigos?

Gracias por todas las ayudas.

Puedes ir de dos maneras

1. Método Pure-SVN

Después de refactorizar antes de los directorys merge /branches/branchname /trunk , fusione todos los files renombrados / movidos de branch con sus originales de trunk, es decir /branches/branchname/some/branchfile1 /trunk/trunkfile1 … y /branches/branchname/some/branchfile1 /trunk/trunkfile1 en el último paso

2. Método DVCS

Use cualquier DVCS con buena fusión ( todos lo tienen – Git, Mercurial, Bazaar …) y svn-bridge (git-svn, hgsubversion …), realizan fusiones de refactorización en el repository reflejado de DVCS. Después de todo, linealizar el repository (historial SVN en línea, DVCS -DAG) con herramientas DVCS ( ... rebase ) y enviar resultado a SVN-repo. Si rebase será una tarea demasiado difícil para usted, puede exportar el resultado final de DVCS de su elección (para SVN background voy a pensar en Mercurial o Bazaar, no en Git) en un tree no versionado y solo hacer una synchronization de WC de tronco con este tree

Esto es lo que terminé haciendo: 1. Fusionar todos los files renombrados y modificados en la sucursal con todas las actualizaciones (cuando corresponda) desde la troncal 2. Confirmar la sucursal al depósito. La sucursal ahora tiene el código más reciente, incluidos los cambios desde el troncal desde que se creó la sucursal por primera vez. 3. Incorpore todos los cambios de la twig a la troncal. Trunk no tendrá toda la estructura de files actualizada y todos los cambios que suceden tanto en el enlace troncal como en la twig de reorganización

Nota: Espere get conflicto de tree para los files que se actualizan en el tronco y se mueven a otra location en la sucursal. Todo lo que tenía que hacer era eliminar esos files.

El paso # 1 es un process tedioso pero funciona en mi testing. Puede que esta no sea la mejor solución pero funciona para mí (mantenga las actualizaciones tanto del tronco como de la twig y también preserve el historial).