在git命令中添加标志以在钩子中使用

时间:2018-12-10 00:54:36

标签: git

我有一个git钩子,每次按下时都会运行测试:

.git/hooks/pre-push

cd $GOPATH/src/lab.omitted.com/omitted/tools/tribute/
./run-newman-non-dkr.sh

我想在其中放置一个标志,以便在不运行测试的情况下进行推送:

if [[ $* == *--skiptest* ]]
then
    echo Skipping Newman Test
else
    echo --- Running Newman Test
    cd $GOPATH/src/lab.omitted.com/omitted/tools/tribute/
    ./run-newman-non-dkr.sh
fi

但是我无法使用该标志运行git push

$ git push --set-upstream origin feature/417/itp-update --skiptest
error: unknown option `skiptest'

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

您不能在推送中添加标志。

但是,您可以告诉git忽略钩子

  

使用--no-verify,该钩子被完全绕开。

git push --no-verify

否则,您可以做以下其中之一:

  1. 编写具有所需配置的配置文件,然后在钩子中读取它
  2. 在提交中添加注释git notes add ....,并带有所需的标志,然后在钩子中再次读取
  3. 将您的代码推送到特定分支,并跳过对该分支的测试,如果您希望将其合并,请使用拉取请求(不知道服务器是什么)
  4. 提交特定文件,如果git在提交中看到该文件,则该文件是否存在运行测试

答案 1 :(得分:0)

您还可以在环境中设置变量,git会通过这些变量。选择一些乱码前缀,mghpp代表“我的git hook”,而“ pre-push”代表入门者。然后

mghppbypass= git push

并在您的git钩子中,

if [[ ${mghppbypass+set} = set ]]; then
        echo bypassing pre-push tests
else
        the pre-push tests
fi