2012-06-22 13 views
17

Uso Assembla para administrar mi repositorio de Subversion. He comenzado algunas revisiones importantes a mi base de código y quiero crear una etiqueta de mi revisión de producción más reciente (que olvidé de hacer cuando empujé esa rev directo a producción hace algunas semanas).¿Cómo creo una etiqueta de una revisión anterior en Subversion cuando uso Assembla?

Actualmente estoy en la revisión 588, y quiero crear una etiqueta de revisión 577. ¿Cómo hago esto desde la línea de comandos usando Subversion dentro de Assembla?

asumir mi URL Assembla SVN es: https://subversion.assembla.com/svn/my_assembla_svn_directory/

Respuesta

40

Siempre se puede utilizar el parámetro -r para referirse a una revisión específica. Al hacerlo, también puede usar la fijación de revisión @rev para asegurarse de que se está refiriendo al diseño de la revisión de Subversion en una revisión en particular. Lo siguiente creará una etiqueta desde el tronco sobre la revisión 577 y llamar a esta etiqueta REV-1.2:

$ svn cp -r 577 https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REV-1.2 

Si usted no tiene un trunk, branches, y tags directorios, tendrá que mover su trabajo con el fin de crear una cierta:

$ # Move the current directory to the "trunk" 
$ svn cp https://subversion.assembla.com/svn/my_assembla_svn_directory \ 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 

$ # Make a corresponding tags and branches directories too 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/branches 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/tags 

$ # Now, we can delete the old location. Let your developers know this, 
$ # so they're not surprised by this and will be able to do a "svn relocate" 
$ svn delete https://subversion.assembla.com/svn/my_assembla_svn_directory/ 

$ # Whoops. I should have done the tagging when I had a chance. 
$ #Oh well, we'll use the `@rev` pinning: 

$ svn -r557 cp https://subversion.assembla.com/svn/[email protected] \ 
     https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REL-1.2 

Subversion no implementa el etiquetado y ramificación excepto como una copia. Esto no es inusual Perforce implementa ramificaciones de la misma manera. De hecho, una vez que te acostumbras a ella, que funciona muy bien:

  • Es fácil ver por las ramas y etiquetas válidas (simplemente hacer una svn ls en el directorio correcto
  • La historia completa de etiquetas y ramas son fáciles de ver. Puede ver quién realizó el cambio, cuándo, por qué, etc.
  • Se muestra el historial completo de la etiqueta o rama. Si alguien cambia una etiqueta o una rama, verá quién lo hizo con mucha claridad.
  • Desalienta el tipo de ramificación helter-skelter que se ve en muchos otros sistemas de control de versiones cuando los desarrolladores eligen y eligen sobre varias ramas y el tronco qué ramificar o etiquetar. Eso hace que el seguimiento de la historia sea muy difícil de hacer. El esquema de Subversion lo alienta a pensar que las ramas y las etiquetas afectan a todos los archivos de un proyecto.
6

Directamente desde el SVN documentation:

Si desea crear una instantánea de/calc/trunk exactamente como se ve en la revisión HEAD, haga una copia del mismo:

$ svn copy http://svn.example.com/repos/calc/trunk \ 
      http://svn.example.com/repos/calc/tags/release-1.0 \ 
      -m "Tagging the 1.0 release of the 'calc' project." 

Committed revision 902. 

Este ejemplo asume que ya existe un directorio/calc/tags. (Si no, puede crearlo usando svn mkdir.) Después de completar la copia , el nuevo directorio release-1.0 es siempre una instantánea de cómo se veía /trunk directory en la revisión HEAD en el momento que realizó la copia. Por supuesto, es posible que desee ser más preciso acerca de exactamente qué revisión copia, en caso de que alguien más haya cometido cambios en el proyecto cuando no estaba buscando. Si sabe que revisión 901 de/calc/trunk es exactamente la instantánea que desea, puede especificarlo pasando -r 901 al comando svn copy.

(el énfasis es mío)

Cuestiones relacionadas