git - 预提交钩子中的 git clone 导致钩子失败
问题描述
我有一个预提交挂钩,需要对所有提交的文件运行自定义的内部扫描程序。这个扫描器也在它自己的 git repo 中维护。所以在钩子文件中我运行git clone ...
以确保正在使用最新版本。我遇到的问题是git
克隆后的所有命令都在克隆的 repo 上工作,而不是在运行钩子的那个。结果,我无法获得更新文件的列表。此外,钩子总是失败:
错误:无效对象...
错误:构建树时出错
列出的无效对象来自克隆的存储库。
我确保我正在克隆到一个完全不同的目录。我还在提交之前设置了GIT_TRACE
和GIT_TRACE_SETUP
环境变量。我可以看到 git_dir、worktree 和 cwd 值都符合我的预期。它们最初设置为第一个 repo,然后在克隆过程中设置为克隆的 repo,然后在克隆完成后返回到第一个 repo。
一旦我卸下git clone
钩子,就会顺利运行。
我正在运行 2.11.0 版的 git。
为什么克隆会造成如此严重的破坏,我该如何防止呢?
解决方案
推荐阅读
- java - 具有特定字符的 Java pad 字符串
- django - Django Recaptcha 未能通过表单验证
- json - 如何在 webflux 的请求正文中获取 json 对象?
- reactjs - 连接不起作用,并且没有在 react-redux 中重新渲染
- javascript - 在嵌套组件中使用 react-router-dom 在主要内容组件之间导航
- java - 我有一个输入具有三个不同的值。如何从单个扫描仪中扫描三个值
- javascript - 如何使此代码每 5 分钟自动运行一次,以使视频标题与观看次数相匹配,即使我关闭计算机?
- python - 如何使用 python pandas 删除列索引?
- javascript - GLTF 加载警告---定时器 GLTF 加载器已经存在
- rest - 使用 HTTP 请求来触发逻辑而不是期望响应是不好的做法吗?