如何将git文件合并包装为预处理和后处理?
我希望能够在Git尝试合并文件之前对文件调用一些预处理,然后对合并结果进行后期处理。这里的总体思路是,有些文件很难按原样自动合并,但可以转换为更易于处理的形式。以下是我的具体用例: 我有一个存储库,其中大部分不是非常敏感的数据。在这个存储库中,我有一些加密的敏感数据,在一个名为如何将git文件合并包装为预处理和后处理?,git,encryption,compression,hook,wrapper,Git,Encryption,Compression,Hook,Wrapper,我希望能够在Git尝试合并文件之前对文件调用一些预处理,然后对合并结果进行后期处理。这里的总体思路是,有些文件很难按原样自动合并,但可以转换为更易于处理的形式。以下是我的具体用例: 我有一个存储库,其中大部分不是非常敏感的数据。在这个存储库中,我有一些加密的敏感数据,在一个名为sensitive.pgp的文件中。我喜欢这种安排,因为我不必相信我的存储库是安全管理的,我只需要信任加密和密码。当然,问题是Git不可能合并加密文本,因此如果同时在两次签出中修改sensitive.pgp,则无法进行合并
sensitive.pgp
的文件中。我喜欢这种安排,因为我不必相信我的存储库是安全管理的,我只需要信任加密和密码。当然,问题是Git不可能合并加密文本,因此如果同时在两次签出中修改sensitive.pgp
,则无法进行合并——即使对明文的更改很容易分离。手动工作流程如下所示:
敏感的pgp的合并冲突
sensitive.pgp
有什么建议吗?您有几个选择:
.gittributes
(请参阅git help attributes
)中定义签出/签入筛选器,该筛选器在签出时解密文件(在工作树中保持未加密状态),并在签入前对其进行加密git-help-attributes
和git-help-config
中的merge..*
选项)git-help-mergetool
和git-help-config
中的mergetool..*
选项),该工具在调用真正的合并工具之前进行解密,并在真正的合并工具返回时进行加密您可以将git配置为仅将自定义筛选器和合并驱动程序应用于特定文件,但合并工具适用于整个存储库,除非您通过将文件名传递给
git mergetool
命令来限制它。您可以设计自定义合并工具,根据要合并的文件的名称更改其行为。附加点:除了将该逻辑放入预处理和后处理本身之外,是否有其他方法将此操作配置为仅在特定文件或文件类型上执行?非常感谢。我已经开始修补自定义合并驱动程序,这看起来是一个很好的解决方案。