2010-09-10 3 views
4

В настоящее время я использую общую модель базы данных для нашей разработки. Я знаю, что лучше использовать локальные базы данных разработки для правильной работы с версией базы данных без того, чтобы один разработчик нарушал все остальные коды. Вот к чему я пытаюсь добраться. Однако у меня есть вопрос о файле web.config. Как я могу гарантировать, что каждый раз, когда у каждого разработчика есть своя локальная база данных разработки, ему не нужно вручную менять строку соединения с БД каждый раз, когда он получает обновление от источника управления? Каков наилучший способ сделать это?Web.config Versioning

Например, скажем, Джонни Dev совершает свое web.config, который содержит строку соединения, как это:

server=JohnnysBox;database=JohnnyAppDev1; 

Так что теперь Сьюзи Dev получает обновления, и она должна изменить свою строку подключения к этому:

server=SUE;database=development; 

Итак, теперь Сьюзи и Джонни продолжают передавать свои собственные строки подключения в файл web.config, и каждый раз, когда они получают обновление, им приходится изменять строки подключения во всех приложениях.

Каков наилучший способ справиться с этой ситуацией, чтобы разработчики не испортили настройки строки подключения друг к другу, но могут при необходимости изменять другие файлы конфигурационных файлов для всех других разработчиков (например, новую настройку приложения) ?

ответ

2

Для конфигурации или файлы настроек, то, что вам нужно версии:

+0

ОК, то что, если добавить новую переменную? Как разработчик знает, что добавлена ​​новая переменная, которая нуждается в ценности в его/ее конкретном файле значений? –

+0

@Brandon: он будет знать из-за сценария (также с версией), который не будет генерировать окончательный файл, если файл значения не будет правильно выполнен/изменен с указанным новым значением. – VonC

+0

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

0

Использовать (локально) в качестве имени сервера sql и всегда ссылаться на локальный сервер. Это должно быть значение по умолчанию в файле web.config, который вы проверяете в исходном элементе управления.

Для установки «устанавливается», ваш установщик должен попросить пользователя, хочет ли он использовать удаленный сервер sql, и если да, обновите файлы web.config как часть процесса установки.

+1

Что делать, если разработчики не имеют SQL-сервера, установленного на своих компьютерах? – Mark

+0

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

+0

@Mark - OP специально спросила о сценарии, где все разработчики имеют собственную локальную базу данных разработчиков. – David

1

Мы здесь, чтобы никогда не передавать файл web.config в исходный элемент управления. Вместо этого мы фиксируем файл web.config.sample, и каждый разработчик объединяет изменения в этом файле в свой собственный файл web.config. Каждый разработчик несет ответственность за эти слияния.

+0

как разработчик узнает, когда ему нужно объединить эти изменения? Я видел, как разработчик легко выполнил обновление и не понял, что файл web.config.sample обновлен и просто отсутствует тот факт, что параметр был добавлен/удален/изменен. –

+0

Конечно, у меня нет волшебного решения. Если ваши разработчики слепо обновляют файлы и игнорируют результаты, тогда у вас могут быть более глубокие проблемы, которые вы хотите решить в первую очередь. – Mark

1

Способ, которым я имею дело с этим, - это просто не проверять изменения, внесенные разработчиком в файлы конфигурации.

Когда необходимо изменить конфигурацию, я начинаю с «чистого» файла конфигурации и внося необходимые изменения, а затем регистрируюсь. Когда все остальные получат последнюю информацию, они могут объединить эти изменения в свои локальные версии ,

+0

Я согласен с этим. У большинства наших разработчиков есть список изменений «НЕ ПРОВЕРЯЙТЕ», где сделаны изменения только локального web.config. В случае, когда в конфигурацию необходимо внести фактическое изменение производства, dev возвращается, проверяет и делает незначительные изменения и т. Д. – David

3

Это лишь частичное решение, но вы можете заставить всех разработчиков создать псевдоним для своего собственного SQL-сервера с помощью cliconfg.

Тогда web.config в системе управления версиями будет иметь, например:

server=LocalServerAlias;database=development 
1

Решение, которое мы придумали в моем офисе было то, что мы специально исключаем web.config от контроля версий, но только в WWW папка. Это позволяет разработчикам делать любые изменения, которые им необходимы локально.

В отдельной папке у нас есть «главная» копия web.config, которой является версия. По мере добавления новых разделов, ключей и т. Д. Разработчик обязан обновить основную копию.

1

Вы можете создать несколько файлов Web.config в зависимости от среды, в которой работает приложение. Используя синтаксис преобразования, вы можете изменить основной файл Web.config, чтобы включить или выполнить свои собственные локальные настройки.

http://msdn.microsoft.com/en-us/library/dd465326(VS.100).aspx

Затем исключить этот обычай Web.xxx.config из вашего хранилища.

1

Мы везем web.config. Итак, у меня есть один под названием Mattweb.config, и я могу поменять его по своему усмотрению, и он заменяет web.config ON MY LOCAL MACHINE ТОЛЬКО с содержимым Mattweb.config. Это не требует вмешательства со стороны меня.

Мы также используем «настоящий» web.config, чтобы я мог сравнивать с моей локальной версией, чтобы увидеть, были ли добавлены какие-либо дополнения или какие-либо другие изменения. Затем я просто обновляю файл Mattweb.config, и все снова хорошо.