Se si dispone di diramazioni di branch, tag e trunk anche per piccoli progetti?


7

Ho una miscela di piccoli e grandi progetti in SVN. Alcuni di loro sono così piccoli che non riesco a prevedere me stesso ramificazione o taggatura.

Quindi, dovrei continuare a utilizzare la convenzione trunk/branch/tag folder anche se sono abbastanza sicuro che le directory branch/tag non verranno utilizzate per i progetti più piccoli? Mi sembra che potrebbe essere eccessivo.

Pensieri su questo?

  0

@KingNestor, modificato il titolo per riflettere un po 'meglio ciò che stai chiedendo. Buona domanda però! 22 feb. 092009-02-22 06:33:24

19

Per rispondere direttamente alla domanda nel titolo: no, non è necessario. I repository SVN possono essere organizzati in qualsiasi struttura di cartelle che si sceglie.

Detto questo, è probabilmente una buona idea mettere almeno tutto in una cartella trunk per ora, in modo che se in seguito cambi idea e decida che ramificazioni o tagging sarebbero utili, puoi aggiungere branch/tag cartelle facilmente, senza dover spostare tutto intorno.

+1

Ovviamente, in SVN è facile spostare le directory dopo il fatto. Quindi, se non li inserisci ora e decidi di averne bisogno in seguito, non è davvero un grosso problema. 14 mag. 092009-05-14 20:42:22


2

Sono convenzionali, quindi cosa fa male aggiungerli. Se il tuo progetto arriva al punto in cui ne hai bisogno, allora è molto più facile averli a posto fin dall'inizio piuttosto che cercare di aggiungerli dopo il fatto.


6

Io uso le directory branch/tag/trunk in Subversion anche per progetti banali. È praticamente a costo zero e ne vale la pena in coerenza. So sempre come verrà presentato il mio progetto, se mai avrò bisogno di fare un checkout.


0

Nel mio repository SVN ho una singola directory trunk/branch/tag. Metto tutti i miei progetti in trunk e organizzo il mio ramo e taggato separatamente le directory in base ai progetti che effettivamente raggiungono uno stato taggable. La convenzione potrebbe suggerire di utilizzare una directory branch/tag/trunk per ogni progetto, tuttavia ciò può risultare poco pratico se non ci si aspetta di essere taggati e ramificati.

Anche i progetti personali possono beneficiare di tagging e ramificazioni non frequenti prima di riscritture importanti o dopo una lunga interruzione.


0

In genere (o abbastanza ovviamente), il branching/tagging è estremamente utile in team, dove molti programmatori lavoreranno con la sorgente contemporaneamente. Ogni codificatore lavora nel proprio ramo quindi non c'è alcun rischio di salvare il lavoro di qualcun altro.

Come sviluppatore one-man-esercito, ho ancora trovato ramificazione/codifica utile quando:

  1. ho bisogno di fare un ramo sperimentale senza rinunciare alla fonte di lavoro corrente. Lo ricomincio se il codice sperimentale si dimostra migliore.

  2. Se ho diversi componenti separati, può essere utile etichettarli con un nome che indica il numero di versione del progetto e inserirli in una cartella di tag denominata dopo il progetto. Questo aiuta a mantenere le schede quando vuoi tornare alla versione 1.0.5.10 e devi sapere cosa è cambiato nel componente Foo. Le note di commit potrebbero non essere abbastanza istruttive.


0

Nella mia esperienza, l'organizzazione 'trunk/branch/tag' è un layout piuttosto ben utilizzato per il controllo del codice sorgente. L'ho visto implementato in un certo numero di organizzazioni diverse che utilizzano strumenti diversi (ClearCase, SVN, CVS, solo per citarne alcuni). L'installazione ClearCase con cui lavoro attualmente è leggermente più sofisticata (contorta?), Ma, in generale, ha seguito un layout molto simile.

Anche se non è richiesto in SVN, mi raccomando caldamente di abituarmi a questo tipo di layout, inclusa l'unione con/da diversi rami e il trunk.

Per i progetti personali, trovo che il tagging sia un valido mezzo per preservare le versioni definitive e immutabili. I rami sono tipicamente riservati alle tangenti sperimentali quindi non distruggerò la versione più recente (stabile) del mio codice prima che la realtà entri a calci.