Actualmente usamos Subversion y TeamCity, vamos a pasar a usar Mercurial (específicamente Kiln, ya que somos usuarios de FogBugz).
Obviamente, esto dará como resultado cambios, ojalá mejoras, en nuestros patrones de desarrollo (¡los dos!), Pero el único problema con el que estoy luchando es cómo estructurar las cosas para que aún disfrutemos de los beneficios de la integración continua / nuestro servidor CI ( que hay y seguirá habiendo beneficios es un hecho, cuya discusión está fuera del alcance de esta pregunta).
Con SVN nos comprometemos con un número limitado de repositorios centrales, efectivamente uno por proyecto (más o menos una solución de Visual Studio), por lo que es fácil activar una compilación y obtener la seguridad de que todos los archivos se han comprometido y que no hay dependencias perdidas, etc., etc. Pero si vamos a aprovechar adecuadamente el mercurial, vamos a querer tener más instancias de repositorio, donde esperaría que los cambios generalmente fluyan hacia un repositorio definitivo "en vivo". El problema con el que estoy luchando es que el repositorio en vivo me parece demasiado "tarde" para activar mis compilaciones de CI OTOH Una compilación de CI por proyecto por desarrollador es probablemente excesiva (y causa otros problemas).
Estoy pescando un poco, pero eso es porque una de las cosas que un repositorio de subversión central le da a uno (¡yo, con nuestra configuración!) Es mucha claridad sobre qué construir cuando.
Nota: no estoy preguntando acerca de la mecánica del uso de mercurial con integración continua: tengo que trabajar como un regalo para un proyecto personal, sus patrones y estructuras y la práctica de trabajo / flujo de trabajo que estoy tratando de entender.