Mercurial Changegroup挂钩因分支而异

zik*_*agx 6 mercurial hook

Mercurial中是否存在现有的钩子,像changegroup一样,允许在推送时进行操作,但允许我根据哪些分支受其中的更改集影响而执行多个操作(或更改它们)?

例如,我需要在推送时通过url通知侦听器,但理想情况下,它会根据受影响的分支通知不同的URL,而不必覆盖所有分支.

Ry4*_*ase 7

没有branch-specfic钩子,但是你可以在钩子本身做这个逻辑.例如在你的hgrc:

[hooks]
changeset = actions-by-branch.sh
Run Code Online (Sandbox Code Playgroud)

然后在你的工作中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
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了变更集而不是changegroup hook.单个更改组可以在多个分支上具有更改集,这会使逻辑复杂化.如果您决定采用该路线,则需要从$HG_NODE所有路径循环tip以对变更组中的每个变更集执行操作.