git pull 忽略 shell 脚本中的当前工作目录
git pull ignores current work directory in shell script
我正在尝试让某种自动部署工作。
我当前的 post-更新挂钩如下所示:
#!/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
以某种方式忽略了当前工作目录...我该如何解决这个问题?
还是我遗漏了一些不同的东西?
您需要在 git pull
之前取消设置 GIT_DIR
。
如果您不这样做,git 将使用 variable GIT_DIR
而不是 PWD。
cd-ing 更改 PWD 而不是 GIT_DIR。
如 Mark Longair's article "Missing git hooks documentation 中所述,GIT_DIR
由钩子设置。
在“this answer by Chris Johnsen.
中查看更多内容
我正在尝试让某种自动部署工作。
我当前的 post-更新挂钩如下所示:
#!/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
以某种方式忽略了当前工作目录...我该如何解决这个问题?
还是我遗漏了一些不同的东西?
您需要在 git pull
之前取消设置 GIT_DIR
。
如果您不这样做,git 将使用 variable GIT_DIR
而不是 PWD。
cd-ing 更改 PWD 而不是 GIT_DIR。
如 Mark Longair's article "Missing git hooks documentation 中所述,GIT_DIR
由钩子设置。
在“this answer by Chris Johnsen.
中查看更多内容