Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение под *NIX системы > Проблема с исполнением хуков в git


Автор: alex_smirnov 27.3.2009, 16:58
Добрый день,

для гит-репозитория пишу хук update.

Надо сделать так, чтобы:
1. хук сделал клон репозитория, в который производится push (репозитория в котором находится хук);
2. после того как клон сделан, надо сделать checkout нужной ветки.

Собственно, содержимое хука:
!/bin/sh
git clone ../tftest.git /tmp/tftest-clone;
cd /tmp/tftest-clone;
pwd;
git checkout --track -b second_branch origin/second_branch;
pwd;

Клон делается успешно и переход в папку с клонированым репозиторием тоже происходит (pwd).
А вот чекаут не происходит :(.
Гит ругается: fatal: Not a git repository: '.', после чего выводится правильный путь до клонированного репозитория.

Если вместо чекаута заснуть (sleep 10s), и в это время сделать чекаут в другой консольке в нужной папке, то всё впорядке.
И вообще, если построчно выполнять скрипт ручками, то всё работает.

В чем тут проблема не пойму. Буду благодарен за подсказки.

ЗЫ: может мне надо изобразить некоторый другой процесс, который сделает чекаут и вернет управление скрипту, но как это грамотно сделать?

Автор: alex_smirnov 27.3.2009, 17:25
Решилось!!! smile

Читайте доки называется:
When update-hook is run, GIT_DIR is set to '.' by the calling receive-pack.

Перед клоном надо было выполнить следующее:
unset GIT_DIR;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)