Di recente ho iniziato a mettere il mio codice sotto il controllo della versione (in laboratorio sto lavorando, sotto SVN, e i miei codici in github (ovviamente con git)). Prima di usare il controllo versione, facevo qualcosa del genere. Avevo una cartella con il nome della libreria, all'interno di molte cartelle con il numero di versione. Ogni volta che volevo iniziare a lavorare su una versione più recente, creavo una copia dell'ultima versione, cambiavo il nome con la nuova versione e iniziavo l'implementazione.
Questo tuttavia sembra ridondante quando la cartella viene messa sotto il controllo della versione. A parte la ridondanza, se qualcuno vuole ottenere l'ultima versione, sarebbero scaricando tutte le versioni se ha appena import
s / clone
s.
Ora vedo molti modi per farlo con il controllo della versione, ma dato che sono nuovo, non so quale sarebbe più gestibile.
Metodo 1: utilizzo dei tag
Se avessi capito correttamente i tag, avresti il tuo ramo principale, commetti qualsiasi modifica tu abbia e tagli con una versione. Quindi, quando vuoi ottenerne una copia funzionante, ottieni quella con un determinato tag. (correggimi se sbaglio)
Metodo 2: versioni ramificate
In questo metodo, il ramo principale sarebbe il ramo di sviluppo. Ogni tanto viene creata una versione stabile (diciamo v1.2.0
), crei un ramo per quella versione e non ti impegni mai. In questo modo, se si desidera scaricare una determinata versione, si ottiene il codice da quel ramo. Anche se ho detto che non ti impegni mai, potrebbe essere possibile eseguire correzioni di bug e impegnarsi nel ramo di una versione precedente per mantenere in esecuzione la versione precedente. Ad esempio, se la versione corrente è v2.0
, ma ci sono persone che vogliono usare v1.2
, è possibile ottenere un altro ramo v1.2
, vale a direv1.2.1
e commettere le correzioni di bug, o semplicemente mantenere la versione uguale v1.2
e semplicemente commettere le correzioni di bug.
Quindi i rami sarebbero così:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
In questo modo hai rami per ogni aggiornamento di versione minore. (Si noti che nel grafico sopra, v1.2.1 e v1.2.2 o creati dopo il rilascio di v2.0.0, quindi non facevano parte dello sviluppo tra v1.2.0 e v2.0.0. Considerarlo come supporto per le versioni precedenti)
Metodo 3: sviluppo ramificato
Questo metodo è l'opposto del precedente. Il ramo principale sarebbe l'ultima versione stabile. Ogni volta che lavori su una nuova versione, crei un ramo (per lo sviluppo), lavori sul tuo codice e quando è stabile, uniscilo con il ramo principale.
In questo caso, i rami sarebbero così:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Probabilmente questo deve essere fatto insieme ai tag giusto?
La domanda!
Comunque, la mia domanda è quella basata sulla tua esperienza, quale di questi metodi si rivela più pratico? Esiste un metodo migliore conosciuto là fuori (che forse non ho capito da solo)? Come si fanno comunemente queste cose?