如何在hook脚本提交后获取项目路径?(git)

0kjbasz6  于 2023-01-24  发布在  Git
关注(0)|答案(2)|浏览(145)

我想调用位于存储库中的脚本。
我当然可以这样做:

#!/bin/sh
../../myscript.sh

但我认为这并不好)
那么如何在提交后脚本中获取项目的路径呢?

67up9zun

67up9zun1#

当你处理一个非裸仓库时,post-commit 1钩子会在仓库工作树的当前工作目录下运行,所以你不需要../../
如果您需要脚本的完整路径,您可以执行以下操作:

SCRIPT=$(readlink -nf myscript.sh)

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

SCRIPT=$(git rev-parse --show-toplevel)/myscript.sh

1 ...但是注意,对于其他一些钩子来说,情况并非如此,例如,在非裸仓库中的post-receive钩子中,当前工作目录是.git目录。

tsm1rwdh

tsm1rwdh2#

这仍然有效吗?我的post-commit包含

#!/bin/sh
exec ./../../myscript.sh

并且工作。
仅使用exec myscript.shmyscript.sh是不起作用的。
此外,即使是myscript.sh,如果要求输入pwd,也会返回/.git/hooks文件夹。使用$GIT_WORK_TREE指向~。我目前还没有看到指向repo根的可靠方法。

相关问题