Vorrei strongmente consigliare di eseguire una prova comparativa controllata per scoprire quale sia la via migliore per il tuo progetto invece di sprecare gli sforzi e rovinare la comunicazione di squadra su inutili dibattiti "teorici".
In uno dei miei progetti passati abbiamo perso tempo in quel modo per più di un anno finché non abbiamo deciso di fare una prova di questo tipo. Innanzitutto, lo gestiamo per alcuni mesi, monitorando attentamente il tempo trascorso sulle diramazioni reso il modo "consolidato". Quindi, abbiamo trascorso alcuni mesi a gestire e monitorare l'approccio "alternativo".
Dopo aver completato il nostro confronto, abbiamo semplicemente studiato i risultati del monitoraggio e abbiamo scelto il modo in cui sembrava meno dispendioso (se la memoria serve, abbiamo avuto circa 4
ore a settimana media per sviluppatore utilizzando un modo contro 0.5
per un altro modo). Nessun dibattito, nessun sentimento ferito, solo affari. Le persone ottengono numeri oggettivi, confrontano e prendono decisioni informate, è così semplice.
This will prove difficult... I can't imagine an objective way to reconcile this.
Beh, nel nostro caso non è stato davvero difficile. Probabilmente sembra difficile allo stesso modo in cui è difficile discutere le differenze di approccio alla ramificazione "teoricamente". Quando esegui la versione di prova reale , tutti questi elementi generici magicamente vengono suddivisi in casi d'uso piccoli, concreti e gestibili che sono molto più facili da valutare molto .
Le cose da tenere a mente sono che 1) alcuni mesi menzionati sopra sono stati dimostrati sufficienti per valutare attentamente gli sforzi che si suppone siano correlati all'uno o all'altro approccio e 2) mentre la prova è in esecuzione, è più importante solo scrivere con cura le cose, lasciando che le discussioni su di esso vengano trattate separatamente. Era tipo,
-
"trascorso un'ora integrandosi con il cambio di componenti mezzo cotto commesso da John"
va al ticket con etichetta branching-strategy-1
-
"trascorso un'ora a studiare il bug introdotto nel recente ramo di unione da Paul"
va al ticket con etichetta branching-strategy-2
Alla fine del processo, questi dati sono "estratti" da tracker di problemi , discussi e chiarito. I risultati vengono esportati in Excel, la differenza viene calcolata e la preferenza viene effettuata in base a quello.
È molto importante qui che i membri del team registrino qualcosa che assomiglia a forse , perché se non sono registrati, i dati forse importanti vengono persi. Al contrario, per i dati che è registrati, non è difficile eliminare le cose che sono ritenute irrilevanti in una discussione più approfondita all'analisi retrospettiva.
- ... E sì, in il nostro processo abbiamo lasciato alcuni record in quel modo, ... e no, non c'era un acceso dibattito lì, perché 1) si trattava di discutere Casi d'uso reali, concreti, pratici e materiali fino al punto di sentirsi abbastanza strategia agnostica . E poiché 2) la squadra era interessata a trovare il modo in cui salva i nostri sforzi per cose più interessanti piuttosto che in dibattiti religiosi sul fatto che succursale o non ramo .
Questo in qualche modo ricorda una legge di Postel (aka principio di robustezza ),
be conservative in what you do, be liberal in what you accept from others
Per quanto riguarda le situazioni in cui Branching è una pessima idea , quando abbiamo preparato trial run sopra abbiamo studiato le informazioni disponibili (sommmato in un'altra risposta ai programmatori ) - solo per scoprire se forse possiamo evitare di passare alcuni mesi nell'esecuzione delle prove comparative.
Da ciò che abbiamo appreso allora, la risposta è "dipende dal progetto":
there's no commonly agreed "best" branching strategy applicable to any project
most resources seem to agree that choosing productive strategy depends on the particular project specifics
side note. Based on above it looks like any changes to project branching strategy need to be tested, measured and compared to other options tested...