Mercurial:在初始提交后排除django settings.py

时间:2011-01-22 11:37:48

标签: django mercurial

在我的Django项目中,我希望将settings.py文件包含在初始提交中,以便其他开发人员可以克隆存储库并更改原始设置以使用本地设置。但是,之后我不想在每次提交时手动排除文件,并且忽略文件不会工作,因为它已被跟踪。

那么,如何在保持跟踪原始文件的同时自动排除settings.py?[/ p>

感谢任何帮助:)

3 个答案:

答案 0 :(得分:9)

对此有一种替代的,可能更灵活的方法。不要排除settings.py文件。

相反,做这样的事情:

try:
  from localsettings import *
except ImportError:
  pass

这样,如果您需要实际更改settings.py文件,其他人可以接收更改。您可以提供合理的默认值,只要您可能要在本地覆盖的任何设置 localsettings导入

您可以根据需要更改localsettings.py文件(我倾向于使用它来打开DEBUG,设置我的database settings,并确保我只使用本地记忆为cache backend}。

请确保从提交中排除localsettings.py文件。

答案 1 :(得分:2)

通常使用Mercurual完成此操作的方法是提交一个名为settings.py.template之类的文件,并让某人接受新克隆的第一步是将其复制到settings.py文件,列在.hgignore文件中。这样,如果有人在模板中添加了新设置,人们仍然可以获得它并将其合并到本地设置中。在开始/部署脚本中或使用克隆挂钩自动将模板复制到实际是很容易的,尽管大多数人都不会打扰。

答案 2 :(得分:0)

我知道这是一个旧线程,但其他人可能会发现一种不同的方法仍然有用。 (我遇到了这个问同样的问题)。

您可以将settings.py保留在存储库中并对其进行修改,以便从环境变量中获取特定于机器的值。建议使用herehere

例如,数据库连接通常因机器而异:

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'],                      
    } }