Tengo un archivo en mercurial que quiero que las máquinas dev saquen el archivo, pero quiero que el servidor de implementación NO extraiga el archivo (tiene modificaciones especiales que las máquinas dev no tienen) . ¿Es esto posible, o debería tener una solución personalizada de inserción al servidor en lugar de simplemente hacer un jg pull?Archivo Conditional Mercurial Ignore
Respuesta
Una forma típica de hacer esto sería hacer lo siguiente:
se almacena una copia de cada archivo en el repositorio, y nombrarlos correctamente. Por ejemplo, si el archivo en cuestión es web.config
, que almacenaría los dos siguientes en el repositorio:
web.server.config
web.dev.config
continuación, se añade un paso construido para asegurar el archivo correcto se ha copiado en el archivo real web.config
, se puede utilizar un archivo por lotes:
if "%COMPUTERNAME%" == "SERVER" copy web.server.config web.config
if not "%COMPUTERNAME%" == "SERVER" copy web.dev.config web.config
a continuación, ignoraría web.config sí mismo a través .hgignore:
glob:web.config
¿Es esto algo que se puede resolver fuera del control de la versión? Por ejemplo, incluya el archivo en todas las copias del repositorio, pero habilite o deshabilite su uso con variables de entorno o algo similar. Esto no suena como algo que la mayoría de los sistemas de control de versiones están diseñados para manejar, a menos que utilice hacks desagradables para hacer cosas como agregar/quitar/parchear archivos después de la actualización.
Una opción es crear un archivo especial hgignore para el servidor de implementación, que podría o no podría ser incluido en el repositorio. Luego, en el archivo hgrc del servidor, especifique la ruta al archivo especial hgignore con la variable ignore
.
Esto garantizaría que el servidor de implementación ignorará las actualizaciones del archivo, pero podría actualizarse como siempre para las máquinas de desarrollo.
Una variante de la respuesta de Karlsen que uso siempre.
Tengo /config
o /etc
directorio en el proyecto. Ese directorio contendrá a menudo configuraciones de muestra como:
dev.yaml
ci_server.yaml
Entonces mis aplicaciones tirar de /etc/app.yaml
que es un enlace a la configuración correcta dependiendo del huésped que está siendo ejecutado en.
La mejor manera de hacerlo de esta manera es que no tiene rutas de código variantes (las ramas del script por lotes) que elimina un posible vector de error. Esto le permite ejercer la misma ruta de código que se utilizará en producción (hasta dónde buscar el archivo de modificación).
- 1. ¿Cómo dejar que Mercurial ignore todo excepto el archivo * .cs?
- 2. ¿Cómo hacer que mercurial ignore todos los archivos ocultos?
- 3. Mercurial ignore-file para desarrollo de Eclipse y Android
- 4. Conditional DataTemplate
- 5. Makefile conditional include
- 6. Jade Inline Conditional
- 7. Conditional Inner Join
- 8. SQL Conditional Donde
- 9. Visual Studio 2012 Conditional Bundling
- 10. Mercurial: ningún archivo ~/.hgrc
- 11. Mercurial .hgrc archivo
- 12. Rails 3 ActiveRecord conditional includes?
- 13. Make MSTest respect [Conditional()] attribute?
- 14. Mercurial: cómo ignorar los cambios en un archivo rastreado
- 15. Git ignore push solo
- 16. hg local ignore
- 17. Asignar variable en Java while-loop conditional?
- 18. ruby inject with conditional in block?
- 19. SQL: Selección condicional dentro de Conditional Select
- 20. ¿Cómo crear la declaración Conditional Xpath?
- 21. Make git ignore rename
- 22. ¿Entrar en un solo archivo con Mercurial?
- 23. Mercurial: determine dónde se eliminó el archivo.
- 24. Mercurial revert/retroout un solo archivo
- 25. Programmatically Ignore Cout
- 26. ¿Cómo hacer svn ignore en un solo archivo?
- 27. Git global ignore no funciona
- 28. Git and Rails: ignore database.yml
- 29. JavaScript Regex Ignore Case
- 30. IntelliJ y svn: ignore
Acepto, pero este archivo es necesario tanto en el servidor como en las máquinas de desarrollo. Es un archivo de configuración con rutas a web urls/cadenas de conexión db/etc, y estos valores son diferentes en el servidor que las máquinas de desarrollo. – Jan
¿Cambian a menudo? –
no muy a menudo. – Jan