Игнорировать файл один раз в Git - PullRequest
0 голосов
/ 08 января 2019

Я очень тупой и новичок в этой теме .. Я искал четкий ответ, но пока не нашел. И я боюсь испортить файлы моего prod сервера. Так ..

У меня есть сервер (написано на pyhton & Django). У меня есть один файл, который изменяется в зависимости от среды (settings.py).

У меня есть 3 булевых переменных для 3 окружения При работе на локальном компьютере я соответствующим образом изменяю этот файл, а также сервер разработки и сервер prod (оба размещены в Heorku).

Я использую sourcetree для управления своим git. Когда я хочу протестировать свой код на сервере разработки, я отправляю свой код из ветки dev в моем репозитории bitbucket repo в мою герою git DevServer. но затем мой settings.py также выдвигается, поэтому мне нужно настроить его обратно на конфигурацию сервера dev. А затем вернемся к локальной разработке, затем снова к разработке сервера, а затем к серверу prod - множество одиночных файловых толчков, что мне кажется, что я могу избежать. Когда я выполняю слияние из разработки в мастер, снова этот settings.py файл будет изменен, и мне нужно будет обновить его снова, чтобы соответствовать производственной среде.

Короче говоря, я бы хотел этого избежать. После того, как я поместил этот файл на сервер, я хочу игнорировать его из-за изменений. Но если положить его в игнор, он всегда будет игнорироваться. Иногда в файле происходят важные изменения, которые я хочу отправить во все репозитории / среды.

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

1 Ответ

0 голосов
/ 08 января 2019

Зафиксируйте две версии файла: my_site/dev_settings.py и my_site/prod_settings.py

Используйте Параметры конфигурации Heroku , чтобы изменить DJANGO_SETTINGS_MODULE на my_site.dev_settings или my_site.prod_settings


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

Установить переменные или секретные значения в settings.py для переменных среды:

SECRET_KEY = os.environ.get('MY_SITE_SECRET_KEY', 'dummy')
DEBUG = os.environ.get('MY_SITE_DEBUG') == 'True'

затем установите MY_SITE_SECRET_KEY и MY_SITE_DEBUG в качестве конфигурационных переменных Heroku.


Наконец, буквальный ответ на ваш вопрос, но не тот путь, который я предлагаю для вашего сценария:

git update-index --skip-worktree my_site/settings.py

не позволит Git замечать изменения в вашем файле до тех пор, пока вы не введете

git update-index --no-skip-worktree my_site/settings.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...