4

pre-receive在 GIT 中使用钩子(在 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,所以如果你这样做:

  1. Commit
  2. Tag(任何修订,甚至老歌)
  3. Commit

$refname指向最后一个引用(即/refs/heads/master),这样做:

if [[ "$refname" == "refs/tags/"* ]]; then ... fi

不会按照提到的顺序工作。rev-list我尝试使用and遍历引用for-each-ref,但没有成功。

我如何处理收到的推送,知道标签的数量(并获取每个标签的评论)以满足上面的条件?

PS:还要考虑使用 --all 选项推送的情况,接收多个分支。

4

0 回答 0