Ветвление: разные конфигурационные файлы для выпуска / разработки - PullRequest
29 голосов
/ 09 марта 2012

Я унаследовал проект, и мы используем git.У нас есть несколько сред (dev, test, prod).Предыдущая команда в основном воссоздала все в каждом экземпляре, используя одни и те же учетные записи, пароли, sid и т. Д. Единственное, что изменилось, это сопоставления имен хостов в / etc / hosts.Чтобы он подключился к другому серверу базы данных.

Теперь это создает проблему, потому что я не могу, например, скопировать схему, чтобы разработчик мог провести эксперимент, используя тот же экземпляр базы данных, что иосновной сервер разработки.В основном мне нужно создать новый экземпляр базы данных на другом хосте и изменить / etc / hosts так, чтобы он указывал на этот новый сервер.

Пока это рабочая установка, я пытаюсь найти способ сохранитьразные конфигурационные файлы для каждого экземпляра.То есть: разные версии applicationConfig.xml в зависимости от отрасли.Я предполагаю, что можно утверждать, что сохранение учетных данных базы данных в репо не такая уж хорошая идея, но давайте просто на секунду проигнорируем это.

Другая ситуация, которая может потребовать наличия другой версии файла, может бытьотладки.Скажем, я использую фреймворк javascript logger и добавляю отладочный код, который не хотел бы поставлять с производственным выпуском.Я не хочу добавлять средства ведения журнала при разработке / тестировании, а затем снова удалять их перед выпуском.Можно забыть сделать это.

Как правильно обращаться с разными «версиями» файла для разных веток?Есть ли способ получить ветку, которая будет синхронизирована с последним кодом на master, но с несколькими измененными файлами конфигурации / кода?Я не ожидаю, что он останется синхронизированным автоматически, но я хотел бы иметь возможность не объединять файлы конфигурации (или их части), не игнорируя их полностью (?).Например: не объединяйте строки 6,7 (имя пользователя и пароль в БД), но объединяйте другие изменения в файлы.

Ответы [ 2 ]

29 голосов
/ 09 марта 2012

Похоже, вы должны прочитать об атрибутах git. Ознакомьтесь с разделом внизу этой страницы

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

2 голосов
/ 09 марта 2012

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

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

Это также позволяет иметь разные настройки и разные учетные данные на каждом сервере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...