Политика хранения файлов конфигурации в SVN - PullRequest
1 голос
/ 06 августа 2010

Большинство наших проектов C # хранятся в файлах * .ini. В основном эти файлы содержат множество разделов, затрагивающих все аспекты поведения программ. Но помимо обычных данных конфигурации некоторые из разделов уязвимы, например, строка подключения к базе данных или пароль сервера. Мы стараемся сохранить эти разделы в следующих формах:

[Database]
user=testuser
database=testdb
password=

Но когда разработчик тестирует приложение, он должен заполнить конфигурацию, чтобы запустить приложение. Довольно часто некоторые пароли передаются в систему контроля версий. Поскольку эти файлы необходимы для приложения, они не могут быть включены в .svnignore. Вероятно, я ищу какой-то скрипт (возможно, в powershell). Это отсканирует все файлы * .ini и сотрет все пароли. Наиболее интересным решением было бы добавить некоторое внешнее хранилище паролей, которое можно использовать как для кодирования, так и для декодирования паролей в файлах * .ini.

Ответы [ 2 ]

2 голосов
/ 07 августа 2010

Я всегда настаиваю на том, чтобы хранить файлы шаблонов конфигурации в Subversion, но не фактические файлы конфигурации.Поэтому, если файл конфигурации - «config.ini», я проверю файл «config.ini.template», заполненный нерабочими образцами данных.

Затем, чтобы несколько разработчиков не могли проверить свои данные ».config.ini ", я добавлю фактическое имя файла конфигурации в список свойств svn: ignore.

Это вынуждает разработчика копировать файл и изменять его соответствующим образом для своей среды, но облегчает работуэта задача, не заставляя их выяснять, какие поля должны присутствовать.Если у вас есть время, вы можете даже встроить комментарии в файл шаблона, чтобы упростить значения некоторых параметров конфигурации.

В верхней части файла укажите инструкции по настройке системы с помощьюшаблон, который должен читать что-то вроде:

# *** 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

Вы поняли ....

Если у вас есть проблемы (или вы думаете, что у вас могут быть проблемы) с людьми, проверяющими свои параметры конфигурацииповерх файла config.ini.template, то я бы рекомендовал использовать «svn lock» в файле шаблона.Однако с соответствующим предупреждением я никогда не находил это необходимым.

0 голосов
/ 06 августа 2010

Я не буду отвечать на ваш вопрос и вместо этого рекомендую другой подход, предполагая, что еще не слишком поздно изменить соответствующий дизайн.

Не следует хранить пароли в тех же файлах, что и остальные.Пусть приложение прочитает специальный файл паролей (или получит пароль из службы хранения паролей) в дополнение к обычному файлу конфигурации.Речь идет не только о том, чтобы не хранить пароли в svn, но и о том, чтобы пароли не подвергались серфингу, случайно отправлялись по почте или отправлялись, когда кто-то просит помощи в нерабочей конфигурации и т. Д.

...