Usi la convenzione branch/tags/trunk?


7

Seguite sempre la convenzione di mettere rami, tag e directory trunk al livello più alto del vostro repository Subversion? Ultimamente, ho smesso di preoccuparmi e non è successo niente di male (ancora)!

Dovrebbe essere possibile spostare gli alberi delle directory se è necessario crearli. Sto creando problemi per dopo?

12

Hai già provato la ramificazione o l'etichettatura? Fino ad allora, non ci sono problemi. Tuttavia, un ulteriore vantaggio dell'utilizzo di rami, tag, convenzioni di trunk è che è esattamente questo: una convenzione. Le persone si aspettano di vederlo, quindi sanno cosa fare quando devono biforcarsi.

  0

Non ci sono pochissimi tag in questi repository, poiché sono destinati alla documentazione e alla gestione dei progetti piuttosto che allo sviluppo di software attivo. 23 set. 082008-09-23 20:00:24


0

No, ho abbandonato questo approccio per i progetti attualmente in coda. Mentre il concetto sembra molto valido, sembra solo perdere più tempo di quello che si risparmia nella pratica.

+2

Fino a quando non è necessario creare un ramo o taggare un rilascio. A quel punto perderai ore di sforzi per lo sviluppatore spostando la base di codice esistente. È più facile prendere i 30 secondi per creare quelle directory all'inizio. 23 set. 082008-09-23 19:54:12

  0

Mi dispiace apatico, non occorrono ore per creare un ramo o un tag in base alle esigenze ... 23 set. 082008-09-23 19:56:53

  0

No, ma una volta spostato il codice dalla radice in tronco, ci sono un sacco di sviluppatori e processi automatizzati che puntano al nulla 23 set. 082008-09-23 20:21:12


1

Questo dipende dalla grandezza del progetto. Abbiamo alcune cose (concesse, in git, ma il concetto è lo stesso) che è abbastanza grande. Ogni sviluppatore usa la sua propria filiale, c'è un ramo di test e mainline. Contrassegniamo anche le versioni e, se esistono correzioni specifiche per la versione, viene creato un ramo in modo che le correzioni possano essere integrate in modo abbastanza semplice.

Questa configurazione presenta vantaggi: non ci si accarezza l'un l'altro durante lo sviluppo. Ma il rovescio della medaglia è che abbiamo bisogno di un integratore per mettere i commit dal ramo degli sviluppatori al ramo di testing, e poi a quello principale.

Se il progetto è di piccole dimensioni, è solo un sovraccarico, ma non si sa mai quanto sarà grande un progetto.

  0

Tags in Git sono almeno utili: puoi vedere quale tag è un commit prima/dopo, agiscono come mnemonici per commit, ecc. ecc. In tag di sovversione sono un cittadino di seconda classe e una completa perdita di tempo. Non puoi fare "svn log -r (nome-tag)" o qualsiasi altra cosa. Persino CVS ha taggato meglio. 23 set. 082008-09-23 19:49:52

  0

SVN considera tutto come una directory. Per taggare un ramo, lo si copia in una directory nella directory ./tags/. Allo stesso modo per le filiali in SVN. In git branch e tag sono idependent e fatti correttamente 23 set. 082008-09-23 22:14:00


0

Hai almeno un bagagliaio? In caso contrario, quando è necessario eseguire il branch o il tag, è necessario che siano presenti nella directory del progetto root, insieme al codice/ai contenuti effettivi. Yikes!

EDIT: Credo che si potrebbe creare una cartella tronco, poi spostare tutto in quella, quindi creare i rami ecc ...

A quelli che dice "basta farlo in un secondo momento, non perdere tempo, etc. .. "Sinceramente, quanto overhead è per crearli all'inizio del tuo progetto? 2 minuti, in alto? Perché non farlo solo allora? Ci vorrà molto più tempo per spostare tutto in un secondo momento, anche se si finisce solo per dover ramificarsi 1 volta su 5, penso comunque che avresti impiegato meno tempo iniziando con un ramo, un tag, una struttura del tronco.

  0

Non è il momento di crearli, è la necessità di digitare l'elemento percorso aggiuntivo durante l'uso quotidiano che mi irrita! ~~~ 23 set. 082008-09-23 19:50:36

  0

Perché non utilizzare uno dei vari frontend SVN (integrazione IDE, TortoiseSVN, ecc.)? 23 set. 082008-09-23 19:52:07


1

Ho appena iniziato a utilizzare effettivamente la convenzione e sono d'accordo with Danimal. Se hai una build in QA e un'altra in Production, e un'altra in un nuovo sviluppo di funzionalità pazzesco-sperimentale, è bello passare rapidamente avanti e indietro tra loro.


0

Come ho detto in What do "branch", "tag" and "trunk" mean in Subversion repositories?, poiché branch e tag sono gli stessi, non sei obbligato a seguire alcuna convenzione ma la tua.
Soprattutto per un piccolo progetto con sviluppo sequenziale (ovvero senza necessità di sforzi paralleli tra lo sviluppo corrente, manutenzione di versioni precedenti, esplorazione di quadri alternativi, ...)


0

Generalmente manterrò il mio tronco nella radice di il repository e spostarlo solo in una cartella Trunk se in realtà ho bisogno di creare un tag di un ramo. Penso che con SVN, purché la tua struttura sia logica, non dovresti avere problemi a riordinarla più tardi se le tue esigenze cambiano.


0

