Unione di feature branch incompleti e revisione del codice

3

Utilizziamo il flusso di lavoro del flusso git e talvolta succede che abbiamo filiali di funzioni longeve. Naturalmente possiamo unire dal ramo di sviluppo al nostro ramo di funzionalità, quando un altro ramo di funzionalità viene completato e unito al ramo di sviluppo. Tuttavia, è una buona idea unire direttamente da altri rami di funzionalità, vale a dire prima che siano stati completati? Ciò non creerà la duplicazione della revisione del codice e potenziali conflitti, perché i revisori potrebbero finire per rivedere lo stesso commit (s) più volte, potenzialmente con commenti diametralmente opposti da diversi revisori se il cambiamento è controverso, senza che nessuno se ne accorga? Oppure, lo stesso cambiamento logico potrebbe divergere nei due rami di funzionalità e quindi diventare due modifiche leggermente diverse.

Idealmente vogliamo che le nostre storie siano indipendenti, ma anche se sono teoricamente indipendenti, ci sono spesso alcune modifiche parziali come il refactoring di basso livello e il lavoro di correzione in un ramo che potremmo voler riutilizzare in un altro ramo.

Che cosa suggerisci di fare in una situazione del genere? Copiare e incollare manualmente le modifiche non sembra essere di aiuto, sembra infatti nascondere semplicemente il problema. Certo, possiamo cercare di evitare questo problema dando maggiore priorità alla revisione del codice e alle dimostrazioni, cercando di rendere le storie più piccole, ecc., Ma penso che questo problema si verificherà ancora di tanto in tanto.

    
posta Robin Green 18.08.2015 - 18:11
fonte

1 risposta

1

Questo è un problema comune con tutti i sistemi di controllo del codice sorgente. È un problema di comunicazione, forse aggravato dalla facilità con cui si possono apportare cambiamenti globali a livello globale. Hai delineato le soluzioni più comuni:

  • Rendi il lavoro svolto in un ramo di funzionalità più piccolo, in modo che sia più facile da integrare e confrontare con il ramo principale.
  • Assegnare una priorità all'integrazione dei rami di caratteristiche il prima possibile. Non permettere che i rami diventino stantii.

Altre idee:

  • Non consentire "lavori di refactoring e fixup di basso livello" in qualsiasi ramo tranne uno, il ramo più importante.
  • Quando si confrontano le modifiche in una funzione, confrontare solo con la fonte originale da cui era derivata. Potrebbe essere necessario rifare il lavoro per integrarlo.
  • Chiunque faccia grandi cambiamenti globali deve comunicare con tutte le altre persone che lavorano su tutti gli altri rami. Cerca di riunire tutti i rami prima che vengano apportati questi tipi di modifiche. Metti un blocco su ulteriori diramazioni fino a quando non è completato.
risposta data 19.08.2015 - 01:15
fonte

Leggi altre domande sui tag