Da quando ho cominciato a lavorare (5 anni fa) ho sempre cercato di introdurre le meraviglie di un qualsivoglia version control system collaborativo, ma quando è stato deciso di usare CVS (e io ero contento, meglio di niente) lo si è usato come mero contenitore di backup in cui ciascuno faceva le proprie commit separatamente (e allora sono stato molto meno contento). Con grande fatica sono riuscito a introdurre l'idea che non è vietato fare il checkout dal progetto di un altro, ma quanto alla commit è tutta un'altra storia.
Ora può essere che con l'anzianità mi diano un po' più retta (anche se paradossalmente sulle cose nuove si tende a dare più credito alle facce nuove e non a chi è lì da anni e ormai lo si crede fossilizzato in un ruolo specifico), e salvo contrordini cercherò di creare tutta una serie di pappe fatte per usare con successo Mercurial, anche se so già che in pochi si impegneranno per capirne il funzionamento e usarlo propriamente. Piuttosto si perdono le giornate dietro a problemi triviali, ma guai cambiare il metodo di lavoro.
Voi che esperienze avete avuto in proposito (che potete raccontare)?
Io ho usato:
- Visual SourceSafe (che non ha la gestione della concorrenza - se due committano insieme si sfascia il database intero

)
- svn (che non e' male, ma versiona "un po' cosi' " i file binari, ha una gestione del merge terribile, non ha branching - lo simula con la copia, ma poi come fai i merge? - e non ha una UI "propria", anche se ci sono dei tool third-party, come Tortoise).
- Alienbrain (non e' terribile, ma a volte fa cose strane).
- Perforce (che e' il tool di scc piu' bello che io abbia mai usato, funziona bene sempre e per tutto).
Mercurial e git... non so - gli scc distribuiti non mi piacciono.
Mentre ne comprendo il senso, l'utilita', e la filosofia (che e' buona), non c'ho proprio voglia di star dietro alla bega dei commit in locale, e poi da locale al repository, e poi questo l'ho committato in locale e sul repository locale di quell'altro pero' sul repository "centrale no", e A ha bisogno di questo che ha bisogno del commit di B che pero' e' legato al commit di C e via.
A sensazione, finisce che si passa piu' tempo a star dietro agli scc che non a scrivere codice.