Avendo letto che sono un fanatico di Subversion, perché dovrei considerare o meno Mercurial o Git o qualsiasi altro DVCS .
Ho una domanda di follow-up correlata. Ho letto quella domanda e letto i link e i video consigliati e ne vedo i vantaggi, ma non vedo lo spostamento mentale generale di cui parlano le persone.
Il nostro team è composto da 8-10 sviluppatori che lavorano su un'unica grande base di codice composta da 60 progetti. Usiamo Subversion e abbiamo un trunk principale. Quando uno sviluppatore avvia un nuovo caso Fogbugz creano un ramo svn, fanno il lavoro sul ramo e quando hanno finito si fondono di nuovo con il tronco. Occasionalmente possono rimanere sul ramo per un tempo prolungato e unire il tronco al ramo per raccogliere le modifiche.
Quando ho visto Linus parlare delle persone che creano un ramo e non lo fanno mai più, non siamo affatto noi. Creiamo probabilmente 50-100 filiali alla settimana senza problemi. La più grande sfida è la fusione, ma siamo diventati abbastanza bravi anche in questo. Tendo a fondermi con il caso fogbugz e il check-in piuttosto che l'intera radice del ramo.
Non lavoriamo mai in remoto e non facciamo mai rami fuori dai rami. Se sei l'unico che lavora in quella sezione della base di codice, l'unione al trunk procede senza intoppi. Se qualcun altro ha modificato la stessa sezione di codice, l'unione può diventare disordinata e potrebbe essere necessario eseguire un intervento chirurgico. I conflitti sono conflitti, non vedo come qualsiasi sistema potrebbe farlo bene il più delle volte a meno che se non fosse abbastanza intelligente da capire il codice.
Dopo aver creato un ramo, il seguente checkout di 60k + file richiede del tempo, ma ciò costituirebbe un problema con qualsiasi sistema di controllo del codice sorgente che utilizzeremmo.
C'è qualche vantaggio di qualche DVCS che non stiamo vedendo che ci sarebbe di grande aiuto?