git pre-push 钩子(Hook),如果是 --tags 则不要运行

标签 git githooks git-tag

我有一个 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

Original

也就是说,尝试在钩子(Hook)中调用 env; git 设置了一些额外的变量(以 GIT_ 前缀开头,例如 GIT_INDEX_FILE)。

关于git pre-push 钩子(Hook),如果是 --tags 则不要运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551613/

相关文章:

amazon-elastic-beanstalk - Gitlab 中的钩子(Hook)或其他东西可以对 AWS Elastic Beanstalk 执行 git aws.push

git - 哪些名称是有效的 git 标签?

git - 如何通过将标签推送到 github 来触发 Azure 管道中的构建

git push 对于一个分支来说非常慢

git - 有什么方法可以查看在 github 上访问/下载 repo 的最后/次数?

git - 向 git commit 添加额外参数

git - 如何设置 TFS 2013 构建定义以从 Git 标签构建?

git - TortoiseGit 图标叠加层在未修改时显示已修改

git - 使用 JSch 连接到 github 时“用户身份验证失败”

git 预推 : connection closed by remote host while running tests