gpt4 book ai didi

git - 跨平台 git 钩子(Hook)

转载 作者:IT王子 更新时间:2023-10-29 01:29:15 25 4
gpt4 key购买 nike

您如何跨各种平台(例如,*nix 和 windows)管理 git 预/后提交 Hook ?

针对此场景推荐的最佳做法是什么?

最佳答案

git 钩子(Hook)实际上与任何 shell 脚本没有什么不同,因为保持它们“跨平台”的最佳实践同样适用。细微差别在于,您也可能将 Windows *nix 仿真层作为这些 Hook 的主要用户,并且与大多数实际的 Unix 环境相比,这些可能相对较弱。

我刚刚将一个提交后 Hook (并编写了一个提交前 Hook )移植到默认的 Git for Windows,它使用 MINGW32。自上一版本对可用的脚本环境做出一些假设后,我必须做出一些更改:

  • 没有可用的 readlink,但无论如何它在 Windows 上都是无效的,所以我只是入侵检查了 which readlink 并且如果没有就没有操作
  • 重定向到 /dev/null 在 Windows 中不起作用,相反你必须重定向到 nul,为此我只是做了一个 uname - s 检查并设置要重定向到的变量
  • 没有可用的 mktemp,但由于它是我们最终要修剪的目录,所以我们使用了一个简单的硬编码目录名
  • 出于某种原因,通过 exec >>$out 重定向 STDOUT 在 MINGW32 中工作正常,但 exec 2>>$err 对 STDERR 没有(似乎默默地死去),所以不幸的是我们不得不避开这种重定向

除此之外,它按原样运行得很好,因为其中没有很多特定于平台的“东西”。因此,只要坚持制作跨平台脚本的最佳实践,这至少能让您完成 80% 的任务。之后,在您针对的所有各种环境中进行测试测试。

关于git - 跨平台 git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com