Necesito agregar un poco a esto (y @GoodEnoughs):
pero esto solo suena como una molestia menor para el control de versión distribuido.
Enfáticamente no, lo que hace una compilación de "servidor" es decirle que su troncal construirá y pasará sus pruebas más o menos desde cero (cuanto menor sea la cantidad de configuración que necesita hacer de su entorno).
Estoy contemplando un cambio a DVCS, pero incluso después de hacerlo, arrastrarás mi integración continua de mis manos frías y muertas.
Para tomar un ejemplo simple: está desarrollando la característica "a", está desarrollando la característica "b" distribuida o no en algún momento, necesita unirlo todo, si, cuando se compromete, olvida agregar un archivo que la aplicación construirá en su máquina pero no lo hará en ningún otro lado. Entonces, cuando empuje la compilación a su "troncal", la Integración Continua se activará y la compilación fallará y sabrá, y con suerte, antes de que alguien extraiga su código no tan completo, podrá tomar medidas.
Si está trabajando en un proyecto con múltiples desarrolladores, debe poder definir de dónde provienen las versiones de lanzamiento, la troncal en efecto, esto es cierto independientemente de cómo funcione su control de versiones.
Si ha agregado una característica, especialmente una en la que otras personas tienen una dependencia, para poder estar seguro de que cuando se la empuja a "vivir", crea y pasa las pruebas en otro lugar que no sea su entorno de desarrollo es enorme. Más que eso, despliego desde compilaciones desde mi servidor de compilación, es como especificar la compilación "definitiva". Finalmente, voy a tener compilaciones de implementación activadas por el usuario. Su no es bueno decir que se puede trabajar alrededor de ella - no se puede, si lo necesita (y yo he revueltos cajas dev redondos en una oficina de encontrar y comprometer los archivos que faltan).
¿Es todo un poco fuerte? No lo sé, pero mi servidor de compilación es una de esas cosas que tengo y que no deseo devolver.