我在GIT中使用pre-receive钩子(在Linux上使用bash)来过滤允许进入我的仓库的推送。
我需要过滤开发者对我的GIT仓库的推动,只需要按下这些必要条件即可( #是数字):
# Commits > 0 && # Tags != 0 :不 # Commits > 0 && # Tags == 0 :是的 # Commits == 0 && # Tags > 1 :否 # Commits == 0 && # Tags == 1 && Key is correct :是的 考虑与提交相同的分支和其他操作。 您只能使用正确的键(在标签注释中指定)推送单个标签。 您不能用其他元素推送标签。
问题是$refname只有HEAD ref,所以如果你这样做的话:
Commit Tag (任何修订,甚至老年人) Commit $refname将指向最后一个引用(即/refs/heads/master ),这样做:
if [[ "$refname" == "refs/tags/"* ]]; then ... fi
将不会在提到的顺序工作。 我尝试使用rev-list和for-each-ref遍历引用,但没有成功。
我怎么能处理被接收的推送,知道标签的数量(并获得每个评论)以满足上面的条件?
PS:还可以考虑推出 – all选项,接收多个分支的情况。