2008-10-10 15 views
5

Mi sistema de implementación automatizada actualiza una versión más reciente de mi sitio mediante subversión. En lugar de hacer que mi sitio en vivo apunte al enlace troncal (que es casi una versión en proceso), mi sitio en vivo apunta a una etiqueta.Subversión y cambio entre etiquetas

E.g. Trabajo en el tronco y cuando mi v1.0 termina, creo una etiqueta llamada 1.0 y hago un checkout de esa etiqueta que es entonces mi sitio en vivo. Ahora, sigo trabajando en trunk y después de un tiempo hay un v2.0. Creo una etiqueta llamada 2.0 y quiero que mi sitio en vivo se parezca a esta etiqueta 2.0.

Podría limpiar el sitio en vivo actual y hacer una compra de esta etiqueta 2.0. Lo cual suena bastante fácil, sin embargo. Mi sitio tiene aproximadamente 1 GB de tamaño porque tiene todo tipo de documentos PDF y video. Puedo decir con seguridad que la mayoría de las veces que hago actualizaciones serán cambios de copia o correcciones de errores. Esto significa que tal vez solo el 1% de mi sitio cambia por actualización. Y como mi control de versión solo es accesible para mi servidor web a través de una conexión http fuera del sitio, significa que necesito descargar todo ese sitio una y otra vez.

¿Hay una forma fácil de cambiar entre las etiquetas y tener subversión solo actualizar las diferencias entre esas etiquetas?

Respuesta

7

Realmente hay una función de interruptor que hace precisamente eso. Yo uso TortiseSVN que es un shell de Windows/GUI para Subversion, así que no estoy familiarizado con la forma de hacerlo de forma manual, pero esto parece que debería ayudar a:

http://svnbook.red-bean.com/en/1.1/ch04s05.html

6

la línea de comandos: URL svn interruptor

Use el interruptor svn help para obtener más información.

Sin embargo, recomiendo hacer las cosas al revés. Su sitio de producción siempre está en el tronco, mientras que usted hace su desarrollo en las ramas que se fusionan de nuevo al tronco cuando están listos para su lanzamiento. Después de un lanzamiento determinado, puede hacer una etiqueta con fines históricos. Después de la fusión, solo tiene que hacer una actualización de svn para que su sitio ejecute el nuevo código.

DivMod lleva esta idea a su conclusión lógica, creando una rama para cada problema/ticket que se está trabajando. Puede read their description of their system; ofrece algunos argumentos convincentes.

+0

+1 Gracias por la referencia de DivMod. Enlace actualizado: http://twistedmatrix.com/trac/wiki/UltimateQualityDevelopmentSystem – Paolo

0

Uso una configuración similar, excepto que utilizo una rama activa, en lugar de una etiqueta. Es más trabajo para comprometer, ya que ahora tengo que fusionar los cambios del tronco en la rama en vivo, pero puedo hacer un "svn up" en la web raíz para actualizarlo. También me da un poco mejor control si quiero fusionar los cambios seleccionados de diferentes ramas en vivo.

Si lo estuviera haciendo de nuevo, utilizaría mercurial (o similar) ya que las ramas son mucho más fáciles de mantener, pero la técnica anterior ha funcionado para 3 sitios en vivo durante aproximadamente dos años.

Cuestiones relacionadas