Hemos migrado una gran cantidad de código fuente a git y estamos muy contentos con nuestra solución actual. Nos gustaría tener nuestros archivos de configuración del servidor versionados en el mismo sistema, pero hay algunas cosas que no funcionan de la manera que nos gustaría y espero que alguien pueda compartir su experiencia aquí.
Esta pregunta es similar a ¿ Usar el control de revisión para los archivos de configuración del servidor? , pero tenemos algunos requisitos especiales que no funcionan con las sugerencias sobre esa pregunta.
La configuración actual usa subversion para los archivos de configuración. El repositorio correspondiente se parece a esto
/ # raíz del repositorio + - www.domain.com/ # configuración para www El | \ - etc / El | \ - apache2 / + - dev.domain.com/ # configuración para dev El | + - etc / El | \--optar/ El | \ - app1 / El | \ - configuración conf / # para app1 en dev \ - staging.domain.com/ # configuración para la puesta en escena
Con subversion esto funcionaría bien, porque es posible simplemente verificar un subdirectorio de un repositorio. Además, puede usar svn: externals para señalar una estructura común para varias configuraciones de configuración diferentes. Solo tuvimos que lidiar con los archivos .svn en todos los directorios versionados. Git, por otro lado , no tiene svn: las comprobaciones externas y dispersas siempre requieren que la ruta desde la raíz al directorio real sea la misma.
Al analizar la migración a git, traté de escribir los requisitos principales para el control de versiones de configuración del servidor:
- solo queremos un repositorio único
- debería ser posible empujar fácilmente los cambios al control remoto central
- los conjuntos de cambios deben contener el autor real
¿Hay una buena manera de tener toda la configuración en un repositorio y solo tener una subruta como copia de trabajo? Actualmente estoy considerando dos enfoques, pero quería hacer esta pregunta aquí primero
- Si el repositorio .git está en una ubicación fija, por ejemplo, en algún lugar de / var , podríamos vincularnos a la subruta desde el directorio de trabajo "objetivo". El problema principal: no sabría una forma de "vincular" desde / etc a otro directorio para importar solo el contenido, excepto la simulación de archivos individuales
- Encontré otra alternativa en esta pregunta SO , sugiriendo tener múltiples ramas en un repositorio. Esto ciertamente aumentaría la complejidad, pero podría vernos intentarlo de esta manera.
El uso de git en una sola máquina para la gestión de archivos de configuración funciona bien, pero creo que debe haber alguien que lo esté usando de la forma en que nos gustaría usarlo.
Gracias
Kariem
/
debido a los permisos de escritura.