Come si può usare efficacemente git-flow su un progetto in cui viene mantenuta più di una versione principale?


18

Ho migrato molti dei miei progetti nel flusso di lavoro git flow e lo adoro. Tuttavia, non ho trovato le migliori pratiche che mantengano le cose fluide in modo fluido quando si lavora con un progetto in cui viene mantenuta più di una versione principale alla volta.

In particolare, non sto mantenendo una "versione gratuita" e una "versione a pagamento" o qualsiasi altro modello parallelo, sto parlando di un progetto in cui viene rilasciata la versione 1 e rimane supportato con versioni secondarie (1.1, 1.2, ecc. .) fino al rilascio della versione 3, a quel punto i punti 2 e 3 verrebbero mantenuti, fino al rilascio di 4 ... si ottiene l'idea.

In che modo hai, o vorresti, mantenere contemporaneamente due o più versioni supportate di un progetto in un flusso di lavoro gitflow?


Non ho alcun esempio di bancomat, ma i progetti che conosco hanno usato repository separati per diverse versioni principali e patch di backport dall'uno all'altro.
ProdigySim

@ProdigySim: Grazie per il punto dati, ma sono solo io o aggiungerei un certo sovraccarico per tracciare e gestire?
HedgeMage,

@ProdigySim Sospetto che quei progetti non abbiano utilizzato uno strumento con le capacità di branching e fusione di git.
Rein Henrichs,

@Rein Usano Mercurial. Non penso che le ramificazioni sarebbero molto pulite in termini di tracciamento di versioni principali parallele del software.
ProdigySim

Quindi il mio sospetto era corretto. E sì, è abbastanza pulito se lo strumento lo supporta correttamente. git e il kernel Linux lo fanno entrambi in questo modo.
Rein Henrichs,

Risposte:


10

man gitworkflows, il nonno del flusso di lavoro 'git flow', descrive le linee guida generali sul flusso di lavoro git; l'uso di pu, next, mastere maintrami; e come maintviene gestito. Se si dispone di più rami di manutenzione, è possibile denominarli, ad esempio maint/1.x, maint/2.xe così via.

La chiave non è tanto come usare i comandi git, ma come costruire un processo ragionevole. Decidi quali cose sono importanti per te (facilità di backport?) E crea (e documenta) un flusso di lavoro che soddisfi questi vincoli.


Ma questo risponde alla domanda? Vale a dire, git-flow supporta un modello di rilascio flessibile come descritto nella domanda o si torna ai comandi git di base? ("gitworkflows" descrive l'utilizzo di base del flusso di lavoro git, pre-git-flow). Git-flow è stato creato (apparentemente) per semplificare i processi di unione / diramazione git, in modo che i team (con vari gradi di abilità git-fu) possano concentrarsi sulla codifica e evitare errori di "fusione errata" che richiedono molto tempo. È possibile w / git-flow per mantenere e sviluppare v1.2. {1,2,3, ..} contemporaneamente a v2.5. {1,2,3, ...}? Forse con filiali di rilascio a lungo termine? O master1, master2, ...?
michael,

0

In sostanza, si dovrebbe duplicare il master, releasee developrami per ogni versione principale si gestiscono. Il modo in cui interagiscono tra loro rimane lo stesso. Per featurerami, basta assicurarsi di ramo dal ramo più antico che si intende fondersi di nuovo in , che impedisce tirando in dipendenze indesiderate. Quindi quando unisci featurenuovamente il tuo ramo, fai solo ulteriori fusioni in ogni ramo della versione principale più recente appropriata.


1
Il punto principale di master non è includere tutte le versioni rilasciate?
HedgeMage,

@HedgeMage, in un ciclo di rilascio più lineare, è il caso, ma è altamente poco pratico per le versioni principali parallele.
Karl Bielefeldt,

Questa sembra la soluzione più pratica, a meno che non ci siano trucchi provati e veri che utilizzano hotfix o simili di cui non sono a conoscenza. Ho cercato un modo per introdurre git-flow ed essere ancora in grado (come sfortunato prerequisito) di mantenere il nostro modello di versione esistente, in cui dobbiamo mantenere / sviluppare versioni precedenti (non solo hotfix). Quindi v5.1.x rimarrà (con nuove funzionalità aggiunte, bug corretti, ecc.) Un paio di anni dopo il rilascio di v6.1.x. Circa 2-3 versioni principali supportate e sviluppate in qualsiasi momento. Ma le correzioni di bug devono essere applicate a ogni versione in cui esiste il bug.
michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.