2009-03-30 16 views
216

Eventuali duplicati:
What do “branch”, “tag” and “trunk” really mean?Cosa sono trunk, branch e tag in Subversion?

Che cosa è un tronco, ramo e tag in Subversion e quali sono le migliori pratiche per usarli?

Quali strumenti posso utilizzare per Subversion in Visual Studio 2008?

+0

... combinato con: http://stackoverflow.com/questions/453481/subversion-plugin-to-visual-studio –

+2

http://stackoverflow.com/questions/16142: "* [What do" branch "," Tag "e" trunk "significano veramente?] (Http://stackoverflow.com/questions/16142/what-do-branch-tag-and-trunk-really-mean) *". –

risposta

275

Il trunk è la linea principale di sviluppo in un repository SVN.

A ramo è una linea laterale di sviluppo creata per rendere il lavoro più ampio, sperimentale o perturbante senza fastidiosi utenti della versione trunk. Inoltre, i rami possono essere utilizzati per creare linee di sviluppo per più versioni dello stesso prodotto, come avere un posto dove eseguire il backport di correzioni di bug in una versione stabile.

Infine, tag sono marcatori per evidenziare le revisioni notevoli nella storia del repository, di solito le cose come "questo è stato rilasciato come 1.0".

Vedere la versione HTML di "Version Control with Subversion", in particolare Chapter 4: Branching and Merging o acquistarlo su carta (ad esempio da amazon) per una discussione approfondita dei dettagli tecnici.

Come altri (ad esempio Peter Neubauer sotto) l'implementazione sottostante come /tags/branches e /trunk directory è solo conventional e non in alcun modo applicata dagli utensili. La violazione di queste convenzioni genera confusione, poiché ciò interrompe le abitudini e le aspettative degli altri che accedono al deposito. È necessario prestare particolare attenzione per evitare di commettere nuove modifiche nei tag, che devono essere congelati .


Io uso TortoiseSVN ma nessuna integrazione di Visual Studio. Tengo aperta la finestra di dialogo "Verifica modifiche" sul secondo monitor per tutto il tempo, così posso rintracciare i file che ho toccato. Ma vedi la domanda "Best SVN Tools", per ulteriori consigli.

+5

Immagino che ankh sia la migliore per me. Posso fare quasi tutto direttamente all'interno dello studio visivo. Grazie !!! –

+1

Fondamentalmente, le risposte fornite da @ Peter-Neubauer e KOGI (sotto) sono probabilmente più vicine al vero. Come hanno notato, la risposta di David Schmitt qui spiega semplicemente il _convention_ per come vengono usate tipicamente queste directory - ma in realtà non c'è nulla di magico in quelle cartelle di per sé, o in che modo vengono utilizzate. Grazie a David Schmitt, ma + 1 agli altri per delineare questa fondamentale differenza. – rondoagogo

+2

"Probabilmente" l'OP ha chiesto delle migliori pratiche, non dell'implementazione (IMHO piuttosto debole) di quelle. –

17

Un ottimo punto di partenza per conoscere Subversion è http://svnbook.red-bean.com/.

Per quanto riguarda gli strumenti di Visual Studio, mi piace AnkhSVN, ma non ho ancora provato il plug-in VisualSVN.

VisualSVN fa affidamento su TortoiseSVN, ma TortoiseSVN è anche un bel complemento per Ankh IMHO.

+0

Dove hai avuto l'idea che Ankh si basi su Tortoise? Afaik che non è il caso, solo per VisualSVN. – Joey

+0

Non so dove ho avuto quell'impressione ma ho pensato che fosse necessario. In entrambi i casi penso che sia bello avere la tartaruga come un complimento, ma grazie per avermi fatto vedere! –

+0

Ho ankh installato senza tartaruga. –

7

Una linea è considerata la base di codice principale, una diramazione derivata del trunk. Ad esempio, si crea un ramo se si desidera implementare una nuova funzione, ma non si vuole influenzare il tronco principale.

