我试图让某种自动部署工作。
我目前的更新后挂钩如下所示:
#!/bin/sh
for ref in $@
do
if [ $ref = "refs/heads/master" ]
then
echo "Deploying $ref to dev-domain"
cd ~/www/dev-domain
echo "" > system/lock
if ! git pull --ff-only
then
echo "Failed to pull"
exit
fi
if ! system/migrateDatabase
then
echo "Failed to migrate"
exit
fi
rm system/lock
fi
done
但我得到的只是:
remote: Deploying refs/heads/master to dev-domain
remote: fatal: Not a git repository: '.'
remote: Failed to pull
但文件锁文件将放在正确的位置。
所以,对我而言,似乎git pull
忽略了当前的工作目录......我该如何解决这个问题?
或者我错过了不同的东西?
答案 0 :(得分:1)
您需要在GIT_DIR
之前取消git pull
。
如果你不这样做,git将使用variable GIT_DIR
而不是PWD
cd-ing改变了PWD而不是GIT_DIR。
正如Mark Longair的文章“Missing git hooks documentation”中提到的那样,GIT_DIR
是由钩子设置的。
在this answer旁边的Chris Johnsen中查看详情。