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

У меня есть основной репо на моем сервере и два клона.

Один клон находится на моем локальном компьютере для редактирования. Другая копия находится на моем сервере в общей папке, чтобы вытащить изменения и просмотреть их вживую.

Текущая процедура, которую я прохожу, это отредактировать local -> войти на мой сервер в общую папку и сделать git pull, чтобы увидеть обновленные изменения.

Я бы хотел использовать сценарий оболочки "post-receive" для git hooks, чтобы перейти в общую папку и выполнить мастер происхождения git pull ... Я просто не могу понять, как это сделать правильно. Я попробовал это с помощью:

cd /home/demo/public_html/example.com/public/ && `git status`

Но я получаю "не хранилище"

Однако, если я бегу cd /home/demo/public_html/example.com/public/ && ls

Я получу содержимое публичной папки (поэтому я перехожу в нужное место) Спасибо заранее!

UPDATE:

Стоило упомянуть, что я пробовал это с галочками и без

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Сначала попробуйте сбросить переменную GIT_DIR env перед выполнением git pull или состояния git для теста.

unset GIT_DIR
2 голосов
/ 23 апреля 2011

Я думаю, вы хотите это:

cd /home/demo/public_html/example.com/public/ && git status

Обратные метки используются для захвата вывода команды в переменной оболочки, например:

x=`ls`

поместит вывод ls в переменную x.

1 голос
/ 23 апреля 2011

Включаете ли вы обратные кавычки вокруг git status? То есть ты пишешь cd ... && `git status` или cd ... && git status? Если вы пишете первый, то, что он делает, оценивает команду git status, а затем пытается интерпретировать результаты этого как другую команду для выполнения. Удалите обратные кавычки, и вы должны просто получить результат git status, а не ошибку, поскольку он пытается интерпретировать свои результаты как команду.

...