2011-01-12 16 views
5

Mi equipo está cambiando a Mercurial. Todos nuestros proyectos tienen un archivo de configuración (web.config o app.config, y algunos archivos de bat también, somos una tienda de C#). Estos archivos deben ser parte del repositorio. Cuando un desarrollador clona el repositorio, se necesitan cambios locales en sus archivos de configuración para que funcionen. Por ejemplo, el archivo de configuración de un proyecto puede necesitar una cadena de conexión a la base de datos del desarrollador u otra información específica del entorno. No queremos que estos cambios terminen en el repositorio. Y de vez en cuando hacemos cambios en estas configuraciones que sí necesitan entrar en el repositorio y distribuirse al equipo y eventualmente al cliente.¿Cómo configuro Mercurial para no confirmar archivos de configuración específicos?

¿Cuál es la forma más fácil para nosotros de configurar o usar Mercurial para que estos archivos no se comprometan por accidente? Me gustaría que me obliguen a realizar una confirmación explícita de dichos archivos, pero las fusiones del repositorio se incluirán automáticamente en las actualizaciones.

Esto tiene que ser un problema que alguien más ha enfrentado, pero como novatos de Mercurial, todos estamos perdidos por la mejor solución.

Editar:

Una pregunta similar que pueda compartir algunas soluciones comunes, pero no es lo mismo que esta pregunta, se puede encontrar en: Conditional Mercurial Ignore File

Estoy incluyendo esto en caso de que otra pregunta podría proporcionar la respuesta que estás buscando.

+0

posible duplicado de [Archivo Mercury Igor Conditional] (http://stackoverflow.com/questions/4502108/conditional-mercurial-ignore-file) –

+0

Si lee las dos preguntas, no son lo mismo . Son preguntas diferentes que pueden compartir algunas soluciones comunes. Voy a continuar y editar mi pregunta para apuntar a la otra pregunta como una pregunta relacionada. –

+0

Duplicado de [Pregunta de flujo de trabajo Mercurial - Cómo manejar archivos de configuración] (http://stackoverflow.com/questions/1378953/mercurial-workflow-question-how-to-handle-config-files). La solución parece muy diferente. –

Respuesta

6

La forma típica de manejar esto es almacenar plantillas para los archivos de configuración en su repositorio, y agregar los archivos de configuración reales a la lista de ignorar en Mercurial.

De esta forma, tiene copias prístinas sin modificar de cada archivo de configuración disponible en todo momento, incluso para nuevos desarrolladores que clonan desde cero, pero para hacer que los archivos de configuración se puedan utilizar, debe hacer una copia local de al nombre del archivo de configuración real, y modificar el archivo. También puede usar programas de comparación/fusión, como Beyond Compare, para comparar una nueva versión del archivo de plantilla con su copia local de una versión anterior, para ver qué cambió y agregar los bits faltantes.

Si necesita evitar con fuerza la confirmación de los archivos de configuración reales, necesita un enganche previo o previo al envío que lo haga.

+0

Me gustó tu idea y la subí. Lo discutimos, pero se nos ocurrió una solución diferente. Gracias por la respuesta. Nos dio otra opción más a considerar. –

+0

¿Y quiere decir que tendrá un proyecto sin compilación? – Restuta

1

En el archivo .hg/hgrc hacer esto:

[defaults] 
commit = -X Projectname/web.config 

(asumiendo "Nombre del Proyecto" es el subdirectorio de proyecto)


Editar:

Además, si usted está utilizando Tortoise HG - agregue esto también:

[tortoisehg] 
ciexclude = Projectname/Web.config,Projectname/App_Data/DBFile.mdf 

(por cierto ¡tenga en cuenta la barra ADELANTE en la ruta de la carpeta! ¡Incluso en Windows!)

Cuestiones relacionadas