3 回答
TA贡献1846条经验 获得超7个赞
选项5,自定义合并驱动程序,可能是最接近您想要的方式。这很容易做到。下面是一个我认为应该让你非常接近你想要的行为的例子。
首先,创建一个名为合并驱动程序的脚本merge-and-verify-driver
。使其可执行并将其放在合适的位置(您可能需要考虑将此脚本检入到repo中,因为repo的配置文件将取决于它)。Git将执行此shell脚本来执行敏感文件的合并:
#!/bin/bashgit merge-file "${1}" "${2}" "${3}"exit 1
这只是Git本身通常执行的默认合并行为。关键区别在于脚本始终返回非零(表示存在冲突,即使实际已解决合并而没有冲突)。
接下来,您需要告诉Git您的自定义合并驱动程序是否存在。你在repo的配置文件(.git/config
)中执行此操作:
[merge "verify"] name = merge and verify driver driver = ./merge-and-verify-driver %A %O %B
在这个例子中,我已经放入merge-and-verify-driver
了repo的顶级目录(./
)。您需要相应地指定脚本的路径。
现在,您只需要为敏感文件提供适当的属性,以便在合并这些文件时使用自定义合并驱动程序。将其添加到您的.gitattributes
文件中:
*.sensitive merge=verify
在这里,我告诉Git,任何名称与模式匹配的文件*.sensitive
都应该使用自定义合并驱动程序。显然,您需要使用适合您的文件的模式。
TA贡献1825条经验 获得超6个赞
注意:本文“ 为PO文件编写git合并驱动程序 ”说明了在手动合并文件时可以执行的操作类型:您可以对其进行预处理,以便手动合并以准备好某些数据。
git merge-file
例如,可以在合并之前使用DECRYPT(并重新加密)文件(!)
在您的情况下,以非0状态退出合并驱动程序可确保合并将是手动合并。
- 3 回答
- 0 关注
- 2405 浏览
添加回答
举报