git hook中的$GIT_DIR
一直使用githook post-update来部署我的jekyll博客,每次push到远程git仓库的时候,在vps上的生产目录会自动更新和重新生成页面和静态资源, post-update文件是这样的:
#!/bin/usr/zsh
branchName=$(git rev-parse --symbolic --abbrev-ref $1)
HOME=/home/******
BLOG_DIR=$HOME/*******
cd $BLOG_DIR
git pull origin $branchName
if [ $branchName = "master" ]; then
[ -s $HOME/.nvm/nvm.sh ] && . $HOME/.nvm/nvm.sh # This loads NVM
export PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
nvm use 113
$HOME/.rvm/bin/rvm use ruby-2.0.0
jekyll build
make front
fi
exec git update-server-info
但是执行的时候会出现一个奇怪的问题:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: fatal: Not a git repository: '.'
...
最后的这一句表示出错了,而且git pull也没有正确进行。
有人在这个问题中谈到解决方法,改进的部分在这里:
cd $BLOG_DIR || exit
unset GIT_DIR
git pull origin $branchName
之后果然就可以正确地pull代码了。