我有一个预提交的挂钩,需要对所有已提交的文件运行自定义的内部扫描程序。该扫描仪也保持在其自己的git repo中。因此,在挂钩文件中,我运行git clone ...
以确保正在使用最新版本。我遇到的问题是,克隆后的所有git
命令都在克隆的仓库上运行,而不是在运行挂钩的命令上运行。结果,我无法获得更新文件的列表。此外,该挂钩始终会失败,并显示以下信息:
错误:无效的对象...
错误:建立树错误
列出的无效对象来自克隆的存储库。
我已经确定要克隆到一个完全不同的目录中。在提交之前,我还设置了GIT_TRACE
和GIT_TRACE_SETUP
环境变量。我可以看到git_dir,worktree和cwd值都与我期望的一样。首先将它们设置为第一个存储库,然后在克隆过程中将其设置为克隆的存储库,然后在克隆完成后再设置为第一个存储库。
一旦我卸下git clone
,钩子就会顺利运行。
我正在运行git的2.11.0版本。
为什么克隆会造成如此大的破坏,我该如何防止呢?