【问题标题】:Encrypting files added to Mercurial repositories on commit在提交时加密添加到 Mercurial 存储库的文件
【发布时间】:2010-09-21 18:16:22
【问题描述】:

阅读了this git 过去的问题,我想问一下是否存在类似的东西,但是

  1. 可以在每台机器上以编程方式(文件列表)完成;
  2. 为 Mercurial 工作。

这样做的原因是我想在我的公共 dotfiles 存储库中包含一些以明文形式存储密码的配置文件。我知道我可以为 hg(1) 编写一个环绕脚本,但我想知道是否有其他方法,只是出于好奇。

谢谢。

【问题讨论】:

    标签: encryption mercurial configuration-files repository


    【解决方案1】:

    您可以根据需要使用一对pre-commitpost-update 挂钩来加密/解密。详情请见http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html

    但是,值得指出的是,如果您在存储库中存储加密文本,您将无法创建有意义的差异 - 基本上所有内容都将像二进制文件,但压缩性也很差。

    【讨论】:

    • *所以要谨慎使用,但对于额外的安全性来说仍然是一个可靠的想法。 link to the hackernews thread.
    • 这包括文件名和目录名吗?保密性仅受文件名的影响......
    【解决方案2】:

    Mercurial 有一个filter system,可让您在从存储库中读取或回写文件时修改文件。如果您有一个像 SSH 代理这样的程序正在运行,可以让您进行非交互式加密和解密,那么这可能是可行的。

    正如 Ryan 指出的那样,这必然会导致存储库更大,因为文件的每个加密版本看起来都与之前的版本完全不同。 Mercurial 检测到这一点并存储未压缩的版本(无论如何都无法压缩加密文件)。由于您将其用于点文件,因此您可以忽略空间开销,但如果您要以加密形式对更大的文件进行版本控制,则需要考虑这一点。

    请将您的经验发邮件至Mercurial mailing list,以便其他用户也能从中受益。

    【讨论】:

    • 谢谢你,马丁,我没有任何空闲时间来测试你的建议;因为这个问题对我来说是一个真正的问题(我确实有一个 ssh-agent 正在运行),所以请放心,当我有时间修补我的存储库时,我会及时报告我的经验。再次感谢。
    猜你喜欢
    • 2015-08-07
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多