ОПИСАНИЕ
Я хочу отправлять сообщения журнала изменений всем коллегам, когда в определенной ветке (тестовой ветке) в репозитории mercurial делается толчок.
Меркуриал Настройка
- Локальный клонированный репозиторий (локальный компьютер пользователя)
- Репозиторий сервера (на сервере пользователи могут отправлять или извлекать изменения из своих локальных репозиториев на своих компьютерах)
- Репозиторий песочницы (обновляется параллельно с сервером, чтобы отслеживать и иметь ссылку)
Идея скрипта bash.
- incomming-hook в репозитории сервера. Он запускает сценарий bash (bash-script1), который, в свою очередь, запускает другой сценарий bash (bash-script2), который проверяет некоторые условия и отправляет электронные письма. bash-script 1 имеет две переменные $HG_NODE9, установленные mercurial) и вывод stderr из него.
коды ниже.
1. Зацепите меркуриальный сервер (/var/hg/repository/.hg/hgrc)
[hook]
incoming=/home/user/incomming
Bash-скрипт 1 (/home/user/incomming)
nohup /usr/bin/sudo -i -u user /home/user/bin/changelog.sh $HG_NODE &>/dev/null &
Bash-скрипт 2 (/home/user/bin/changelog.sh)
#we go to the sandbox repository directory cd /home/user/hg/repository L_BRANCH_SANDBOX=$($HG branches | $GREP testbranch | $SORT -Vr |$AWK '{print $1}') P_BRANCH=$($HG log -r $HG_NODE | $HEAD -n 4 | $GREP branch: | $AWK '{print $2}') if [[ "$L_BRANCH_SANDBOX" == "$P_BRANCH" ]] ; then Some commands and send mail fi
РЕЗУЛЬТАТ
Я вижу, что хук срабатывает, когда мой BASH-SCRIPT1 выдает вывод, если я добавляю несколько эхо-сигналов вверху и внизу, но мой BASH-SCRIPT2 даже не запускается, поскольку он даже не повторяется в самом начале. Но мой BASH_SCRIPT2 запускается, если я запускаю его вручную с известным $HG_NODE.
Спасибо за Вашу поддержку