在asp.net中,我们可以在appsettings中包含可包含秘密值的文件属性:
的Web.config
<appSettings file="HiddenSettings.config">
</appSettings>
HiddenSettings.config
<?xml version="1.0"?>
<appSettings>
<add key="DbConnectionString" value="VALUE_IN_TEMPLATE_FILE" />
</appSettings>
在git中,我们可以简单地将HiddenSettings.config保留在git-ignore中,这样就不会签入敏感信息。
这种方法的问题是每次开发人员获取代码的第一个副本时,他/她需要手动填充秘密数据。
自动执行此操作的最佳做法是什么(即,没有手动操作来填充本地/目标部署环境中的机密信息)?
答案 0 :(得分:2)
我最近一直在思考这个问题。到目前为止,我能想出的最好的方法是链接到一个单独的配置文件,并将该文件放到一个单独的私有存储库中。然后将该存储库作为子模块添加到实际项目中。例如:
git submodule add git@github.com:someUser/private-config.git
并且配置指向子模块的相对路径,如:
<appSettings file="../../../../private-config/The.Real.Deal.config">
<add key="someKey" value="SAMPLE VALUE" />
</appSettings>
因此,当用户签出项目(使用初始化子模块)时,private-repo中的配置将可用。如果不是,他们可以在没有实际值的情况下下载项目,并且只能访问样本值。
与其他方法相比,这对我来说很好,但我也总是乐于接受建议。