每次将代码推送到远程仓库时,我都会运行一个pre-push
脚本。 (运行OSX 10.11.6和Git 2.6.4)
#!/bin/sh
read -p "*** Did you run tests and lint? (y/n) " -n 1 -r < /dev/tty
echo # move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "*** WITH GREAT POWER COMES GREAT RESPONSIBILITY... ***"
exit 0
fi
echo "*** ABORTING GIT PUSH ***"
exit 1
如果我从命令行运行它,这个脚本可以很好地运行,并且它在技术上做得很好&#34; work&#34;当我尝试使用git gui
推送时 - 问题是Git GUI只是挂起,因为没有输入框可供我输入任何内容。
我甚至可以这样做吗?
答案 0 :(得分:2)
git-gui的一部分包含一个单独的脚本git-gui--askpass
,它通常用于使用UI请求密码,但也可以执行是/否查询。以下替换工作与git-gui而不是读取终端。
#!/bin/bash
yno=$(git gui--askpass "Did you run the tests and lint (yes/no)?")
if [ "$yno" = "yes" ]
then
echo "*** WITH GREAT POWER COMES GREAT RESPONSIBILITY... ***"
exit 0
fi
echo "*** ABORTING GIT PUSH ***"
exit 1