如果git命令失败,如何退出git hook脚本?

时间:2017-08-03 21:55:33

标签: git githooks

我有一个no git hook:

post-receive

如何检查git命令的状态并在脚本失败时停止脚本继续?

如下所示:

#!/bin/bash

while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ -n "$branch" ] && [ "master" == "$branch" ]; then
       working_tree="/path/to/working/dir"
       GIT_WORK_TREE=$working_tree git checkout $branch -f
       GIT_WORK_TREE=$working_tree git pull
       <more instructions>
    fi
done

1 个答案:

答案 0 :(得分:1)

  

如何检查git命令的状态并在脚本失败时停止脚本继续?

以同样的方式检查任何shell命令的状态:通过查看返回代码。您可以在命令退出后检查shell变量$?的值,如:

GIT_WORK_TREE=$working_tree git pull
if [ $? -ne 0 ]; then
  exit 1
fi

或者将命令本身用作条件的一部分,如:

if ! GIT_WORK_TREE=$working_tree git pull; then
  exit 1
fi