È necessario aggiungere un po 'a questo (e @GoodEnoughs):
ma questo sembra solo un piccolo fastidio per il controllo della versione distribuita.
Assolutamente no - ciò che fa una build "server" è dirti che il tuo trunk costruirà e supererà i suoi test più o meno da clean (minore è la quantità di configurazione che devi fare del tuo ambiente).
Sto pensando di passare a DVCS ma anche dopo aver fatto ciò trascinerai la mia continua integrazione dalle mie fredde mani morte.
Per fare un semplice esempio - stai sviluppando la funzione "a" sta sviluppando la funzione "b" distribuita o meno ad un certo punto devi ricucire tutto insieme - se, quando ti impegni, ti dimentichi di aggiungere un file che l'app creerà sulla tua macchina ma non lo farà da nessun'altra parte. Quindi, quando spingi la build nel tuo "trunk", l'integrazione continua si innescherà e la build fallirà e lo saprai e, si spera, prima che qualcuno tira il tuo codice non così completo, sarai in grado di fare dei passi.
Se stai lavorando a un progetto con più sviluppatori, devi essere in grado di definire da dove provengono le versioni di rilascio - il trunk in effetti - questo è vero indipendentemente da come funziona il controllo della versione.
Se hai aggiunto una funzionalità, in particolare una su cui altre persone hanno una dipendenza, essere sicuri che quando viene spinto a "vivere" si costruisce e supera i test in un ambiente diverso dall'ambiente di sviluppo è enorme. Inoltre, eseguo la distribuzione dalle build dal mio server di build, ovvero il modo in cui si specifica la build "definitiva". Alla fine avrò build di distribuzione attivate dall'utente. Il suo non va bene dire che si può lavorare intorno ad esso - non si può se ne avete bisogno (e io ho strapazzate scatole dev rotonde in un ufficio per trovare e impegnarsi file mancanti).
È tutto un po 'forte? Non lo so, ma il mio server di build è una di quelle cose che avendo non ho alcun desiderio di restituire.