Devi aggiungere un po 'di questo (e @GoodEnoughs):
but this only sounds like a minor
nuisance for distributed version
control.
Enfaticamente no - che cosa fa una build "server" ti dice che il tuo baule costruirà e passerà i suoi test più o meno da pulito (meno è la quantità di configurazione che devi fare del tuo ambiente).
Sto pensando di passare a DVCS ma, anche dopo averlo fatto, trascinerete la mia integrazione continua dalle mie fredde mani.
Per fare un semplice esempio - stai sviluppando la feature "a" che sta sviluppando la funzione "b" distribuita o no a un certo punto devi cucirla tutti insieme - se, quando ti impegni, dimentichi di aggiungere un file l'app si baserà sulla tua macchina ma non lo farà da nessun'altra parte. Quindi quando spingi la build sul tuo "tronco", l'integrazione continua si innescherà e la build fallirà e tu saprai e spero che prima qualcuno estrae il tuo codice non proprio così completo che sarai in grado di prendere passi.
Se stai lavorando su 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 dal modo in cui funziona il controllo della versione.
Se hai aggiunto una funzione, in particolare quella in cui altre persone hanno una dipendenza, puoi essere sicuro che quando viene spinto a "vivere" che crea e passa test in un luogo diverso dal tuo ambiente di sviluppo è enorme . Inoltre, distribuisco dalle build del mio server di build - il suo tipo di come si specifica la build "definitiva". In definitiva avrò build di distribuzione attivate dall'utente. Non è corretto dire che si può lavorare su di esso - non è possibile se ne avete bisogno (e io ho criptato attorno a scatole di sviluppo in un ufficio per trovare e commettere file mancanti).
È tutto un po 'strong? Non lo so, ma il mio server di build è una di quelle cose che non ho voglia di restituire.