2009-05-18 13 views
18

C'è un modo per fare qualcosa di simile a un'etichetta SourceSafe in svn? Conosco il bransch/tag, ma mi piacerebbe avere un modo più leggero di impostare semplicemente un nome per una revisione specifica.Subversion "label" come SourceSafe

risposta

2

Dovresti utilizzare i tag per questo.

6

Un tag è molto leggero, sebbene sia costituito dal comando "copia".

In subversion, le copie sono molto semplici, veloci ed efficaci. Non dovresti avere problemi di prestazioni o spazio di archiviazione.

10

I tag in Subversion sono il modo corretto per farlo. Potrebbero non sembrare "leggeri" perché sono copie di alberi, ma poiché Subversion copia molto pigramente, non occuperà spazio su disco oltre a quello utilizzato per registrare la transazione "copiata/trunk/su/tag/qualunque". Il libro di Subversion ha more information about tags.

0

Penso che se si crea un tag dal numero di revisione del trunk, è possibile iniziare a vedere i log del trunk.

2

Come modificare la posizione dell'etichetta nel registro di revisione?

Esempio: ho creato un tag denominato "versione di produzione", che segna file1.txt a revisione 8 e pochi giorni dopo, voglio lo stesso tag mi dicono che file1.txt è segnato in revisione 16

In VSS uno è in grado di "spostare l'etichetta" nel registro di revisione in questo scenario. In SVN non vorrei creare "versione1 di produzione", "versione2 di produzione" ...

+0

+1 per una buona domanda anche se viene data come risposta –

+0

Si consiglia di creare un tag separato ogni volta che si distribuisce, poiché è economico e la cronologia è utile. Puoi comunque realizzare il tuo metodo, comunque. Eliminare il tag e ricrearlo nella stessa posizione ma con la revisione HEAD corrente. Un utente che esegue un aggiornamento o esporta dall'URL riceverà ora il contenuto più recente. Il vecchio contenuto è ancora disponibile combinando l'URL con un numero di revisione esplicito. Ovviamente, se si tiene anche un tag per ogni versione, è possibile utilizzarli. E "corrente" è ora solo il numero di versione più alto. –

4

Anche se questa domanda è stata postata per un po 'di tempo e la risposta corretta dell'uso dei tag è stata presentata (ripetutamente :-) Credo che le risposte più utili forniscano non solo informazioni ma informazioni complete informazioni: spunti di riflessione, approfondimenti su come andare oltre, ecc. Ho scritto un lungo articolo che fa proprio questo, appena pubblicato come part 6 del mio Ricettario TortoiseSVN e Subversion (su Simple-Talk.com). Una delle ricette (Spostamento di un tag) risolve anche la domanda pertinente sollevata da AnT nella sua risposta e fornisce una valida argomentazione per il motivo per cui è necessario non farlo.

Ecco l'elenco delle ricette in quel capitolo per stuzzicare l'appetito intellettuale:

Gestione delle etichette

  • Etichettatura l'ultima revisione come una liberazione
  • Etichettare una revisione precedente come una liberazione
  • Etichettatura di bit e pezzi
  • Spostamento di un tag

Regolazione World Visualizza con etichette e revisioni

  • Ripristinare l'ambiente per una revisione etichettata
  • Ripristinare l'ambiente per una revisione senza etichetta
  • Comprendere la differenza tra switch e aggiornare
  • Capire la differenza tra ripristino e aggiornamento
  • Ritorno al presente da una precedente revisione
2

Se non si desidera utilizzare i rami di tag, è possibile utilizzare il numero di revisione.

Poiché SVN incrementa il revnum in modo che ogni checkin sia univoco, ciascun revnum diventa un'istantanea dell'intero repository in un dato momento. Quindi, se sai di aver inserito il tag "tag 1.0" e che è stato assegnato il revnum 232, allora puoi riprodurre quel check-in (cioè ottenere tutti i file da quella 'etichetta') verificando la revisione 232. È semplice come quello .

Tuttavia, in SVN non è possibile associare testo leggibile con un numero di revisione, quindi è necessario tenerne traccia personalmente (o trovare un pacchetto software che lo faccia per sé).