Anche se uso e mi piace DVCS per i miei progetti personali, e posso vedere in che modo rende più semplice la gestione dei contributi al tuo progetto da altri (ad esempio il tipico scenario Github), sembra che per una squadra "tradizionale" potrebbero esserci alcuni problemi relativi all'approccio centralizzato utilizzato 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 che ho previsto da solo, ma per favore prendi in considerazione altre considerazioni.
In un sistema tradizionale, quando provi a verificare la tua modifica al server, se qualcun altro ha precedentemente controllato una modifica in conflitto, sei obbligato a unire prima di poter controllare il tuo. Nel modello DVCS, ogni sviluppatore controlla le modifiche a livello locale e ad un certo punto spinge verso un altro repository. Quel repository ha quindi un ramo di quel file che 2 persone hanno cambiato. Sembra che ora qualcuno debba essere incaricato di gestire questa situazione. Una persona designata nel team potrebbe non avere una conoscenza sufficiente dell'intera base di codice per essere in grado di gestire la fusione 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 premere di nuovo (o devi costruire un'infrastruttura che automatizza quell'attività).
Inoltre, poiché DVCS tende a rendere il lavoro 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 aree diverse del codice, questo non è un problema. Ma sono curioso del caso in cui tutti stanno lavorando sullo stesso codice. Sembra che il modello centralizzato costringa i conflitti a essere trattati rapidamente e frequentemente, riducendo al minimo la necessità di fare grandi fusioni dolorose o che qualcuno "controlli" il repository principale.
Quindi, per quelli di voi che usano un DVCS con la vostra squadra nel vostro ufficio, come gestite questi casi? Trovi il tuo flusso di lavoro giornaliero (o più probabile, settimanale) influenzato negativamente? Ci sono altre considerazioni di cui dovrei essere a conoscenza prima di raccomandare un DVCS sul mio posto di lavoro?