Seguendo git-flow come dovreste gestire un hotfix di una versione precedente?


101

Se provi a seguire il modello di ramificazione git-flow, documentato qui e con gli strumenti qui , come dovresti gestire questa situazione:

Hai realizzato una versione 1.0 e una versione 2.0. Quindi è necessario creare un hotfix per 1.0. Si crea un ramo di aggiornamento rapido dal tag 1.0 e si implementa qui la correzione. Ma allora cosa?

Normalmente dovresti unirti a master e inserire un tag di rilascio 1.1 lì. Ma non puoi unire 1.1 a un punto dopo 2.0 su master.

Immagino che potresti mettere il tag di rilascio sul ramo dell'hotfix, ma ciò creerebbe un ramo permanente accanto al master che conterrebbe un tag di rilascio. È questo il modo giusto?


possibile duplicato di Git-flow e master con più rami di rilascio paralleli [sebbene l'altra domanda sia più recente ha risposte più utili, quindi ho contrassegnato questa domanda come duplicata]
danio

Risposte:


74

Sembra che ci sia il concetto di un ramo di "supporto" in git flow. Viene utilizzato per aggiungere un hotfix a una versione precedente.

Questo thread ha più informazioni , con questi esempi:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

... fai la tua correzione, quindi:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

o usando i git flowcomandi

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

... apporta le modifiche quindi:

git flow hotfix finish 6.0.1

? mantenere questi rami di supporto o cancellarli dopo un certo periodo
Evan Hu

@EvanHu bene, di sicuro tienili finché hai quel ramo in produzione da qualche parte. Dopo di che è una questione di record storico. Potresti voler sapere come sono stati corretti gli hotfix se dovessero ripetersi.
Klas Mellbourn

Si dovrebbe fare un rilascio sulla correzione rapida, giusto? Come possiamo farlo?
Ravindranath Akila

33

Domanda interessante! Il flusso collegato presuppone che il master possa tenere traccia della produzione. Funziona solo se le versioni di produzione sono in rigoroso aumento. Ciò è generalmente vero per un sito Web che ha una sola versione di produzione.

Se devi mantenere più versioni di produzione, un ramo per monitorare la produzione non è sufficiente. Una soluzione è non utilizzare il master per tenere traccia della produzione. Invece, utilizzare rami come release1, release2ecc

In questo approccio, potresti non aver nemmeno bisogno di un hotfix branch. Potresti risolvere il problema sul release1ramo. Quando la correzione è abbastanza buona, crea un release1.1tag sul release1ramo.


È possibile modificare git-flow impostando i tag di rilascio sui rami di rilascio. Questo è un cambiamento abbastanza importante. Spezzerebbe gli script attuali. Inoltre, cosa conterrebbe il master?
Klas Mellbourn

3
L' git-flowattrezzatura non è adatta se è necessario supportare più versioni di produzione. Nel flusso di lavoro proposto in questa risposta, il master non viene utilizzato affatto. Potresti nominare il branch master di sviluppo, dopotutto è solo un nome.
Andomar

GitFlow supporta il monitoraggio di più di una versione di produzione: gitversion.readthedocs.io/en/latest/git-branching-strategies/…
Andre L

7

git-flow presume che tu stia supportando solo una riga di rilascio alla volta, opportunamente tracciata dal master. Se ne stai mantenendo più di 1, dovrai modificare il processo git-flow per avere più tracker delle tue versioni separate che stai supportando (master-1, master-2). È possibile continuare a utilizzare il master per tenere traccia della riga di rilascio più recente, in aggiunta o al posto di un tracker specifico per la riga di rilascio più recente (master al posto di master-2).

Sfortunatamente, qualsiasi strumento git-flow che potresti utilizzare dovrà probabilmente essere modificato, ma si spera che tu abbia abbastanza familiarità con il processo git-flow per gestire questo caso specifico direttamente con i comandi git.


Se modifichi il git flowprocesso, sarà qualcosa di diverso. Se un modello deve essere corretto (non solo esteso), ha lo stesso successo come afferma il suo autore. Per favore controlla la mia risposta all'argomento di cui stiamo discutendo.
Victor Yarema

0

git config --add gitflow.multi-hotfix true Questo comando sembra funzionare per me!

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.