subversion - svn merge branch to trunk
Cómo tener TortoiseSVN siempre congela svn: externals para las etiquetas (8)
Actualizar
Gracias a todos por sus comentarios / información.
Como no pude encontrar nada que pudiera satisfacer completamente nuestras necesidades (probé con smartsvn y svncopy.pl) hice una aplicación de consola que hasta ahora ha superado todos nuestros casos de prueba.
Una descripción general de alto nivel: la aplicación toma una URL del repositorio y luego busca todos los aspectos externos y agrega la última revisión de confirmación para ellos: hago una "información svn" y obtengo la "revisión de confirmación".
La aplicación funciona con carpetas y archivos externos únicos.
Aquí está el código fuente y los archivos de configuración completos: http://svnxf.codeplex.com/
¿Es esto posible con tortoiseSVN ?:
Siempre congelar svn:externals
para etiquetas
El escenario es que nuestro tronco siempre usará la revisión ''HEAD'' para los externos, sin embargo, cuando creamos ''etiquetas'' nos gustaría que tuvieran un conjunto de revisiones para que los externos ''las congelaran'' en un momento específico en el tiempo.
Actualizar
Gracias a todos por sus comentarios / información.
Como no pude encontrar nada que pudiera satisfacer completamente nuestras necesidades (probé con smartsvn
y svncopy.pl
) hice una aplicación de consola que hasta ahora ha superado todos nuestros casos de prueba.
Una descripción general de alto nivel: la aplicación toma una URL del repositorio y luego busca todos los aspectos externos y agrega la última revisión de confirmación para ellos: hago una svn info
y obtengo la "revisión de confirmación".
La aplicación funciona con carpetas y archivos externos únicos.
Aquí está el código fuente y los archivos de configuración completos: http://svnxf.codeplex.com/
Debe probar SmartSVN que opcionalmente convierte los externos HEAD en externos fijos al crear etiquetas o ramas. Puede encontrar esta opción (Revisiones externas: (o) Dejar tal como está () Arreglar todo () Arreglar excepto a continuación) en la parte inferior de los cuadros de diálogo Agregar etiqueta / Agregar rama.
Encontré este post hoy mientras buscaba una solución para el mismo problema. Finalmente, encontré que TortoiseSVN en su última versión SÍ admite esta funcionalidad deseada: TortoiseSVN 1.7 Release Notes .
Esperemos que esto ayude a otros que encuentren esta publicación cuando investiguen el mismo problema.
La mejor práctica recomendada es usar siempre una revisión explícita (no HEAD) en las definiciones externas. De la documentation :
Debe considerar seriamente el uso de números de revisión explícitos en todas sus definiciones externas. Hacerlo significa que puede decidir cuándo desplegar una instantánea diferente de información externa, y exactamente qué instantánea desea extraer. ... Para proyectos de software, esta podría ser la diferencia entre una compilación exitosa y una compilación fallida de una instantánea más antigua de su base de código compleja.
Para responder directamente a su pregunta: no, no es posible cambiar automáticamente las definiciones externas al etiquetar utilizando TortoiseSVN. Tendrá que hacerse manualmente al crear la etiqueta.
Puede especificar la revisión en externos:
third-party/skins -r148 http://svn.example.com/skinproj
Ver svnbook
Puedes probar svncopy.pl (encuéntralo en google) Es un script en perl que responde a tu necesidad.
Sé que esto no es para tortoiseSVN, pero si usas eclipse con subversivo, puedes hacer clic derecho en el proyecto y seleccionar equipo-> etiqueta. Subversive congela lo externo de manera predeterminada y formatea las propiedades bastante bien.
Yo secundaría a Michael.
Adicionalmente a la recomendación de la documentación de SVN:
- El uso de revisiones no fijas en svn: externals hace que sea más difícil actualizar la copia de trabajo a una revisión específica (por ejemplo, durante la investigación de errores)
- El registro del directorio con svn: externos estará incompleto, lo que puede proporcionar información falsa sobre los conjuntos de cambios entre revisiones
- La ramificación y la fusión pueden ser más complicadas
En general, SVN parece estar diseñado principalmente para el código contenido en un directorio común. Se agrega svn: externals (incluso por nombre) para hacer referencia a repositorios externos. Así que esperaría otros problemas además de los mencionados anteriormente.
En mi experiencia, la necesidad de utilizar svn: externals para revisiones no fijas a menudo proviene de una estructura incorrecta en el repositorio.
Puede que no sea tu caso, solo te aconsejo tener en cuenta estos puntos ...