Назад | Перейти на главную страницу

Git post-receive крючок висит

У меня есть перехватчик git post-receive, который создает программу Go и запускает ее. Проблема в том, что я получаю весь вывод от программы Go и git push "никогда не заканчивает" казнь, застревая там.

Ищу способ запустить программу Go без зависания команды push.

Мой файл после получения:

#!/bin/bash

while read oldrev newrev ref
do
    branch=`echo $ref | cut -d/ -f3`
    if [ "production" == "$branch" -o "master" == "$branch" ]; then
    ...

        go build

        exec ./webservice

        echo 'Pushed!'
    fi
done

Я могу предложить поставить go (и exec?) В фон с помощью (go build ; exec ./webservice )&

Вы не будете проинформированы, если в вашей программе go с помощью git возникнет проблема, поэтому вам понадобится журнал

Возможно, лучшим решением будет автоматически убить программу go, если она слишком длинная с timeout.

Решено с помощью:

nohup ./webservice > output.txt 2>&1 &

Таким образом, я могу зарегистрировать stdout и stderr в файл и избегайте зависания git post-receive крючок.