我在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引用,所以如果你这样做了:
Commit
Tag
(任何修订,甚至是老歌)Commit
$refname
将指向最后一个引用(即/refs/heads/master
),这样做:
if [[ "$refname" == "refs/tags/"* ]]; then
...
fi
不会按照提及的顺序工作。我尝试使用rev-list
和for-each-ref
来迭代引用,但没有成功。
我如何处理正在接收的推送,知道标签的数量(以及获取每个标签的评论)以满足上限条件?
PS:还要考虑使用--all选项推送的情况,接收多个分支。