¿Cómo creo una label de una revisión anterior en Subversion cuando uso Assembla?

Yo uso Assembla para administrar mi repository de Subversion. He comenzado algunas revisiones importantes a mi base de código y quiero crear una label 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).

Actualmente estoy en la revisión 588 y quiero crear una label de la revisión 577. ¿Cómo hago esto desde la command-line usando Subversion dentro de Assembla?

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

Siempre puede usar el parámetro -r para referirse a una revisión específica. Al hacerlo, también puede usar la @rev revisión @rev para asegurarse de que se está refiriendo al layout de la revisión de Subversion en una revisión en particular. Lo siguiente creará una label desde trunk en la revisión 577 y llame a esta label 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 no tiene un trunk , branches y directorys de tags , deberá mover su trabajo para crear algunos:

 $ # 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/my_assembla_svn_directory@557 \ https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REL-1.2 

Subversion no implementa el labeldo y la bifurcación excepto como una copy. Esto no es inusual Perforce implementa ramificaciones de la misma manera. De hecho, una vez que te acostumbras, funciona muy bien:

  • Es fácil ver las twigs y tags válidas (simplemente haga un svn ls en el directory correcto
  • El historial completo de tags y twigs es fácil de ver. Puedes ver quién hizo el cambio, cuándo, por qué, etc.
  • Se muestra el historial completo de la label o twig. Si alguien cambia una label o una twig, verá quién lo hizo muy claramente.
  • Desalienta el tipo de ramificación tipo "helter-skelter" que se ve en muchos otros sistemas de control de versiones cuando los desarrolladores eligen y eligen sobre varias twigs y el tronco qué ramificar o labelr. Eso hace que el seguimiento de la historia sea muy difícil de hacer. El esquema de Subversion lo alienta a pensar que las twigs y las tags afectan a todos los files de un proyecto.

Directamente de la documentation de SVN :

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

 $ 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 supone que ya existe un directory / calc / tags. (Si no lo hace, puede crearlo usando svn mkdir). Una vez completada la copy, el nuevo directory release-1.0 es siempre una instantánea de cómo se veía el directory / trunk en la revisión HEAD en el momento en que realizó la copy. Por supuesto, es posible que desee ser más preciso acerca de qué revisión copy exactamente, en caso de que alguien más haya realizado cambios en el proyecto cuando no estaba mirando. Entonces, si sabe que la revisión 901 de / calc / trunk es exactamente la instantánea que desea, puede especificarla pasando -r 901 al command svn copy .

(énfasis mío)