【发布时间】:2018-11-29 10:17:25
【问题描述】:
说明
当在 mercurial 存储库的特定分支(测试分支)中进行推送时,我想向所有同事发送更改日志消息。
Mercurial 设置
- 本地克隆存储库(用户本地机器)
- 服务器存储库(在服务器上,用户可以从他们机器上的本地存储库推送或拉取更改)
- 沙盒存储库(与服务器并行更新以保持跟踪和参考)
bash 脚本背后的想法。
- 服务器存储库上的incomming-hook,它触发了一个bash脚本(bash-script1),该脚本又触发另一个bash脚本(bash-script2)检查一些条件并发送电子邮件。 bash-script 1 有两个变量 $HG_NODE9set by mercurial) 和 stderr 输出。
代码如下。
1.Hook mercurial 服务器 (/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 甚至没有启动,因为它甚至在一开始就没有回声。但是如果我使用已知的 $HG_NODE 手动运行我的 BASH_SCRIPT2。
感谢您的支持
【问题讨论】:
标签: bash mercurial mercurial-hook