Mercurial: исключить django settings.py после первоначальной фиксации - PullRequest
3 голосов
/ 22 января 2011

В моем проекте Django я хочу, чтобы файл settings.py был включен в первоначальный коммит, чтобы другие разработчики могли клонировать репозиторий и изменить исходные настройки для работы с локальной настройкой. Но после этого я не хочу вручную исключать файл при каждом коммите, и файл игнорирования не будет работать, потому что он уже отслежен.

Итак, как я могу заставить mercurial автоматически исключать settings.py при сохранении отслеживания исходного файла?

Ценю любую помощь:)

Ответы [ 3 ]

9 голосов
/ 22 января 2011

Существует альтернативный, возможно, более гибкий подход к этому.Не исключайте файл settings.py.

Вместо этого сделайте что-то вроде этого:

try:
  from localsettings import *
except ImportError:
  pass

Таким образом, если вам когда-либо понадобится изменить файл settings.py, другие могутзабрать изменения.Вы можете указать разумные значения по умолчанию, при условии, что любые настройки, которые вы можете переопределить локально, выше localsettings import.

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

Просто убедитесь, что вы исключили файл localsettings.py из ваших коммитов.

2 голосов
/ 22 января 2011

Способ, которым это обычно делается в Mercurual, заключается в том, чтобы зафиксировать файл с именем, похожим на settings.py.template, и первым делом, когда кто-то делает новый клон, является его копирование в файл settings.py, который указан в файле .hgignore. Таким образом, если кто-то добавит новые настройки в шаблон, люди все равно получат его и смогут объединить с локальными настройками. Легко автоматизировать копирование шаблона в актуальное состояние в вашем скрипте запуска / развертывания или с помощью клонирования, хотя большинство людей не беспокоятся.

0 голосов
/ 21 ноября 2014

Я знаю, что это старая ветка, но другие могут найти другой подход все еще полезным. (Я наткнулся на это ТАК, задавая тот же вопрос).

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

Примером может служить соединение с БД, которое часто отличается от одной машины к другой:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',  
        'NAME': os.environ['DB_NAME'],                      
        'USER': os.environ['DB_USER'],
        'PASSWORD': os.environ['DB_PASSWORD'],
        'HOST': os.environ['DB_HOST'],                      
        'PORT': os.environ['DB_PORT'],                      
    } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...