Git: correzione di un bug che interessava due rami


16

Sto basando il mio repository Git su un modello di ramificazione Git di successo e mi chiedevo cosa succede se hai questa situazione:

inserisci qui la descrizione dell'immagine

Supponiamo che io stia sviluppando su due rami di funzionalità A e B e che B richieda il codice di A. Il nodo X introduce un errore nella funzione A che influisce sul ramo B, ma questo non viene rilevato nel nodo Y dove le funzioni A e B sono state unite e i test sono stati condotti prima di ramificarsi di nuovo e lavorare alla prossima iterazione.

Di conseguenza, il bug viene rilevato nel nodo Z dalle persone che lavorano sulla funzione B. In questa fase si decide che è necessario un bugfix. Questa correzione dovrebbe essere applicata a entrambe le funzionalità, poiché anche le persone che lavorano sulla funzione A hanno bisogno di correggere il bug, poiché fa parte della loro funzionalità.

È necessario creare un ramo bugfix dall'ultimo nodo della funzione A (quello che si ramifica dal nodo Y) e quindi unirlo alla funzione A? Dopo di che entrambe le funzionalità vengono nuovamente unite per svilupparsi e testate prima di diramarsi?

Il problema è che è necessario unire entrambi i rami per risolvere il problema. Poiché la funzione B non tocca il codice nella funzione A, esiste un modo per modificare la cronologia nel nodo Y implementando la correzione e consentendo comunque al ramo della funzione B di rimanere non unito ma avere il codice fisso dalla funzione A?

Leggermente correlato: convenzione di ramificazione dei bug di Git


6
Non puoi semplicemente correggere il bug nel ramo 'sviluppo' e poi unirlo in entrambe le funzioni A e B?
tdammers,

Hmm, sembra che sarebbe meglio. Potrebbero esserci conflitti di unione nella funzione A ma penso che sia inevitabile qui.
Aram Kocharyan,

Se non hai effettuato ulteriori sviluppi nel ramo "sviluppo" e la correzione dei bug non si sovrappone alle modifiche nel ramo "caratteristica A", non otterrai alcun conflitto.
tdammers,

Risposte:



5

Probabilmente, non ci sono bug in A o X. Correggi il bug nel ramo B dove è stato trovato. La correzione si propaga a X e A nel normale corso degli eventi.


Grazie, è fattibile purché il bug non influisca sulla funzione A.
Aram Kocharyan il

0

Sebbene non sia un flusso di lavoro popolare in git, un flusso di lavoro popolare in Mercurial sarebbe l'aggiornamento alla revisione X, correggere il bug lì (come X2 ) e quindi ripetere l'unione Y(che sarebbe stata una coppia di fusioni in Mercurial).

In realtà, questo flusso di lavoro è più facile in gitquanto dopo tutto è passato da Ya Y2 poi gli arbitri per l'originale Yandranno perse e si finirà per essere garbage collection. In hgvoi avrebbe dovuto spogliare manualmente quei impegna a riordinare il vostro repository.

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.