Моя проблема / проблема
Мы работаем над проектом с открытым исходным кодом, который мы разместили на github. Проект написан на Django, и поэтому у нас есть наши настройки в файле settings.py. У нас есть открытый исходный код не потому, что мы слишком дешевы для подписки, а потому, что мы намеренно хотим, чтобы это был открытый исходный код.
В любом случае, мы также хотим запустить этот код сами, поэтому у нас есть site_settings.py, который содержит все конфиденциальные данные, такие как пароль базы данных и т. Д. Так как мы не хотим, чтобы это было на github, чтобы все видели, это в Файл .gitignore.
Обычно мы клонируем репо и добавляем этот файл локально и на сервере, так что у нас у всех есть личные настройки, и конфиденциальные данные не сохраняются в git.
Проблема в том, что теперь мы хотим запустить наш код на Heroku, который не поддерживает создание файлов на сервере, поскольку heroku не работает как обычный сервер (он работает с распределенной файловой системой).
Конечно, я думал об этом сам, но я не уверен, что это правильный подход. Пожалуйста, имейте в виду, что я новичок в Heroku и Git. Вот мое текущее решение:
Моя текущая идея о том, как это исправить
Есть два пульта:
- origin == Github
- heroku == Heroku
, исключая все ветки разработки и функций, у нас есть только две основные ветки (на Heroku и Github), о которых нужно беспокоиться.
Моя идея состояла в том, чтобы локально настроить ветви следующим образом:
- мастер -> пульты / источник / мастер
- героку -> пульты / героку / мастера
В ветке master мы помещаем site_settings.py в .gitignore, чтобы git игнорировал его при фиксации на Github, то же самое относится ко всем веткам dev и т. Д. Мы собираем все наши изменения в ветке master, пока не получим новый выпуск.
В ветке heroku мы отредактировали файл .gitignore, чтобы перестать игнорировать site_settings.py, поэтому он будет передан Heroku, как только мы отправим ветку heroku.
Как только у нас появляется новый релиз, мы переключаемся на ветку heroku и объединяем master в heroku следующим образом:
git checkout heroku
git pull
git merge master
Как только мы разобрались с конфликтами слияния из слияния, мы передаем Heroku, и у нас есть новый выпуск и запуск .. = D
Мой вопрос
Допустима ли моя идея для решения этой проблемы (будет ли она работать даже с .gitignore, как это?) И если нет, то как мы решим это самым чистым / наилучшим из возможных способов? Если вам нужна дополнительная информация, не стесняйтесь спрашивать:)