2009-12-30 18 views
17

¿Es esto posible con TortoiseSVN ?:Cómo tener TortoiseSVN siempre congelar svn: externos para las etiquetas

Siempre congelar svn:externals de etiquetas

el escenario es nuestro tronco siempre utilizará la revisión 'cabeza' de lo externo, sin embargo, cuando creamos 'etiquetas', nos gustaría que tengan un conjunto de revisiones para las externas para 'congelarlas' adecuadamente en un momento específico.

actualización

Gracias a todos por sus comentarios/información.

Como no pude encontrar nada que satisficiera por completo nuestras necesidades (intenté smartsvn y svncopy.pl) Creé una aplicación de consola que hasta ahora ha superado todos nuestros casos de prueba.

Descripción general de alto nivel: la aplicación toma una URL de repositorio y luego busca todas las externas y agrega la última revisión de confirmación para ellas - hago un svn info y obtengo la "revisión de confirmación".

La aplicación funciona con carpetas y archivos externos.

Aquí está el código fuente y los archivos de configuración completos: http://svnxf.codeplex.com/

+1

¿Qué pasa con svncopy.pl no se ajusta a sus necesidades? – kostmo

+0

Por favor, publique las soluciones como respuestas, no en preguntas. –

Respuesta

6

me encontré con este post de hoy mientras buscaba una solución para el mismo problema. Eventualmente encontré que TortoiseSVN en su última versión HACE compatible con esta funcionalidad deseada: TortoiseSVN 1.7 Release Notes.

Esperamos que esto ayude a otros que encuentren esta publicación cuando investiguen el mismo problema.

0

se puede especificar la revisión en lo externo:

third-party/skins -r148  http://svn.example.com/skinproj 

Ver svnbook

+0

gracias - Estoy buscando un proceso automatizado. – dnndeveloper

+0

No creo que haya una manera de hacerlo automáticamente, aparte de programar/programar algo usted mismo y siempre usar eso para etiquetar –

6

La mejor práctica recomendada es utilizar siempre una revisión explícita (no HEAD) en las definiciones externas. Desde el documentation:

Usted debería considerar seriamente utilizar números de revisión explícitos en todas sus externos definiciones. Hacerlo significa que puede decidir cuándo desplegar una instantánea diferente de información externa, y qué instantánea extraer exactamente. & hellip; Para los proyectos de software , esta podría ser la diferencia entre una compilación exitosa y una compilación fallida de una instantánea anterior de su código base complejo.

para responder directamente a su pregunta: no, ’ No es posible cambiar automáticamente las definiciones externas cuando se marcan utilizando TortoiseSVN. Tendrá que hacerse manualmente al crear la etiqueta.

+0

Estoy completamente de acuerdo con esto por una etiqueta, sin embargo, el tronco siempre usará la última. – dnndeveloper

+1

Incluso el tronco no debe usar lo último. Si una dependencia tiene un cambio de rotura aplicado, entonces tiene varias revisiones para las cuales la compilación de troncales está rota. En su lugar, debe usar revisiones fijas, y luego (a) actualizar la definición externa (b) actualizar su código para admitir los cambios en la dependencia, todo de una sola vez. –

2

Debe probar SmartSVN que opcionalmente convierte HEAD-externals en elementos externos fijos al crear etiquetas o ramas. Puede encontrar esta opción (Revisiones externas: (o) Dejar como está() Reparar todo() Reparar excepto a continuación) en la parte inferior de los cuadros de diálogo Agregar etiqueta/Agregar rama.

+0

intenté esto y parece que solo funciona con carpetas externas y no admite solo archivos externos en 1.6 + ... ¡el primer cliente para que funcione correctamente tendrá una buena ventaja sobre el resto! – dnndeveloper

+0

De acuerdo con http://www.syntevo.com/smartsvn/changelog.txt SmartSVN 6.5.2 corrige también el archivo externo. – Mot

3

Puede probar svncopy.pl (encuéntrelo en google) Es un script de Perl que responde a sus necesidades.

+0

Para los perezosos: https://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svncopy/ – kostmo

1

Me pondría en segundo lugar Michael.

Adicionalmente a la recomendación de la documentación de SVN:

  • uso revisiones no fijos en svn: externos hace más difícil para actualizar la copia de trabajo a una revisión específica (por ejemplo, durante la investigación de errores)
  • Log de directorio con SVN : los externos será incompleta que puede proporcionar información falsa sobre conjuntos de cambios entre las revisiones
  • ramas y la mezcla puede llegar a ser más complicado

Generalmente, SVN parece estar diseñado principalmente para código contenido en un directorio común. svn: externals (incluso por nombre) se agrega para hacer referencia a los repositorios externos. Así que esperaría otros problemas adicionales a los mencionados anteriormente.

Según mi experiencia, la necesidad de utilizar svn: externals para revisiones no fijas proviene frecuentemente de una estructura incorrecta en el repositorio.

Puede ser que no es tu caso, sólo aconsejo tener en cuenta estos puntos ...

0

Sé que esto no es para TortoiseSVN, pero si se utiliza Eclipse con subversivo, puede hacer clic en el proyecto y seleccione equipo-> etiqueta. Subversivo congela externos por defecto y formatea las propiedades bastante bien.

+0

gracias, también estaba buscando algo que podamos poner en nuestra compilación automatizada. – dnndeveloper

1

Actualización

Gracias a todos por su opinión/información.

Como no pude encontrar nada que satisficiera por completo nuestras necesidades (intenté smartsvn y svncopy.pl) creé una aplicación de consola que hasta ahora ha superado todos nuestros casos de prueba.

Descripción general de alto nivel: la aplicación toma un repositorio URL luego busca todos los externos y agrega la última revisión de compromiso para ellos - hago una "información svn" y obtengo la "revisión de compromiso".

La aplicación funciona con carpetas y archivos externos.

Aquí está el código fuente y los archivos de configuración completos: http://svnxf.codeplex.com/

Cuestiones relacionadas