2012-06-22 15 views
17

Uso Assembla per gestire il mio repository Subversion. Ho iniziato alcune importanti revisioni al mio codebase e voglio creare un Tag della mia revisione di produzione più recente (che ho dimenticato di fare quando ho spinto quel rev live in produzione qualche settimana fa).Come si crea un tag da una vecchia revisione in Subversion quando si usa Assembla?

Sono attualmente in revisione 588 e voglio creare un Tag di revisione 577. Come faccio a fare questo dalla riga di comando usando Subversion in Assembla?

assumere la mia URL Assembla SVN è: https://subversion.assembla.com/svn/my_assembla_svn_directory/

risposta

40

È sempre possibile utilizzare il parametro -r per riferirsi ad una revisione specifica. Quando si esegue questa operazione, è inoltre possibile utilizzare il blocco delle revisioni @rev per accertarsi di fare riferimento al layout della revisione di Subversion in una particolare revisione. Di seguito verrà creato un tag dal tronco sulla revisione 577 e chiamare questo tag 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 

Se non si dispone di un trunk, branches, e tags directory, è necessario spostare il vostro lavoro al fine di creare qualche:

$ # 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 non implementa codifica e ramificazione se non come una copia. Questo non è inusuale. Perforce implementa la ramificazione allo stesso modo. In realtà, una volta che si ottiene l'uso ad essa, funziona davvero bene:

  • E 'facile vedere i rami e tag validi (semplicemente fare un svn ls sulla directory giusta
  • La storia completa di tag e rami È facile vedere chi ha apportato la modifica, quando, perché, ecc.
  • Viene visualizzata la cronologia completa del tag o del ramo. Se qualcuno modifica un tag o un ramo, viene visualizzato chi lo ha fatto in modo molto chiaro.
  • Scoraggia il tipo di diramazione helter-skelter che si vede in molti altri sistemi di controllo di versione quando gli sviluppatori selezionano e scelgono su vari rami e sul tronco cosa ramificare o taggare. Ciò rende molto difficile fare il monitoraggio della storia. Lo schema di Subversion ti incoraggia a pensare a rami e tag che influenzano tutti i file in un progetto.
6

Direttamente dal SVN documentation:

Se si desidera creare un'istantanea di/calc/trunk esattamente come appare nelle revisione HEAD, fanno una copia di esso:

$ 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. 

Questo esempio presuppone che una directory/calc/tags esiste già. (Se non lo fa, puoi crearlo usando svn mkdir.) Dopo che la copia completa, la nuova directory release-1.0 è per sempre un'istantanea di come la directory/trunk è stata esaminata nella revisione HEAD nel momento in cui hai fatto la copia. Ovviamente, potresti voler essere più preciso su esattamente quale revisione copiare, nel caso in cui qualcun altro potrebbe aver commesso modifiche al progetto quando non stavi cercando. Quindi, se si conosce che la revisionedi/calc/trunk è esattamente l'istantanea desiderata, è possibile specificare passando -r 901 al comando di copia svn.

(sottolineatura mia)

Problemi correlati