我有一个 prepush 钩子(Hook)来测试我的代码,但是,当我执行 git push --tags
时它也会运行。有什么办法可以避免这种情况吗?
也许有一些方法可以检查它是常规推送还是 --tags
推送?
更新 - 这些是我能够找到的唯一参数:
- $1 是 Remote 的名字
- $2 是要推送到的 url
最佳答案
我有一个解决方案,但它真的很麻烦。前一段时间,我设置了一个预提交 Hook ,以防止我在暂存文件时意外使用 -a
。我的解决方案是读取调用原始 git 命令的命令(也可能只适用于 linux)。
while read -d $'\0' arg ; do
if [[ "$arg" == '--tags' ]] ; then
exit 0
fi
done < /proc/$PPID/cmdline
# and perform your check here
也就是说,尝试在钩子(Hook)中调用 env
; git 设置了一些额外的变量(以 GIT_
前缀开头,例如 GIT_INDEX_FILE
)。
关于git pre-push 钩子(Hook),如果是 --tags 则不要运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551613/