Al lavoro usiamo SVN, ma solo nel nome. Non si diramano o si fondono. Conserviamo due copie del repository, una che funge da ramo "tag" che viene copiato quando eseguiamo una distribuzione e conservato per correzioni di bug e tipo di funzionalità "questo deve andare dal vivo" immediatamente. Dobbiamo ricordare di copiare le modifiche apportate in una copia nell'altra copia (il "tronco"). Abbiamo una dozzina di progetti all'interno di una singola cartella nel repository, invece di dividerli. In breve, l'unica cosa che usiamo SVN è riuscire a commettere. Tutto il resto è fatto manualmente.
Ho valutato Mercurial; Ho usato Git in passato (sono l'unico del team che ha utilizzato un DVCS), e raccolgo rapidamente Mercurial. Sto discutendo l'introduzione di Mercurial al resto della squadra come un "modo migliore" di fare le cose perché la ramificazione è un gioco da ragazzi, la fusione è molto più semplice, e possiamo commettere le cose a livello dei contenuti del nostro cuore e solo spingerle verso il centro ramo quando sono pronti. Avremmo tutti i vantaggi di SVN (e non stiamo ottenendo molti benefici in questo momento poiché nessuno capisce veramente SVN) e per le nuove funzionalità non abbiamo bisogno di avere tonnellate di file non voluti, quindi se dobbiamo eseguire il rollback Siamo fottuti. Il flusso di lavoro sembra un po 'più semplice - dobbiamo solo ricordare che "Commit" è locale e "Push" è come il commit di SVN, e "Pull" è come l'aggiornamento di SVN (ciò che il team definisce "ottieni l'ultima").
È un buon approccio da adottare? Tieni presente che il team è molto flessibile e che andrà avanti con tutto ciò che migliorerà la nostra qualità di lavoro e renderà più facile le cose - il CIO mi ha anche chiesto quando ho menzionato come non stavamo usando SVN per il suo potenziale "È c'è qualcosa di meglio che possiamo usare? " così anche lui è d'accordo.