git - 无法引入 git 钩子(Hook)(bash 脚本)

标签 git bash ubuntu githooks

我正在一个网站上工作,在 Ubuntu 12.04 服务器上。当我将代码推送到我的网站时,我希望我的钩子(Hook)自动 pull我的 apache 文件夹中的代码。以下命令将我的网站更新为存储库的当前主节点,没有任何问题:

cd /var/www/www.foo.net
git pull

我的 post-update hook 应该自动执行此操作,但每次推送时我都会收到相同的错误。请注意,推送每次都正确执行。脚本如下所示(省略了不相关的代码):
#!/bin/bash
BRANCH=$(git rev-parse --symbolic --abbrev-ref $1)
case "$BRANCH" in
"somebranch")
        echo "You are pushing to somebranch!"
        cd /var/www/www.foo.net
        pwd
        git pull
        ;;
esac

在我看来,这看起来应该可以工作,特别是考虑到调试输出是我所期望的。然而它不起作用。我总是得到以下输出:
remote: You are pushing to somebranch!
remote: /var/www/www.foo.net/
remote: fatal: Not a git repository: '.'

请注意它如何报告它位于正确的目录中,并且如上所述,我能够毫无问题地 pull 入该目录。 /var/www/www.foo.net/ 一个 git 存储库。

我也尝试过使用 ( cd /var/www/www.foo.net/ ; git pull )但无济于事。我也不认为它与权限有任何关系。我正在使用 Gitolite,并且能够通过使用 Gitolite 设置的帐户 pull 到本地存储库。

有任何想法吗?我一点也不快乐。

最佳答案

如果/var/www/www.foo.net/是一个有效的 git repo 试试

git --git-dir=/var/www/www.foo.net/.git --work-tree=/var/www/www.foo.net pull

这应该会导致 FF pull 。

关于git - 无法引入 git 钩子(Hook)(bash 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427238/

相关文章:

c++ - 在 C++ 中写入 1000 个文件时如何有效地缓冲

python - IPython 笔记本的版本控制

git - 如何重用 docker-compose 项目?

bash - 脚本 virtualenvwrapper mkvirtualenv

linux - `nohup` 通过 PID 调用一个已经运行的进程(类似于 AIX nohup -p)

C++程序无法编译

git - 为什么 git 先压缩对象,然后再接收它们?我觉得应该反过来

Git rebase - 另一个人可以为我 rebase 远程分支吗?

bash - 使用 awk 转置 CSV 数据(枢轴转换)

ubuntu - Docker 下载了超过 30 个 ubuntu 镜像