Tengo un repositorio mercurial con dos ramas permanentes, por defecto y UAT. De vez en cuando, implementamos (promovemos) una nueva versión de nuestra aplicación en el entorno UAT y lo hacemos fusionando una confirmación estable predeterminada en la rama UAT. Ocasionalmente, las cosas se corregirán con errores en la rama UAT, y estas correcciones de errores se fusionarán nuevamente a sus valores predeterminados.Mercurial: Cambios específicos de la rama siguen volviendo después de la fusión ficticia
En la rama UAT tengo que cambiar algunas cosas para fines de implementación: cadenas de conexión y varias configuraciones ambientales. Lo que intenté hacer fue hacer estos cambios en la rama UAT y enviarlos (todo como uno) justo después de haber combinado el valor predeterminado en UAT. A continuación, simulé la confluencia de este compromiso con el valor predeterminado: la creencia es que, como el valor predeterminado ahora tiene este compromiso en su ascendencia, las correcciones futuras de errores de UAT a valores predeterminados no intentarán rehacer estos cambios específicos de UAT.
Sin embargo, las cosas no han ido tan bien como esperaba. Comenzando con el muñeco-fusionado a cometer por defecto, he intentado tanto de los siguientes escenarios:
1) Make a few more commits to default and then "promote" to UAT (merge default onto UAT)
2) Make a bugfix on UAT and "backport" it to default (merge UAT onto default)
En entre correr # 1 y # 2 Me he despojado de todo de manera que ambos escenarios parten del mismo punto .
Lo que estoy viendo es que dependiendo de la última dirección fusionada, todavía tengo que inspeccionar los archivos cambiados después de hacer una u otra combinación y revertir - a veces la fusión intenta poner las configuraciones predeterminadas en UAT y, a veces, el UAT configuraciones en fusión
Si restituyo los cambios de configuración y confirmo la fusión, las fusiones futuras en la misma dirección se comportarán correctamente, pero en el momento en que voy en la otra dirección, la fusión vuelve a poner las configuraciones incorrectas en los archivos.
¿Qué me estoy perdiendo?
En el corto plazo, estoy limitado a que mi mantenedor despliegue nuestra aplicación manualmente desde su máquina. Solo tiene un clon porque es una aplicación web más antigua y cambiar la configuración de la carpeta IIS es una misión. Realmente me gustaría habilitarlo para usar un flujo de trabajo donde todo lo que necesita hacer es fusionarse de forma predeterminada, reconstruir e implementar, con la capacidad de migrar de nuevo las correcciones de errores a las versiones posteriores. Si nunca vuelvo a fusionar UAT con el valor predeterminado, sino que vuelvo a trasplantar las correcciones de errores, creo que funcionarán bien. Sin embargo, esto se convierte en un problema si hay una gran cantidad de commits de corrección de errores ... –
Tal vez podrías dejar que se confirmen los ajustes de UAT (para facilitar el mantenimiento) y luego modificarlos (pero no comprometerlos) localmente. Necesitará archivar los cambios antes de una fusión y usar '-X' para excluirlos al comprometerse (la [exclusión de exclusión] (https://bitbucket.org/aragost/exclude) puede ayudar un poco). –
Eso es básicamente lo que está haciendo en este momento: dejar de lado y quitar la estantería según sea necesario. Desafortunadamente no es transparente y, a medida que agregamos más entornos (por ejemplo, producción), tiene que ocuparse de múltiples estantes o mq, que no es ideal (donde "ideal" es el flujo de trabajo aparentemente imposible de describir que describo arriba :)). Supongo que probaremos el enfoque de trasplante por ahora y veremos cómo va eso ... –