将秘密保存在git存储库中的最佳做法是什么?

joa*_*oar 11 versioning git version-control

问题

将此文件树视为我的开发存储库.

 - foo/
   - .git/
     - [...]
   - bar/
     - backupclient.py
   - supersecretstoragecredentials.ini

对于开发,supersecretstoragecredentials.ini需要使用有效凭据填写 - 而我仍然需要在存储库中保留它的干净版本,以便其他用户可以轻松设置其凭据.

可能的解决方案

  1. .gitignore supersecretstoragecredentials.ini并创建一个supersecretstoragecredentials.ini-example,
    1. 指示用户复制supersecretstoragecredentials.ini-examplesupersecretstoragecredentials.ini.
  2. 添加一个覆盖的配置文件位置,backup.pygit会忽略该位置,例如 supersecretstoragecredentials_local.ini.

正如kan指出的那样,这两种解决方案类似,但在工作流程方面并不完全相同.

还有其他选择吗?是否git拥有某种功能来协助解决这类问题?

dex*_*ter 11

使用一些占位符值检入supersecretstoragecredentials.ini文件,然后

git update-index --assume-unchanged supersecretstoragecredentials.ini
Run Code Online (Sandbox Code Playgroud)

Git不会跟踪此文件的未来更改.

您可以使用重置它

git update-index --no-assume-unchanged supersecretstoragecredentials.ini
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 5

您在选项1中描述smudge的内容基本上由内容过滤器驱动程序的步骤涵盖.

过滤驱动程序

您有" 如何处理插件库? "问题中提供的两个选项.

涂抹脚本将采用您的supersecretstoragecredentials.ini-example(版本化的),将其复制为supersecretstoragecredentials.ini(不是版本,由Git忽略),并从其他来源填充​​其值.

但除了您将如何实施策略的技术方面之外,主要措施是确保您的秘密值根本不存储在Git仓库中,而是来自另一个参考.