Как сказал @meagar, похоже, что клонированный репозиторий на удаленном сервере был клонирован с опцией --bare
. Клонируйте его снова без этой опции, чтобы получить нормальную копию «рабочего каталога», как у вас локально.
Итак, теперь вы должны иметь:
- ваш локальный репозиторий
- пустой репозиторий на сервере
- обычный на сервере (клонированный с нуля)
Имея это в виду, теперь вы можете создать ловушку после получения, которая запускается всякий раз, когда что-то помещается в пустой репозиторий. Хуки живут (на сервере) в папке хуков простого репо (там есть примеры для различных случаев).
#!/bin/bash
while read oldrev newrev refname
do
if [ "$refname" == "refs/heads/master" ]; then
WORKDIR=/path/to/checked/out/repository
export GIT_DIR=$WORKDIR/.git
pushd $WORKDIR >/dev/null
git pull --quiet >/dev/null
# run some scripts in the checked out repository
popd >/dev/null
fi
done
Этот скрипт специально ищет толчок к основной ветке, но его можно легко изменить на другую ветку или полностью удалить. Затем он переключается на рабочий каталог вашего извлеченного репозитория и выполняет извлечение. После завершения загрузки вы можете запускать любые другие полезные команды bash.