Проблема использования Git в качестве инструмента развертывания по веткам - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь создать сценарий пост-обновления и использовать git в качестве инструмента развертывания на удаленном сервере.

Мой сценарий после обновления выглядит примерно так

git update-server-info

for ref in $@;do
                echo $ref
                if [ "$ref"  = "refs/heads/production" ]
                then
                        ssh git@myProductionServer.com GIT_WORK_TREE=/home/www/test git checkout -f production
                fi
done

Однако,когда я запускаю это, возвращается ошибка, которая говорит:

Not a git repository (or any of the parent directories): .git

Что не имеет никакого смысла, потому что я могу запускать команды git из каталога через ssh.enter image description here

Есть ли что-то еще, что мне нужно сделать в моем скрипте после обновления?


Решение

Я добавилпеременная GIT_DIR, поэтому моя команда выглядит так:

ssh git@myProductionServer.com GIT_DIR=/home/www/test/.git GIT_WORK_TREE=/home/www/test git checkout -f production

1 Ответ

3 голосов
/ 23 марта 2011

Вам также необходимо установить переменную среды GIT_DIR - попробуйте следующее:

ssh git@myProductionServer.com GIT_WORK_TREE=/home/www/test GIT_DIR=/home/www/test/.git git checkout -f production

Правила о GIT_DIR и GIT_WORK_TREE (и их эквивалентах, --git-dir=<> и --work-tree=<>) настолько противоречивы для меня, что теперь я устанавливаю правило, что, если я устанавливаю один из них, я должен установить оба, и, кроме того, убедиться, что они оба настроены на абсолютные пути.

...