我正在尝试向 git 的 post-recieve-email 挂钩添加一些功能,以忽略特定分支或仅在特定分支上发送电子邮件(显然这些选项将是互斥的)。我不想将分支列表硬编码到钩子本身中,而是使用存储库配置文件的 [hooks] 部分。
我正在努力的地方是保持 shell bourne shell 兼容,同时仍然能够查看分支名称是白名单还是黑名单的一部分。
我认为我可以做这样的事情:
whitelist=$(git hooks.branch_whitelist)
while read oldrev newrev refname
do
branch_name=${refname#refs/heads/}
for wl_branch in $whitelist
do
if [ $branch_name = $wl_branch ]
... send email ...
break # prevents multiple emails on malformed whitelist string
done
done
出于某种原因,上述内容似乎是错误的。有没有人有更好的方法来检查字符串是否是列表的成员(如果我理解正确,则不是 bourne 中支持的数据结构)?
编辑:能够进行部分字符串匹配也很好(例如,将所有 -dev 分支列入黑名单),但我一遍又一遍地找到的唯一答案是来自 bash 的双括号方法。