如何在提交后的钩子脚本中获取项目路径?(git)

kmi*_*ndi 9 git path post-commit

我想调用位于存储库中的脚本.

我当然可以做以下事情:

#!/bin/sh
../../myscript.sh
Run Code Online (Sandbox Code Playgroud)

但我觉得那不好;)

那么如何在post-commit脚本中获取项目的路径?

Mar*_*air 17

当您处理非裸存储库时,post-commit1钩子将与存储库的工作树的当前工作目录一起运行.所以,你不需要../../.

如果您想要脚本的完整路径,您可以随时执行:

SCRIPT=$(readlink -nf myscript.sh)
Run Code Online (Sandbox Code Playgroud)

...或者您可以使用git rev-parse --show-toplevel获取工作目录的绝对路径:

SCRIPT=$(git rev-parse --show-toplevel)/myscript.sh
Run Code Online (Sandbox Code Playgroud)

1 ...但请注意,对于其他一些挂钩不是这样,例如在post-receive非裸存储库中的挂钩中,当前工作目录是.git目录.