Al momento utilizziamo Subversion e TeamCity, passeremo all'utilizzo di Mercurial (in particolare il forno come utenti di FogBugz).
Ovviamente ciò comporterà cambiamenti, si spera, miglioramenti nei nostri modelli di sviluppo (tutti e due di noi!), ma l'unico problema con cui sto discutendo è come strutturare le cose in modo tale da godere ancora dei benefici dell'integrazione continua Il server CI (che ci sono e resteranno benefici è un dato di fatto, la cui discussione è al di fuori della portata della questa domanda).
Con SVN ci stiamo impegnando in un numero limitato di repository centrali, in effetti uno per progetto (più o meno una soluzione di Visual Studio), quindi è facile innescare una build e ottenere la rassicurazione che tutti i file sono stati commessi e che non ci sono dipendenze vaganti ecc. ecc. Ma se vogliamo sfruttare al meglio il mercurial vorremmo avere più istanze di repository - dove mi aspetterei che i cambiamenti in genere fluiscano verso un repo definitivo "in diretta". Il problema con cui sto combattendo è che il repository live mi sembra troppo "tardivo" per attivare i miei build CI. OTOH un build CI per progetto per sviluppatore è probabilmente eccessivo (e causa altri problemi). Penso che il live sia troppo tardi perché - dato che possiamo / dovremmo avere più repository (cloni di) - live dovrebbe essere distribuibile mentre vogliamo costruire / eseguire test (unità al commit, integrazione a intervalli programmati) su commit dello sviluppo.
Sto pescando un po 'ma questo perché una delle cose che un repository centrale di subversion ne dà uno (io, con il nostro setup!) è molta chiarezza su cosa costruire quando.
NB. Non sto chiedendo dei meccanismi per usare Mercurial con un'integrazione continua - Ho questo che funziona come un trattamento per un progetto personale, i suoi modelli e strutture e pratiche di lavoro / flusso di lavoro che sto cercando di far girare la testa.