假设您想要显示设置文件的源代码,但不希望在公共源代码中显示3-4行。您只是手动替换这些变量,还是使用了一些技巧,比如将它们包含在另一个单独的文件中,并将其包含在主conf中?
或者更常见的做法是不跟踪该文件并将其包含在存储库中?
发布于 2010-11-09 02:25:25
我解决这个问题的方式,我必须在我工作的几乎每个项目中处理它,就是利用我从某人那里挑选的模式。在此模式中,受版本控制的主设置文件导入了一个称为"local_settings“的辅助设置文件。该模式不仅可用于防止凭证不受版本控制,还可用于隔离环境/平台特定的设置。这个" local_settings“文件不受版本控制,并且对于部署源代码的每个平台,只为该平台创建一个单独的、特定的local_settings文件。
我将为您提供一个示例,说明我在Django/Python项目中通常是如何做到这一点的。有一个中心的、每个项目的settings.py
文件,它处于版本控制之下,还有一个特定于平台的local_settings.py
文件(可能这里使用的术语不太适合平台)。从settings.py
文件中导入local_settings.py
文件,其中以以下方式定义不同的设置变量:
import local_settings
DATABASE_USER = local_settings.db_user
DATABASE_PASSWORD = local_settings.db_pass
并且,作为上述代码片段的示例,local_settings.py
文件的定义如下:
db_user = 'user'
db_pass = 'pass'
在处理这个问题时,我发现这个模式非常有效。
发布于 2010-11-09 02:03:10
这取决于上下文,但一个常见的解决方案是拥有一个不包含敏感信息的application.cfg.sample
。当您实际部署应用程序时,将该文件复制到application.cfg
并编辑密码等。
另一种方法是让示例值为您的开发工作,但没有意义,即:
host: localhost
username: user
password: test
这实际上可能是您的开发工作站上的有效数据库帐户或其他任何帐户,但用户不会认为它是有效的,并且信息几乎不敏感。
发布于 2010-11-09 02:03:28
只需用示例变量替换变量即可。
SETTINGS = {
username: 'test',
password: 'mypass'
}
等。
https://stackoverflow.com/questions/4126552
复制相似问题