问题
将此文件树视为我的开发存储库。
- 富/ - .git/ - [...] - 酒吧/ - 备份客户端.py - supersecretstoragecredentials.ini
对于开发,
supersecretstoragecredentials.ini
需要填写有效的凭据 - 而我仍然必须在存储库中保留它的干净版本,以便其他用户可以轻松设置他们的凭据。
可能的解决方案
.gitignore
supersecretstoragecredentials.ini
并创建一个 supersecretstoragecredentials.ini-example
,
supersecretstoragecredentials.ini-example
复制到 supersecretstoragecredentials.ini
。backup.py
中添加一个被 git 忽略的覆盖配置文件位置,例如 supersecretstoragecredentials_local.ini
。正如kan所指出的,这两种解决方案在工作流程方面相似,但并不完全相同。
还有其他选择吗?
git
是否拥有某种功能来帮助解决此类问题?
使用一些占位符值签入
supersecretstoragecredentials.ini
文件,然后
git update-index --assume-unchanged supersecretstoragecredentials.ini
Git 不会跟踪此文件的未来更改。
您可以使用
重置此设置git update-index --no-assume-unchanged supersecretstoragecredentials.ini
我使用你的解决方案(你的两个解决方案是相同的,只是文件名不同)。你有什么问题吗?您期望什么样的功能?
此外,还有一个更有趣的解决方案
git update-index --assume-unchanged supersecretstoragecredentials.ini
希望这是您想要的。但是,如果上游更改了文件并且您正在拉取更改(不完全确定它是好还是坏),它就会失败。
根据我的经验,在尝试了您的问题和迄今为止的答案中列出的所有选项之后,您的#2选项被证明是最简单和最干净的。它可靠地解决了问题,用最少的魔法,并且最容易理解。这是最好的无聊方式。
我目前正在尝试的东西是 git-secrets。
https://github.com/awslabs/git-secrets
它挂钩 git 提交过程并检查看起来像不应签入的凭据的模式。
您必须确保它安装在每个开发人员的系统上并为每个 git 存储库进行配置。 如果您将检查集成到构建过程中,这可以很容易地实现。