【发布时间】:2014-05-18 17:46:11
【问题描述】:
我参考了 David Gageot 的优秀文章:Serverless CI with git。
让我在此处包含大卫的脚本:
#!/bin/bash
if [ 0 -eq `git remote -v | grep -c push` ]; then
REMOTE_REPO=`git remote -v | sed 's/origin//'`
else
REMOTE_REPO=`git remote -v | grep "(push)" | sed 's/origin//' | sed 's/(push)//'`
fi
if [ ! -z "$1" ]; then
git add .
git commit -a -m "$1"
fi
git pull
if [ ! -d ".privatebuild" ]; then
git clone . .privatebuild
fi
cd .privatebuild
git clean -df
git pull
if [ -e "pom.xml" ]; then
mvn clean install
if [ $? -eq 0 ]; then
echo "Publishing to: $REMOTE_REPO"
git push $REMOTE_REPO master
else
echo "Unable to build"
exit $?
fi
fi
如果我对这个脚本的理解正确,它会将初始 git 存储库克隆到第二个隐藏的 git 存储库,将在其中运行单元测试。
如果单元测试通过,第二个隐藏存储库将被推送到初始工作存储库。
我的问题如下:
- 应该如何使用这个脚本?通过调用它而不是
git commit命令?作为预提交挂钩? - 如果在运行单元测试时对初始 git 存储库进行了更改,会发生什么情况?
【问题讨论】:
标签: git bash git-merge git-commit git-remote