git autodeploy script when it matches the string "[deploy]"
#!/bin/sh | |
# | |
# git autodeploy script when it matches the string "[deploy]" | |
# | |
# @author icyleaf <icyleaf.cn@gmail.com> | |
# @link http://icyleaf.com | |
# @version 0.1 | |
# | |
# Usage: | |
# 1. put this into the post-receive hook file itself below | |
# 2. `chmod +x post-recive` | |
# 3. Done! | |
# Check the remote git repository whether it is bare | |
IS_BARE=$(git rev-parse --is-bare-repository) | |
if [ -z "$IS_BARE" ]; then | |
echo >&2 "fatal: post-receive: IS_NOT_BARE" | |
exit 1 | |
fi | |
# Get the latest commit subject | |
SUBJECT=$(git log -1 --pretty=format:"%s") | |
# Deploy the HEAD sources to publish | |
IS_PULL=$(echo "$SUBJECT" | grep "\[deploy\]") | |
if [ -z "$IS_PULL" ]; then | |
echo >&2 "tips: post-receive: IS_NOT_PULL" | |
exit 1 | |
fi | |
# Check the deploy dir whether it exists | |
DEPLOY_DIR=/home/icyleaf/php/icyleaf/ | |
if [ ! -d $DEPLOY_DIR ] ; then | |
echo >&2 "fatal: post-receive: DEPLOY_DIR_NOT_EXIST: \"$DEPLOY_DIR\"" | |
exit 1 | |
fi | |
# Check the deploy dir whether it is git repository | |
# | |
#IS_GIT=$(git rev-parse --git-dir 2>/dev/null) | |
#if [ -z "$IS_GIT" ]; then | |
# echo >&2 "fatal: post-receive: IS_NOT_GIT" | |
# exit 1 | |
#fi | |
# Goto the deploy dir and pull the latest sources | |
cd $DEPLOY_DIR | |
#env -i git reset --hard | |
env -i git pull |
This comment has been minimized.
This comment has been minimized.
赞,正需要呢 |
This comment has been minimized.
This comment has been minimized.
请问脚本的最后一个命令为什么要用 |
This comment has been minimized.
This comment has been minimized.
请问用户名和密码如何解决 |
This comment has been minimized.
This comment has been minimized.
@hezll 证书啊 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
有一事不明: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
您好,我用这个脚本之后部署端只能pull到前一个版本的代码(就是我push之前的代码)。典型的输出是这样的:
我检查再三,确实是把这段代码粘贴到了post-receive这个hook里。
请问您有没有遇到过这种问题,是如何解决的。
谢谢
问题解决了。。我用http方式clone的,所以在
git pull
之前要先git update-server-info
。所以这段脚本直接放到post-update钩子里就好了。。。