Mercurial 中是否有一个现有的钩子,就像 changegroup 一样,它允许在推送时执行操作,但允许我根据哪些分支受其中的变更集影响来执行多个操作(或改变它们)?
例如,我需要在进行推送时通知 url 上的侦听器,但理想情况下,它会根据受影响的分支通知不同的 url,而不仅仅是将它们全部覆盖。
Mercurial 中是否有一个现有的钩子,就像 changegroup 一样,它允许在推送时执行操作,但允许我根据哪些分支受其中的变更集影响来执行多个操作(或改变它们)?
例如,我需要在进行推送时通知 url 上的侦听器,但理想情况下,它会根据受影响的分支通知不同的 url,而不仅仅是将它们全部覆盖。
没有特定于分支的钩子,但您可以在钩子本身中执行该逻辑。例如在你的hgrc
:
[hooks]
changeset = actions-by-branch.sh
然后在你的actions-by-branch.sh
你会做:
#!/bin/bash
BRANCH=$(hg log --template '{branch}' -r $HG_NODE)
BRANCH=${BRANCH:-default} # set value to 'default' if it was empty
if [ "$BRANCH" == "default" ] ; then
do something
elif [ "$BRANCH" == "release" ] ; then
do something else
else
do a different thing
fi
请注意,我使用了变更集而不是变更组挂钩。单个变更组可以在多个分支上具有变更集,这会使逻辑复杂化。如果您决定走那条路,您需要从$HG_NODE
一路循环到tip
对变更组中的每个变更集采取行动。