Estas publicaciones parecen relacionadas, pero mi cerebro está comenzando a derretirse, tratando de pensar esto: P
Mi empleador acaba de comenzar a usar el control de fuente, principalmente porque antes de contratar a más desarrolladores, el "repositorio" era el disco duro del único desarrollador, que trabaja principalmente desde su casa. Todo el código .NET que había escrito se verificó en masa , y hay muchas funciones duplicadas (leer: copiar-pegar). En este momento, nuestro sistema SCM es un respaldo glorificado.
Me gustaría extraer parte del código duplicado en las bibliotecas compartidas. Dejo solo el repositorio original para que no rompamos nada: podemos mover y / o refactorizar el código existente cuando sea necesario. Así que configuré un repositorio solo para el nuevo código, incluidas las bibliotecas.
Mi problema gira en torno a la versión de las bibliotecas sin que nos veamos envueltos en un proceso excesivo: habiendo reconocido que necesitamos un enfoque más coherente, con más desarrolladores que escriben código muy similar, la administración y los otros desarrolladores están abiertos a reorganizar las cosas, pero probablemente no lo hará. baje bien si la solución comienza a afectar la productividad.
La solución ideal en mi mente obsesiva es construir las bibliotecas por separado, con cada proyecto dependiente construido contra versiones deliberadamente elegidas y compatibles de ellas. De esa manera, sabemos exactamente qué clientes tienen qué versiones de qué bibliotecas, pueden reproducir errores de manera más confiable, mantener ramificaciones de lanzamiento independientes para productos y bibliotecas, y no romper los proyectos de los demás al cambiar el código compartido.
Sin embargo, esto hace que la actualización de las bibliotecas sea engorrosa, particularmente para el desarrollador que trabaja desde casa. Espero que las bibliotecas cambien rápidamente, al menos inicialmente a medida que (finalmente) unimos los bits comunes. Es muy posible que esté pensando demasiado en esto y estaríamos bien compilando todo contra las confirmaciones de biblioteca más recientes, pero al menos me gustaría estar preparado para el día en que decidamos que algunos componentes deben ser versionados de forma independiente y repartido. El hecho de que algunas de las bibliotecas tengan que instalarse en el GAC hace que el control de versiones sea particularmente importante.
Entonces mi pregunta es: ¿qué me estoy perdiendo? Siento que me he concentrado en una solución y ahora estoy tratando de encontrar variaciones que hagan que los cambios sean más suaves. ¿Qué tipo de estrategias has usado para resolver este tipo de problema antes? Me doy cuenta de que esta pregunta está por todas partes; Haré todo lo posible para limpiar y aclarar cualquier punto de incertidumbre.
Y por mucho que me encantaría usar Mercurial, ya hemos gastado dinero en un SCM comercial centralizado (Vault) y el cambio no es una opción. Además, creo que el problema aquí va más allá de la elección de la herramienta de control de versiones.