预提交挂钩中的git clone导致挂钩失败

时间:2018-11-26 16:49:42

标签: git

我有一个预提交的挂钩,需要对所有已提交的文件运行自定义的内部扫描程序。该扫描仪也保持在其自己的git repo中。因此,在挂钩文件中,我运行git clone ...以确保正在使用最新版本。我遇到的问题是,克隆后的所有git命令都在克隆的仓库上运行,而不是在运行挂钩的命令上运行。结果,我无法获得更新文件的列表。此外,该挂钩始终会失败,并显示以下信息:

  

错误:无效的对象...
  错误:建立树错误

列出的无效对象来自克隆的存储库。

我已经确定要克隆到一个完全不同的目录中。在提交之前,我还设置了GIT_TRACEGIT_TRACE_SETUP环境变量。我可以看到git_dir,worktree和cwd值都与我期望的一样。首先将它们设置为第一个存储库,然后在克隆过程中将其设置为克隆的存储库,然后在克隆完成后再设置为第一个存储库。

一旦我卸下git clone,钩子就会顺利运行。

我正在运行git的2.11.0版本。

为什么克隆会造成如此大的破坏,我该如何防止呢?

0 个答案:

没有答案