TortoiseSVN ha una buona documentazione e un ottimo strumento di diff.

Uso Visual Studio e utilizzo VisualSVN e TortoiseSVN.

9

Per utilizzare Subversion in Visual   Studio   2008, installare TortoiseSVN e AnkhSVN.

TortoiseSVN è veramente facile da usare software di controllo di controllo di revisione/controllo della versione/sorgente di Windows. Poiché non è un'integrazione per un IDE specifico, puoi usarlo con qualsiasi strumento di sviluppo ti piaccia. TortoiseSVN è gratuito. Non è necessario ottenere un prestito o pagare un intero stipendio per utilizzarlo.

AnkhSVN è un Subversion SourceControl Provider per Visual Studio. Il software consente di eseguire le più comuni operazioni di controllo della versione direttamente dall'IDE di Microsoft Visual Studio. Con AnkhSVN non è più necessario lasciare l'IDE per eseguire attività come la visualizzazione dello stato del codice sorgente, l'aggiornamento della copia di lavoro di Subversion e l'accettazione delle modifiche. Puoi anche sfogliare il tuo repository e puoi collegare il tuo strumento diff preferito.

5

Se siete nuovi a Subversion si potrebbe voler controllare questo post su SmashingMagazine.com, appropriatamente intitolato Ultimate Round-Up for Version Control with SubVersion.

Copre per iniziare con SubVersion con collegamenti a esercitazioni, materiali di riferimento, & suggerimenti di libri.

Copre gli strumenti (molti sono finestre compatibili) e cita AnkhSVN come plug-in compatibile con Visual Studio. I commenti menzionano anche VisualSVN in alternativa.

4

Una fantastica utilità gratuita da utilizzare se si dispone di un team di sviluppatori è SVN Monitor. Serve come un battito cardiaco per il tuo albero, che ti dice quando ci sono aggiornamenti, possibili conflitti, ecc. Tuttavia non è altrettanto utile per uno sviluppatore solista.

32

Le directory "trunk", "branches" e "tags" sono convenzioni in Subversion. Subversion non richiede di avere queste directory né di assegnare loro un significato speciale. Tuttavia, questa convenzione è molto comune e, a meno che tu non abbia una buona ragione, dovresti seguire la convenzione. I collegamenti del libro che altri lettori hanno fornito descrivono la convenzione e come usarla.

22

La risposta di David Schmitt riassume molto bene le cose, ma penso che sia importante notare che, per SVN, i termini "ramo", "tag" e "tronco" non significano nulla. Questi termini sono puramente semantici e influenzano solo il modo in cui noi, come utenti del sistema, trattiamo queste directory. Si potrebbe facilmente chiamarli "main", "test" e "releases". Finché tutti coloro che usano il sistema comprendono come utilizzare correttamente ogni sezione, non importa in realtà come vengono chiamati.

+0

Sì, è vero. Subversion non ti limita con tali convenzioni di denominazione. È solo una raccomandazione. Grazie per la tua risposta, ha aiutato. –

+0

Quindi, per esempio, la sovversione conosce il concetto di "revisione"? Ogni singolo commit è solo un'istantanea dell'intero repository? Come fai a sapere se qualcuno cancella per sbaglio il 50% dei tag di rilascio con uno dei loro check-in? Non dovresti costantemente guardarlo per quello? –

+0

@ebyrob è passato un po 'di tempo da quando ho usato SVN, ma IIRC, SVN tiene traccia delle diff tra le revisioni, NON intere istantanee. Indipendentemente da ciò, e in qualsiasi VCS, è possibile "eliminare" i tag di rilascio (o qualsiasi altro file/cartella) che non si desidera eliminare. Ho messo "delete" tra virgolette, però, perché non è mai veramente andato, è sempre nella cronologia e può sempre essere ripristinato (tranne forse 1 * molto * caso marginale in GIT, penso) – KOGI

Problemi correlati