Lavoro in un ufficio che richiede oltre 2 anni (e ancora contiamo) per passare a un modello di flusso di lavoro Git / Branch da uno strumento di gestione della configurazione basato su RCS. Git con gerrit, infatti, è stato installato 2 anni fa, ma le versioni e metà del team usano ancora il vecchio strumento. Il vecchio strumento era uno strumento di gestione della configurazione all'avanguardia nel 1994 e ha caratteristiche che Git / Gerrit non fornisce, ma il controllo di revisione basato su branch non è il suo punto di forza e il copia / incolla manuale è la modalità di gestione dei rami.
I ragazzi che hanno utilizzato questo strumento per 20 anni non hanno consapevolezza dei vantaggi di rami gestiti correttamente e fusione, e sono fermamente convinti che se non si apportano modifiche a tutte le fonti digitandole su una tastiera non è possibile che siano corrette .
Un altro problema con i rami si verifica anche quando i rami di codice divergono al punto che non sono più la stessa base di codice. Questo accade spesso nello scenario sopra visto che mantenere tutto in sincrono è difficile - se non è necessario un cambiamento in un repository, lo sforzo manuale per unirlo è visto come una perdita di tempo. Fatelo un paio di volte in pochi anni e la fusione automatica diventa più difficile da gestire rispetto alla fusione manuale.
Alcune cose semplici da risolvere per una persona sono impossibili da automatizzare. Poiché le unioni non sono state automatizzate, non esiste alcuna comprensione o disiplina attorno a queste cose e la fusione automatica delle filiali di solito non riesce. Un paio di difficili conflitti di unione rinforza la mentalità che non è affidabile. Le modifiche al layout del codice sono un ottimo esempio, come la modifica delle schede nello spazio bianco e l'addestramento dei cambiamenti nello spazio bianco nei file, cose che una persona non vede o non si cura, che fermano una fusione morta nelle sue tracce. Refactoring mentre si effettua una correzione di un difetto di linea, o peggio - facendo più modifiche non correlate in un commit - è facile per una persona dire quali bit sono necessari, ma uno strumento di fusione non può.
Nessuna quantità di formazione tecnica o riferimento alle migliori pratiche attuali cambierà il loro sistema di credenze. Finché non si spostano e iniziano a utilizzare la ramificazione, non si sentiranno a loro agio. Quindi una presa 22. Non si muoveranno perché non hanno fiducia in esso, non diventeranno fiduciosi fino alla mossa.
In parole povere, la maggior parte delle circostanze in cui i rami sono considerati dannosi è quando i dinasti che non sono disposti a cambiare e non li hanno mai usati hanno il controllo.