subversion - tortoise svn server
Cómo reemplazar un directorio en un repositorio SVN sin romper nada (3)
Necesito reemplazar un directorio en mi repositorio SVN en el servidor de producción, pero no estoy seguro de la forma correcta de hacerlo sin romper nada. El directorio que se reemplaza es una revisión de un módulo de terceros que se ha reestructurado por completo, por lo que para poder realizar una actualización limpia, necesito eliminar el directorio o los archivos antiguos y reemplazarlos con el nuevo directorio y los archivos. Cuando hago esto (usando svn delete) la copia de trabajo se obstruye o en un estado que me impide confirmar o agregar el nuevo directorio no versionado a la copia de trabajo. He intentado svn update, svn cleanup, así como otros accesos directos de reparación de UI (TortoiseSVN y Cornerstone), pero parece que no puedo volver a sincronizar las cosas, es decir, sin retroceder a una revisión previa o revisar una nueva copia.
Creo que el directorio de destino tanto en la copia de trabajo local como en el repositorio remoto debe eliminarse, la copia de trabajo actualizada, el nuevo directorio agregado a la copia de trabajo y luego debe enviarse al repositorio; pero no estoy seguro de los detalles o de los pasos o sutilezas que me faltan. El módulo que estoy actualizando es bastante vital para la aplicación del sitio, por lo que necesito hacerlo bien la primera vez, ya que esto se está realizando en el servidor de producción, y debe hacerse rápidamente. Si alguien pudiera trazar los pasos claramente, realmente lo apreciaría.
Si realmente necesita que la estructura del directorio se actualice en una única confirmación, puede usar WinMerge:
- compare los dos árboles recursivamente, usando un filtro SVN para evitar directorios comparing.svn
- Elimine los archivos y directorios que no existen en la nueva estructura de su WC
- Agregue los archivos y directorios que solo existen en la nueva estructura a su WC
- Reemplace todos los archivos que existen en ambas estructuras con los nuevos en su WC
- cometer
Es sencillo hacerlo con el RepoBrowser de TortoiseSVN. Simplemente elimine la carpeta anterior y luego arrastre y suelte la nueva carpeta.
Para hacerlo más fácil, puede hacerlo de una manera que cree una única revisión "rota" donde el directorio no existe.
-
svn up
parasvn up
su copia de trabajo -
svn delete <directory>
para deshacerse del directorio actual -
svn commit -m ''Deleted old module''
- Copie en el nuevo directorio a la copia de trabajo
-
svn add <directory>
para agregar tu nueva estructura de directorio -
svn commit -m ''Added new module''
Esta pregunta contiene detalles sobre cómo usar "Ramas de proveedor", que puede ser una mejor solución para su situación.