Anche se utilizzo DVCS e mi piacciono i miei progetti personali, e posso vedere totalmente come rendere più semplice la gestione dei contributi al tuo progetto da parte di altri (ad es. Il tuo tipico scenario Github), sembra che per un team "tradizionale" potrebbero esserci dei problemi nel approccio centralizzato impiegato da soluzioni come TFS, Perforce, ecc. (Per "tradizionale" intendo un team di sviluppatori in un ufficio che lavora su un progetto che nessuno "possiede", con potenzialmente tutti che toccano lo stesso codice.)
Un paio di questi problemi l'ho previsto da solo, ma per favore chime con altre considerazioni.
In un sistema tradizionale, quando si tenta di verificare la modifica al server, se qualcun altro ha precedentemente effettuato il check-in in una modifica in conflitto, si è costretti a unire prima di poter effettuare il check-in. Nel modello DVCS, ogni sviluppatore controlla il proprio cambia localmente e ad un certo punto passa ad altri repository. Quel repository ha quindi un ramo di quel file che 2 persone hanno cambiato. Sembra che ora qualcuno debba essere incaricato di affrontare quella situazione. Una persona designata nel team potrebbe non avere una conoscenza sufficiente dell'intera base di codice per essere in grado di gestire l'unione di tutti i conflitti. Quindi ora è stato aggiunto un ulteriore passaggio in cui qualcuno deve avvicinarsi a uno di quegli sviluppatori, dirgli di tirare e fare l'unione e poi spingere di nuovo (o devi costruire un'infrastruttura che automatizzi quel compito).
Inoltre, poiché DVCS tende a rendere il lavoro a livello locale così conveniente, è probabile che gli sviluppatori possano accumulare alcune modifiche nei loro repository locali prima di spingere, rendendo tali conflitti più comuni e più complicati.
Ovviamente se tutti i membri del team lavorano solo su diverse aree del codice, questo non è un problema. Ma sono curioso del caso in cui tutti stiano lavorando allo stesso codice. Sembra che il modello centralizzato imponga che i conflitti vengano affrontati rapidamente e frequentemente, riducendo al minimo la necessità di effettuare fusioni grandi e dolorose o di far "poliziare" il repository principale a chiunque.
Quindi, per quelli di voi che usano un DVCS con il proprio team nel proprio ufficio, come gestiscono tali casi? Ritieni che il tuo flusso di lavoro giornaliero (o più probabile, settimanale) sia influenzato negativamente? Ci sono altre considerazioni di cui dovrei essere a conoscenza prima di raccomandare un DVCS sul mio posto di lavoro?