У меня есть простое веб-приложение. У меня есть производственная база данных для живой версии и тестовая база данных для разработки. Я храню учетные данные базы данных в файле конфигурации, например так:
<?php
return array(
'hostname' => 'myhostname',
'username' => 'myuser',
'password' => 'mypassword',
'dbname' => 'myLiveDB',
);
?>
Этот файл отслеживается Git. В ветке разработки я хочу иметь файл с тем же именем, но с другими учетными данными. Я делаю свою работу в этой ветке, тестирую вещи, а затем объединяюсь с мастером, когда хочу развернуть более новую версию.
Я никогда не хочу видеть это изменение файла во время операции слияния / перебазировки. Каждая ветка всегда должна сохранять свою собственную версию, и она должна обновляться только путем фиксации непосредственно в ветке.
Что я учел до сих пор:
.gitattributes
файлы с merge=ours
для файла конфигурации + git config --global merge.ours.driver true
, Я не думаю, что это работает для rebase, что является проблемой. Я также не уверен, что любому другому разработчику, работающему над этим, нужно будет обновить свою конфигурацию вручную, или есть способ изменить этот параметр на уровне хранилища? config_test.php
и config_prod.php
в хранилище. При развертывании сделайте так, чтобы скрипт посмотрел, из какой ветки мы разворачиваемся, и скопируйте правильный файл, переименовывая его в config.php
Я думаю, что третий пункт может быть хорошим и правильным методом. В spring-boot (java) у нас были разные профили в файле yamal (application.yml) с такими именами, как dev, test, prod и т. Д., И сам Spring будет принимать точный файл, когда он работает в этой конкретной среде. Проверьте что-то вроде есть или нет.
Но в вашем случае просто подумайте, нужен ли вам файл, который находится в git или нет.
Подумайте, что у вас есть файл в вашем домашнем каталоге (скажем, /home/myname/testfile/development.properties
). И измените код так, чтобы, если этот файл свойств существовал, в противном случае возьмите другой.
Других решений пока нет …