Política para almacenar files de configuration en SVN

La mayoría de nuestra configuration de proyectos C # se guarda en files * .ini. Principalmente, estos files contienen muchas secciones que afectan todos los aspectos del comportamiento de los progtwigs. Pero además de los datos de configuration habituales, algunas de las secciones son vulnerables, como la cadena de connection db o la contraseña del server. Intentamos mantener estas secciones en los siguientes formularios:

[Database] user=testuser database=testdb password= 

Pero cuando el desarrollador está probando la aplicación, debe completar la configuration para iniciar la aplicación. Es bastante común que algunas de las passwords estén comprometidas en el control de la versión. Debido a que estos files son indispensables para la aplicación, no se pueden include en .svnignore. Probablemente lo que estoy buscando es algún tipo de script (tal vez en PowerShell). Eso analizaría todos los files * .ini y borrará todas las passwords. La solución más interesante sería agregar algo de almacenamiento externo de passwords que pueda usarse para codificar y decodificar passwords en files * .ini.

Siempre presiono para almacenar los files de la plantilla de configuration en subversión, pero no en los files de configuration reales. Entonces, si el file de configuration es "config.ini", verifico un "config.ini.template" poblado con datos de muestra que no funcionan.

Luego, para evitar que múltiples desarrolladores comprueben sus files "config.ini" individuales, agregaré el nombre del file de la confusión real a la list de properties svn: ignore.

Esto obliga al desarrollador a copyr el file y modificarlo adecuadamente para su entorno, pero facilita el trabajo de esa tarea al no forzarlos a descubrir qué campos deben estar presentes. Si tiene time, puede insert comentarios en el file de plantilla para simplificar el significado de algunas de las opciones de configuration.

En la parte superior del file, incluya las instrucciones de cómo configurar el sistema usando la plantilla, que debe leer algo como:

 # *** CONFIGURATION TEMPLATE --- DO NOT MODIFY THIS FILE *** # 1. Make a copy of this file in the same directory with the command "copy config.ini.template config.ini" # 2. Edit the new copy and follow the rest of the instructions # # Change "this.system.hostname" to the hostname of this system Hostname = this.system.hostname # Set the answer "23" to "42" Answer = 23 

Entiendes la idea …

Si tiene problemas (o cree que puede tener problemas) con personas que comtestingn sus opciones de configuration sobre el file config.ini.template, entonces recomiendo usar "svn lock" en el file de plantilla. Sin embargo, con la advertencia adecuada, nunca lo he encontrado necesario.

No responderé a su pregunta y, en su lugar, recomendaré un enfoque diferente, suponiendo que no sea demasiado tarde para cambiar el layout relevante.

No debe almacenar passwords en los mismos files que el rest. Haga que la aplicación lea un file de contraseña dedicado (o recupere la contraseña de un service de almacenamiento de passwords) además del file de configuration habitual. No se trata solo de no save passwords en svn, sino también de no tener passwords expuestas a la navigation de hombro, enviarlas por correo o publicarlas accidentalmente cuando alguien solicita ayuda con una configuration que no funciona, etc.

    Intereting Posts