Git: correzione di un bug che interessa due rami

15

Sto basando il mio repository Git su un riuscito modello di branching Git e mi stavo chiedendo cosa succede se hai questa situazione:

DirechestosviluppandosudueramidifunzionalitàAeB,eBrichiedecodicedaA.IlnodoXintroduceunerrorenellacaratteristicaAcheinteressailramoB,maquestononvienerilevatosulnodoYdovelefunzioniAeBsonostatiunitieitestsonostaticondottiprimadiespandersinuovamenteedilavorareallasuccessivaiterazione.

Comerisultato,ilbugvienetrovatosulnodoZdallepersonechelavoranosullafunzioneB.Inquestafasesidecidecheènecessariaunacorrezione.Questacorrezionedovrebbeessereapplicataaentrambelefunzionalità,dalmomentochelepersonechelavoranosullafunzioneAhannoanchebisognodicorreggereilbug,dalmomentochefapartedellalorofunzione.

Dovrebbeesserecreatounramodibugfixdall'ultimonododellafeatureA(quelloderivatodalnodoY)epoifusoconlacaratteristicaA?Dopodiche,entrambelefunzionivengonouniteperlosviluppodinuovoetestateprimadelladiramazione?

Ilproblemaconquestoècherichiedecheentrambelefilialisiuniscanoperrisolvereilproblema.DatochelacaratteristicaBnontoccailcodicenellacaratteristicaA,esisteunmodopercambiarelacronologiasulnodoYimplementandolacorrezioneeconsentendocomunquealramodellacaratteristicaBdirimanerenonancorageneratomaavereilcodicefissodallacaratteristicaA?

Lievementecorrelato: convenzione di bug branch Git

    
posta Aram Kocharyan 24.06.2012 - 12:35
fonte

3 risposte

23

Utilizza un commit distinto per correggere il bug in un ramo, quindi seleziona il commit nell'altro ramo.

    
risposta data 24.06.2012 - 12:50
fonte
5

Probabilmente, non ci sono bug in A o X. Risolto il bug nel ramo B in cui è stato trovato. La correzione si propagherà a X e A nel normale corso degli eventi.

    
risposta data 24.06.2012 - 19:36
fonte
0

Sebbene non sia un flusso di lavoro popolare in git , un flusso di lavoro che è popolare in Mercurial sarebbe aggiornare alla revisione X , correggere il bug lì (come X 2 ) e poi redo merge Y (che sarebbe stata una coppia di fusioni in Mercurial).

In realtà, questo flusso di lavoro è più facile in git poiché dopo che tutti sono passati da Y a Y 2 allora i refs all'originale Y andranno persi e sarà alla fine si raccolgono i rifiuti. In hg avresti dovuto rimuovere manualmente quei commit per mettere in ordine il tuo repository.

    
risposta data 27.06.2012 - 16:08
fonte

Leggi altre domande sui tag