代码之家  ›  专栏  ›  技术社区  ›  Naguib Ihab

向要在挂钩中使用的git命令添加标志

git
  •  1
  • Naguib Ihab  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 6 年前
        1
  •  0
  •   CodeWizard    6 年前

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

    但是 你可以告诉Git忽略钩子

    --no-verify 钩完全绕过。

    git push --no-verify
    

    否则,您可以执行以下操作之一:

    1. 用所需的配置编写一个配置文件,并在钩子中读取它。
    2. 添加注释 git notes add .... 用所需的标志提交并在钩子中再次读取它
    3. 将代码推送到特定的分支并跳过此分支的测试,如果希望合并它,请使用拉请求(不知道您的服务器是什么)
    4. 提交一个特定的文件,如果它存在,每当Git在提交中看到这个文件时就运行测试。
        2
  •  0
  •   jthill    6 年前

    您还可以在环境中设置变量,Git将通过这些变量。选一些乱七八糟的前缀,怎么样 mghpp 对于“我的Git Hook”,对于初学者来说,“预推”。然后

    mghppbypass= git push
    

    在你的Git钩子里,

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