Хук Post-Receive не ошибается, но не копирует файлы

Я пытаюсь использовать git для развертывания изменений на сайте на локально размещенном сервере. Когда я отправляю изменения из моего локального каталога на сервер dev, ловушка post-receive обеспечивает обратную связь, которую я ожидал бы, если бы она работала, но на самом деле она не изменяла никаких файлов в рабочем дереве.

Кроме того, я работаю на Mac, и сайт размещен на сервере Windows, который используется в сети и подключен к /Volumes/I$.

Вот скрипт хука

#!/bin/bash

GIT_DIR=/Volumes/I$/intranet_dev
WORK_TREE=/Volumes/I$/intranetdev

while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        echo "Master ref received.  Deploying master branch to test server..."
        mkdir -p $WORK_TREE
        git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f
        echo "Git hooks deploy complete"
    else
        echo "Ref $ref successfully received.  Doing nothing: only the master branch may be deployed on this server."
    fi
done

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

computername:intranet username$ git push test master
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 566 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
remote: Master ref received.  Deploying master branch to test server...
remote: Git hooks deploy complete
To /Volumes/I$/intranet_dev
   1d9eb1f..f49b533  master -> master

Все это выглядит так, как должно, но измененные файлы не копируются.

1 ответ

Решение

Вы проверяете текущий HEAD, Вы уверены, что это связано с основной веткой? Зачем полагаться на это? Попробуйте проверить master вместо.

Незначительная точка, if [[ $ref = */master ]] (или пока мы в безопасности и все, if [[ $ref = refs/heads/master ]] как указывает @torek) это все, что вам нужно.

Другие вопросы по тегам