Uso trunk, tag e rami su ogni progetto. Seriamente, quanto è difficile creare 2 directory extra quando si crea il progetto. C'è qualche vantaggio nel seguire la convenzione solo per mantenere la coerenza.Trovo di avere molti tag (ogni push di un'app esterna all'ambiente di sviluppo viene sottoposto a versioning e taggato). Non ho molti rami perché generalmente non lavoro con persone di cui non mi fido con un commit prima della revisione. Quindi, di solito quando ottengo filiali, è perché ho una divisione permanente della base di codice, solitamente per clienti diversi. Una volta che il codice diventa inconciliabile, generalmente interrompo un ramo e lo sposto nel suo stesso tronco.


0

Ultimamente sto usando un modello più concentrato in agile e puoi dare un'occhiata here.

È molto importante seguire alcune norme nel controllo della versione, anche se si utilizza un modello ben definito, la versione del codice è in natura qualcosa che ti porta a commettere errori, fusioni disordinate e tutte quelle cose cattive, quindi fai attenzione .

Questo modello attribuisce responsabilità a ciascun repository e non consente di sovrapporre la posizione di produzione, consegna e codice sottocostruzione.


0

seguo la convenzione per numerose ragioni

  1. materiale di riferimento e le procedure che utilizzano il b/t/t convenzione può essere applicato facilmente e velocemente alla struttura svn repo.
  2. Tutti gli sviluppatori che entrano nel team che hanno familiarità con la convenzione hanno una curva di apprendimento minima per abituarsi alla struttura del repository SVN.
  3. Dove i tronchi delle filiali & hanno un vantaggio immediato ed evidente, è solo quando ci si trova a dover attraversare cronologie e registri per coprire il proprio o il proprio culo aziendale, che si comprende il vantaggio di mantenere una procedura di codifica coerente.

In breve potrebbe non essere immediatamente evidente il motivo per cui la convenzione è una buona cosa, ma è quando si ha bisogno di aiuto, un consiglio, o qualche pazzia di gestione che diventa una manna dal cielo proverbiale.


0

Mi piace utilizzare i rami per "mini-progetti" per una semplice dimostrazione di concetti. È veloce, facile e generalmente aiuta a tenere il passo con il tuo progetto principale. Metto la prova dei concetti nella directory dei rami poiché non è parte del progetto principale ma è di valore per il progetto.

Come altri hanno già detto, io uso i tag per le versioni. La maggior parte delle versioni che faccio sono in versioni, quindi in genere ho solo un file zip del pacchetto o l'installer della versione.


2

La risposta rapida è "fai tutto ciò che meglio si adatta alle tue procedure".

Come detto Danimal, la struttura di ramo/trunk/tag è una convenzione. Tuttavia, non sono d'accordo che è la posizione del b/t/t che è importante, semplicemente l'esistenza di loro.

Quello che dovresti avere è un luogo che è ovviamente designato per le filiali, da qualche parte designato per il tuo bagagliaio e lo stesso per i tuoi tag. Esattamente dove cadono dipende molto dalla struttura del tuo repository e dalla natura dei file che stai conservando.

Ad esempio, se si gestiscono più progetti in un repository, è probabile che abbia più senso creare le directory b/t/t sotto i propri progetti. Se hai moduli distinti all'interno del tuo progetto, allora il b/t/t dovrebbe essere creato sotto le directory del modulo.

Chiediti quale sarà il pezzo logico più grande che desideri diramare e guidare da questo.


0

No. Non le ultime 3 situazioni di lavoro. Lavoro con non programmatori che hanno bisogno di scrivere, correggere e richiamare gli script di elaborazione. La programmazione è per lo più casuale, con lavori occasionalmente più profondi o più grandi. Non ci si può aspettare di seguire le pratiche degli sviluppatori di software di grande successo. La terminologia del repository standard può scontrarsi con il gergo utilizzato nel campo in cui operiamo. Quindi creiamo le nostre directory di repository.


0

In un ambiente molto semplice, è possibile evitare di escludere il ramo, il tag, il trunk dalla parte superiore del repository SVN. Ad esempio, se stai utilizzando SVN per i tuoi incarichi universitari, non sarai molto preoccupato per le modifiche al codice dopo che è stato rilasciato al tuo cliente (la persona che ha contrassegnato l'incarico), e quindi potresti tranquillamente rinunciare ramo, tag, tronco e solo una struttura. (Effettivamente, il tutto è il "bagagliaio".)

Se, d'altra parte, hai gestito il codice distribuito su 700 siti diversi e suddiviso tra linee di prodotto separate, verrai follemente non usare 'branch, tag, trunk' vicino alla parte superiore della struttura (c'è un caso ragionevole per dividere i tuoi prodotti prima di scendere lungo il percorso BTT), dal momento che avrai bisogno di sapere quale codice è andato dove, e essere in grado di separare le principali attività di riscrittura (le cose che si fanno nel bagagliaio) dalle correzioni in loco per aiutare un sito che ha un problema immediato (che si fa in un ramo, quindi unire nel tronco). E se vuoi essere in grado di rispondere alla domanda "Perché il Foobar ha smesso di funzionare quando abbiamo lanciato la patch 1.2.3?" quindi i tag sono essenziali.


1

Ho scritto strumenti in passato per automatizzare alcuni pezzi di SVN. La creazione di un repository di base è uno di questi. Passaggio 1: creare un repository vuoto. Passaggio 2: creare cartelle trunk, rami e tag - commit Passaggio 3: copia script hook in nuovo repository

Uno dei miei script di hook è quello di assicurarsi che gli elementi nella directory dei tag non possano essere modificati. Questo rende i tag hanno un significato diverso dai rami.