【发布时间】:2019-06-17 16:19:11
【问题描述】:
我正在从另一个 git-hook pre-push 的 shell 脚本运行一个 shell 脚本。
这是.git/hooks/pre-push的内容:
#!/usr/bin/env bash
protected_branch='master'
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
if [ $protected_branch = $current_branch ]; then
sh test.sh
if [ $? != 0 ]; then
echo "Error"
exit 1
fi
else
exit 0
fi
这是test.sh的内容:
#!/bin/bash
run_base=1
run_test () {
read -p "enter varname: " varname
echo $varname
}
time {
if [ "$run_base" = "0" ] ; then
echo "skipped"
else
time { run_test ; }
echo "run_test done";
fi
}
如果我直接运行pre-push 脚本,那么它可以正常工作,但是当我执行git push origin master 并且pre-push 会自动触发时它不起作用。
当我触发pre-push 钩子脚本时,test.sh 中的read 没有被执行。为了在test.sh(从pre-push 调用)中执行read,我是否需要做任何特定的事情?
【问题讨论】:
标签: linux bash shell scripting githooks