ОПИСАНИЕ
Я хочу отправлять сообщения журнала изменений всем коллегам, когда в определенном филиале (test-branch) в ртутном хранилище делается push.
Mercurial Setup
- Локальный клонированный репозиторий (локальный компьютер пользователя)
- Серверный репозиторий (на сервере пользователи могут выдвигать или извлекать изменения здесь из своего локальногорепозитории на их компьютерах)
- репозиторий песочницы (обновляется параллельно с сервером для отслеживания и получения ссылки)
Идея, стоящая за сценарием bash.
- incomming-hook в репозитории сервера. Он запускает скрипт bash (bash-script1), который запускает другой скрипт bash (bash-script2), который проверяет некоторые условия и отправляет электронные письма.bash-скрипт 1 имеет две переменные $ HG_NODE9set by mercurial) и вывод stderr из него.
коды приведены ниже.
1.Прицепить на ртутном сервере (/var/hg/repository/.hg/hgrc)
[hook]
incoming=/home/user/incomming
Bash-скрипт 1 (/ home / пользователь / входящий)
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.
Спасибо за вашу поддержку