Pregunta

Tengo un instalador NSIS que anteriormente hemos construido utilizando scripts NANT que copian algunos archivos alrededor y se ejecutan a través de una tarea makensis.exe ejecutivo para construir el exe instalador. Una vez finalizada la secuencia de comandos Nant, tengo la estructura compelte para nuestro CD y también nuestra descarga.

Sólo estaba haciendo un encuentro de sourcesafe sobre un escritorio sin utilizar y que sirva como una caja de acumulación, la compilación de allí. A veces tendríamos un par de archivos registramos que arreglar algo crítico. En esos casos me gustaría ir a la caja de acumulación, y obtener de forma muy selectiva sólo los archivos, para evitar que otros archivos modificados que no estamos listos para liberar aún. Básicamente soy capaz de permitir el desarrollo de continuar y selectivamente incluir ciertos archivos modificados en el instalador para la liberación.

Ahora ya no tenemos una caja de conexión, y la necesidad de construir desde nuestro servidor. Así que soy la creación de CI de fábrica para que el desarrollador puede patear la acumulación apagado sin interacción remota en el servidor. El único problema que estoy luchando con, es la mejor manera de seguir permitiendo que este control selectivo de cambio que se produzca. El concepto predeterminado de CI que implementa CI fábrica está muy bien para el desarrollo de "cabeza" interna. Sin embargo, también quiero configurar un proyecto CCNet que se ejecuta sólo en la demanda a través de una fuerza de construcción de este tipo "versión pública" de construcción.

Esto es lo que he cerebro irrumpió hasta el momento, sin estar seguro de lo bien que esto funcionará, en todo caso (aún averiguar cuáles CCNet y CI fábrica son todos acerca). La "versión pública" CCNet proyecto config / build sería configuración tal que sería no obtener la última. Las modificaciones serían no desencadenar una acumulación. Desde el otro proyecto CCNet que está utilizando la metodología IC del defecto (lo llamaremos el "proyecto de CI") de conseguir más tardar, cuando se detectan cambios, entonces estos dos proyectos no pueden compartir el mismo directorio de trabajo. Por lo que la "versión pública" necesitaría una copia de trabajo diferente, por lo que sus archivos no se actualizarán cuando se dispara la construcción del proyecto de CI. El desarrollador necesitaría remoto en el servidor, uno de VSS, hacer selectivamente un entrar en la "versión pública" 's copia de trabajo, y luego forzar una acumulación a través de CI fábrica.

La desventaja de que veo con esto es
1) Tener a distancia para realizar obtiene de forma selectiva.
2) No tengo idea de cómo permitir que un solo proyecto IC Fábrica de tener dos copias de trabajo diferentes de la carpeta del producto, de manera que cada bloque de configuración del proyecto tiene su propio.
3) Tengo miedo de qué tipo de extrañeza que esto podría causar. No estoy muy seguro todavía cómo especificar un bloque de control de código fuente en el bloque de configuración del proyecto CCNet, pero le impiden hacer un recibir las últimas cuando se acumula. Todavía estoy pensando poco a poco lo que son las cosas en secuencias de comandos y pueden ser fácilmente llevados a cabo sin romper otras cosas, frente a lo que no está destinado a ser mucked alrededor con y / o no se puede configurar.

Me gustaría saber acerca de cómo otros se ocupan de este problema de liberar selectivamente los cambios, si usted tiene una situación similar. Me veo obligado a VSS, por lo que mi necesidad inmediata es resolver esto con esto en mente, pero, al mismo tiempo que estaría interesado en escuchar cómo manejar esto con otros sistemas de control de origen. Supongo que probablemente tendría una rama que es su última rama desarrollos, y luego fusionar los cambios en el tronco siempre que lo desee para liberarlos? Realmente no confío en VSS para la ramificación / fusión, y creo que los conceptos de ramificación puede ser un poco demasiado trabajo y la curva de aprendizaje para esta tienda. Como he dicho, sin embargo, historias con otros sistemas de control de origen serían conocimientos útiles futuro para mí.

Gracias de antemano.

¿Fue útil?

Solución

Se necesita una estructura ramificada en su repositorio para facilitar esto. Algo así como el método de la rama de liberación. Seleccione sólo los individuos pueden comprometerse con esta rama (o tener una liberación / estable para eso). Configure su CI manual de lanza para tirar de la rama de lanzamiento como la liberación de todas las noches a promover Milestone o definitiva a partir de ahí. No me gusta la idea de modificar manualmente las cosas en su máquina de construcción. Configurar los cambios en el control de versiones, en un lugar seguro para preparar su liberación y vamos CI construir a partir de allí, pero desencadenado manualmente.

Vea estos patrones de ramificación . Sugerí C3, CodeLine-per-liberación, a menudo llamada la liberación de ramificación.

Heres un artículo en VSS de ramificación que incluye una enlace a la fusión.

miradas similar.

Tal vez usted podría trasladarse a otro sistema de control de código fuente con un mejor soporte para este tipo de cosas. Cualquier sugerencia de las personas con EM por ahí?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top