gpt4 book ai didi

git - 如何使用预处理和后处理包装 git 文件 merge ?

转载 作者:太空狗 更新时间:2023-10-29 13:11:22 24 4
gpt4 key购买 nike

我希望能够在 Git 尝试 merge 文件之前对文件调用一些预处理,并对 merge 结果进行后处理。这里的一般想法是,有些文件很难按原样自动 merge ,但可以转换为更容易处理的形式。这是我的具体用例:

我有一个大部分不是很敏感的数据的存储库。在该存储库中,我有一些加密的敏感数据,位于一个名为 sensitive.pgp 的文件中。我喜欢这种安排,因为我不必相信我的存储库得到安全管理,我只需要相信加密和密码。当然,Git 不可能 merge 加密文本,因此如果 sensitive.pgp 在两次 check out 中同时被修改,则无法 merge ——即使对明文的更改是容易分开。手动工作流程是这样的:

  1. 检测到 sensitive.pgp 的 merge 冲突。
  2. 启动 git-mergetool。工具也无法 merge PGP 文件。
  3. 现在我有我的版本、基本版本和远程版本的临时文件。
  4. 解密所有三个文件。
  5. 在解密版本上调用我的 merge 工具。
  6. 加密结果。
  7. git-add 新的 sensitive.pgp

我想告诉 Git 在尝试 merge 之前应用我的预处理和后处理,以便它可以自动处理。我可以想象许多具有相同一般模式的其他场景:例如,几乎任何时候您拥有具有类似文本的底层结构(例如 PDF、OpenOffice、Word)的压缩文件格式。

有什么建议吗?

最佳答案

您有几个选择:

  1. .gitattributes 中定义 checkout / checkin 过滤器(请参阅 git help attributes )在 checkout 时解密文件(将它们留在您的工作树中未加密)并在 checkin 前加密它们
  2. 定义自定义 merge 驱动程序(参见 git help attributesmerge.<driver>.* 中的 git help config 选项)
  3. 定义一个自定义 merge 工具(参见 git help mergetoolmergetool.<tool>.* 中的 git help config 选项),在调用真正的 merge 工具之前解密,并在真正的 merge 工具返回时加密

您可以将 git 配置为仅将自定义过滤器和 merge 驱动程序应用于特定文件,但 merge 工具适用于整个存储库,除非您通过将文件名传递给 git mergetool 来限制它。命令。您可以设计自定义 merge 工具以根据要 merge 的文件的名称更改其行为。

关于git - 如何使用预处理和后处理包装 git 文件 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com