Git的一个不可避免的怪癖是它无法存储和检索文件的元数据。例如,在Mac上,标签存储在“扩展属性”中(可通过 xattr
访问),如果文件受到检出的影响,任何 checkout/reset/merge/pull 命令都会擦除这些属性。
我查看了一下是否已经有人编写了保存元数据的脚本,但是没有找到。
所以我想要做的是使用Git的挂钩系统:
- 提交文件时读取扩展属性,
- 将属性写入存储在库中的文件中并提交,
- 在合并/检出/重置期间修改的文件中应用扩展属性。
我应该使用哪个hook?我只需要post-receive
和pre-commit
吗?pre-commit
是否也可以在写入新属性后将文件添加到提交中?