Ответ 1
A post-receive
или post-update
обычно используется для такого рода задач, выполняемых после каждого нажатия.
Разница между крючками post-receive и post-update заключается в аргументах: a post-receive
получит как старые, так и новые значения всех ссылок в дополнение к их именам.
Пропущенный фрагмент: , где этот крюк выполняет сам?
Сообщение в блоге " Отсутствует git документация с крючками" от (великого) вкладчика SO Mark Longair проливает свет на это:
текущим рабочим каталогом будет каталог git.
- Итак, если это голый репозиторий под названием "
/src/git/test.git/
", это будет текущий рабочий каталог - если это не-голый репозиторий, а верхний уровень рабочего дерева - "/home/mark/test/
", то текущий рабочий каталог будет "/home/mark/test/.git/
"Крис Джонсен подробно описывает его SO ответ: "Если указаны
–-git-dir
илиGIT_DIR
но ни один из-–work-tree
,GIT_WORK_TREE
иcore.worktree
не указан, текущий рабочий каталог рассматривается как верхний каталог вашего рабочего дерева."Другими словами, ваше рабочее дерево также будет текущим каталогом (каталог "
.git
" ), который почти наверняка не является тем, что вы хотите.
Убедитесь, что ваш hook/post-receive
script, после создания и создания исполняемого файла, устанавливает GIT_WORK_TREE
по правильному пути, чтобы ваш ./sync-all pull
выполнялся в правильном каталоге (т.е. не "xxx.git
" один").