git不可避免的怪癖之一是它无法存储和检索有关文件的元数据。例如,在mac上,标签存储有“扩展属性”(可通过xattr
访问),如果文件受结账影响,任何checkout / reset / merge / pull命令都将擦除这些属性。
我已经环顾四周,看看是否有人已经编写了保存元数据的脚本,但我已经干了。
所以我想做的是使用Git的钩子系统:
我应该使用哪个钩子?我需要post-receive
和pre-commit
吗? pre-commit
还可以向提交添加文件(即,在写入新属性之后)吗?
答案 0 :(得分:3)
gibak tool使用pre-commit
和post-checkout
让 ometastore 工具保存/恢复元数据(可选择包含xattrs)。
您不希望post-receive
。它在推送的远端运行。它运行的是裸存储库,所以它没有尝试从推送提交的内容更新任何文件的业务。在post-checkout
中进行,你知道你将有一个可用的树。
答案 1 :(得分:0)
metastore
能够保存和恢复文件元数据,并将其存储在单独的文件中(您可以将其包含在提交中)