Abbiamo appena iniziato a utilizzare git per il nostro codice di produzione e stiamo riscontrando un leggero problema nel nostro flusso di lavoro. Dobbiamo capire come gestire i miglioramenti generali del codice/le correzioni del debito tecnico che emergono mentre si lavora su una funzione.Rami di funzionalità Git e miglioramenti minori del codice
Il flusso di lavoro che abbiamo adottato consiste nell'utilizzare lo "sviluppo" come principale ramo dell'integrazione e sviluppare tutte le funzionalità sui rami di funzionalità da "sviluppare". Quando una funzionalità è completa, lo sviluppatore crea una richiesta di pull e tutti la esaminano per fornire commenti prima che vengano uniti in fase di sviluppo. Questo sembra funzionare molto bene.
Il problema è che durante lo sviluppo di routine di una funzione, lo sviluppatore può finire per voler modificare/rifattorizzare un codice comune per migliorare il sistema o eliminare alcuni debiti tecnici. Questo cambiamento è prezioso, ma non direttamente legato alla funzionalità in fase di sviluppo.
Sulla base del nostro flusso di lavoro, dovrebbe essere fatto su un ramo diverso che passa attraverso la propria richiesta pull e revisione del codice prima di entrare in sviluppo. Se li facciamo fare però, come possono ottenere il cambiamento sul loro ramo di funzionalità nel frattempo mentre aspettano che la revisione completa del codice avvenga e il codice da incorporare per lo sviluppo.
Le idee che abbiamo sono:
1) cherry-pick le modifiche dal ramo 'refactorX' nel nostro ramo di caratteristica. Continua a sviluppare e lascia che git (si spera) capisca quando ci uniamo indietro per sviluppare che ha già il cambio dal ramo del refactoring.
2) Unire il ramo "refactorX" nel nostro branch di funzionalità e continuare lo sviluppo. (nota: lo sviluppo di ramo per "refactoringX" potrebbe essere stato più avanti nella storia dello sviluppo, quindi pensiamo che questo potrebbe avere problemi)
3) Un'altra opzione più intelligente che non conosciamo ancora. :)
Quello che stiamo cercando è una guida alle migliori pratiche su come gestire questa parte del flusso di lavoro. Dopo averne parlato di più, sappiamo che verrà fuori frequentemente e vogliamo trovare un modo semplice ed efficiente per gestirlo nel nostro flusso di lavoro.
Qualche consiglio?
L'opzione 2 sembra soddisfacente, quali problemi si prevedono? – fge
L'opzione 2 sembra discutibile, perché stai incorporando tutte le modifiche successive da 'sviluppo' nel tuo ramo delle funzionalità quando lo fai (come osserva Allen). L'opzione 1 mi sembra comunque buona. –
Un'altra preoccupazione per 1 & 2: non voglio che le modifiche selezionate/unite nel ramo della funzione vengano visualizzate nelle differenze utilizzate per la revisione del codice della richiesta pull. Non riesco a pensare a un buon modo per farlo, anche se senza una ridefinizione. E dal momento che questa è una branca "pubblica" spinta al ripopolamento della società centrale, la ridefinizione sembra una "cattiva idea". – Allen