git post-receive не работает правильно - PullRequest
10 голосов
/ 28 марта 2012

У меня следующая проблема. Я обновил «post-receive» для CD в определенный каталог, а затем вытащил репозиторий, чтобы развернуть его следующим образом:

#!/bin/bash
cd /var/www/site
git pull origin master

Однако всякий раз, когда я выполняю 'git push origin master' на моей локальной машине, я получаю следующее:

Counting objects: 5, done.
Delta compression using up to 2  threads.
(etc..)
remote: fatal: Not a git repository: '.'

Тем не менее, когда я вручную перехожу на /var/www/site и делаю git pull origin master, это работает блестяще.

Ответы [ 2 ]

16 голосов
/ 28 марта 2012

Использовать неустановленный GIT_DIR следующим образом

#!/bin/bash
cd /var/www/site || exit
unset GIT_DIR
git pull origin master
exec git-update-server-info

Больше информации о GIT_DIR вы можете найти здесь. Git любит окружающую среду

2 голосов
/ 24 августа 2013

Другой вариант - вы можете указать рабочий каталог и каталог git в команде.

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git <command>

например:

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git status
...