【问题标题】:How can I prevent clobbering of encrypted (binary) files in Git?如何防止在 Git 中破坏加密(二进制)文件?
【发布时间】:2017-08-11 10:06:53
【问题描述】:

我们将 puppet 配置存储在 Git 中。其中一些文件在提交之前手动 gpg 加密,并在结帐后手动解密。然而,几天前我合并了一个从 HEAD 中提取的分支,它破坏了另一个人所做的更改。如果文件没有被加密,git 会正确合并更改。

此文件包含敏感凭据,如果不正确可能会使系统脱机,因此我们可以区分和查看随时间发生的变化很重要。

如何恢复可见性以及 git 合并更改的高级功能,同时仍保持文件内容的安全性?

【问题讨论】:

  • 使用源代码提交机密通常被认为是一种不好的做法。
  • 将配置与其余配置保持一致很方便,加密允许我们这样做。但似乎 git 并不是为原生处理加密而设计的,而且我们失去了合并功能。您认为更好的流程是什么?

标签: git security encryption version-control


【解决方案1】:

Git 允许您为二进制(或任何)文件设置自定义转换器,以便在它们到达git-diff 之前对其进行预处理。当 Git 对文件进行比较时,您可以使用此功能对文件进行解密。

这里是这个特性的一个例子,叫做textconv

.gitconfig 必须指明要为 textconv 驱动程序执行的命令:

[diff "odf"]
    textconv=odt2txt

.gitattributes 必须将文件关联到驱动程序:

*.odf diff=odf

此示例使用textconv 转换*.odf 文件,但您可以使用任何您想要的任何函数来处理任何文件。

这种方法至少可以让您在合并时检查差异作为健全性检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多