Хранение значений конфигурации, специфичных для среды, вне репозитория кода, управляемого исходным кодом , как правило, хорошая идея, так как код должен быть в состоянии работать где угодно, только конфигурация должна измениться.
Решение 1: Примерфайлы
Вместо того, чтобы хранить config_mysql.php
внутри репозитория, сохраните файл с именем config_mysql.php.sample
и добавьте config_mysql.php
к .gitignore
Люди, которые клонируют или разветвляются от мастера локально, могут затем указать ихзначения свойств config_mysql.php
, которые добавляются к .gitignore
и, таким образом, не влияют на дерево мерзавцев.Разработчик редактирует файл config_mysql.php.sample
только в том случае, если конфигурация добавлена / удалена (это информация, которую необходимо добавить в репозиторий исходного кода)
Решение 2. Сохраните значения конфигурации в переменных среды
Вместо указания фактических значений для ключей в config_mysql.php.sample
извлеките их из переменных среды.
$db_host = $_SERVER["MYAPP_DB_HOST"];
$db_user = $_SERVER["MYAPP_DB_USER"];
// and so on
Таким образом, существует только один файл конфигурации, который находится под контролем исходного кода вместе с кодом и разработчиками.установить их локальные значения путем установки переменных среды.Общие среды, такие как производство и подготовка, необходимо либо подготовить с помощью этих переменных среды, либо инструмент развертывания может позаботиться о их внедрении.
Резюме
Мне больше нравится решение 2, поскольку существуетнет необходимости в образцах файлов, и это легко переопределить конфигурацию).Его можно даже расширить, указав значения по умолчанию, если переменная среды не установлена.Это не подходит для всех типов значений конфигурации и должно использоваться с осторожностью, чтобы избежать случайных подключений, например, к производственной базе данных