Do you use this or a similar git
branching workflow?
Usiamo un flusso di lavoro simile al lavoro, ma un po 'meno complicato. È comunque molto ispirato da questo flusso di lavoro, dal momento che ho letto questo articolo molte volte. Ho persino il pdf del modello di branching stampato a colori accanto alla mia scrivania:)
Do you consider this a productive
approach?
Produttive. Come definisci la produttività? Bene, nella mia mente è più importante avere un'alta qualità, almeno per cercare di ottenere sempre una qualità migliore. Miglioramento costante del processo ecc. Se è possibile produrre codice di qualità, la produttività ne trarrà vantaggio. Quindi la domanda è davvero: questo migliora la qualità del software? E la mia risposta è sicuramente sì.
Ciò che amo di più con questo tipo di modello di ramificazione è che introduce rami in diversi livelli di qualità. Più a destra nella foto, maggiore stabilità e maggiore qualità. Il master branch è sacro e tutti i commit su di esso dovrebbero essere considerati versioni stabili del software. Più a sinistra vai, più sperimentale e più bassa è la stabilità.
Non appena testate nuove funzionalità e correzioni di errori, potete trasferirle gradualmente da sinistra a destra e quindi spostarvi nel codice con alta qualità esattamente quando sapete che il codice soddisfa i requisiti di qualità richiesti dal codice. Bene, almeno in teoria, dal momento che non è possibile testare tutto al 100% e sapere con certezza che il codice non contiene bug, perché avrà sempre bug. Ma ti consente di mantenere un'alta confidenza.
Nulla succhia più come programmatore, che lavorare in un sistema in cui nessuno ha fiducia nel codice, perché sa che fa schifo e che ci sono un sacco di bug in esso.
Do you see any flaws with this
approach? Any potential downside?
È importante pensare al modello di ramificazione in modo che si adatti bene alle esigenze della tua organizzazione. Solo perché questo modello funziona bene per alcune persone, non significa necessariamente che sia ottimale o desiderabile per un altro.
Ci sono sempre trade off e anche in questo caso. Un compromesso è il numero di rami rispetto alla complessità. Introducendo molti tipi di rami diversi, si aumenta la complessità del flusso di lavoro. Ad esempio, potrebbe essere semplicemente sbagliato forzare sempre le persone a creare un nuovo ramo di funzionalità, quando stanno cercando di correggere un bug semplice cambiando un paio di righe di codice.
Sappiamo tutti che i bug sono più o meno complicati da risolvere. Quindi, quando viene scoperto un bug insignificante, potresti voler ridurre la complessità e l'amministrazione per eliminare l'overhead aggiuntivo e lasciare che le persone si impegnino direttamente ad es. il master o sviluppare ramo. Ma poiché la natura delle tue correzioni diventa più complicata, vale la pena di aggiungere ulteriori spese generali per creare nuove filiali per loro. Soprattutto se non sei sicuro della dimensione e della lunghezza o se vuoi migliorare la collaborazione tra te e gli altri sviluppatori.
If you have a better approach, would
you mind sharing, or providing a link
to an article or discussion about it?
Questo è senza dubbio un buon approccio e potrebbe essere adatto alla maggior parte dei casi poiché la maggior parte di noi ha processi di sviluppo simili, ma potrebbe non essere adatto a tutti. Ti esorto vivamente a riflettere su come gestisci il tuo codice in questo momento e provare a creare un modello di ramificazione che si adatti a quello che già possiedi.
Il punto più importante è iniziare con git e il resto seguirà naturalmente. Inizia semplice e migliora gradualmente! Sii creativo!
Saluti