bash - 如何在 Gitlab 中添加服务器端自定义 Hooks?
问题描述
我想要做的是我想将我的钩子添加到服务器中的 repo,以便克隆 repo 的人在推送到 Gitlab 服务器之前通过它。到目前为止,我所做的是,在 /.git/custom_hooks 的 custom_hooks 文件夹中创建了预接收文件,并向其中添加了一些脚本。以下是我的预收文件。
#!/bin/bash
zero_commit="0000000000000000000000000000000000000000"
excludeExisting="--not --all"
while read oldrev newrev refname; do
# echo "payload"
echo $refname $oldrev $newrev
# branch or tag get deleted
if [ "$newrev" = "$zero_commit" ]; then
continue
fi
# Check for new branch or tag
if [ "$oldrev" = "$zero_commit" ]; then
span=`git rev-list $newrev $excludeExisting`
else
span=`git rev-list $oldrev..$newrev $excludeExisting`
fi
for COMMIT in $span;
do
for FILE in `git log -1 --name-only --pretty=format:'' $COMMIT`;
do
echo "rejecting all pushes"
exit 1
done
done
done
exit 0
然后我在本地 Windows 机器上克隆了 repo 并尝试推送它。但它没有产生预期的效果。它仍然被推送到服务器。
我是 Gitlab 和 Git Hooks 的新手。我不知道我的预收文件是否错误或哪里出错了。请让我如何向服务器添加挂钩,以便它验证/适用于克隆我的仓库的人。请帮忙。提前致谢。
解决方案
请参阅https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks开头:
与许多其他版本控制系统一样,Git 有一种方法可以在某些重要操作发生时触发自定义脚本。这些钩子有两组:客户端和服务器端。客户端钩子由提交和合并等操作触发,而服务器端钩子在网络操作上运行,例如接收推送的提交。您可以出于各种原因使用这些挂钩。
另请参阅https://docs.gitlab.com/ee/administration/server_hooks.html
推荐阅读
- python-3.x - Pandas 数据帧 timedelta 列以格式化人类可读
- ansible - 注册循环没有给出预期的输出 - Ansible
- keras - 为什么暗网模型到 keras 模型的转换会降低准确性
- angular - Angular Material 排序表 - 如何将标题文本右对齐?
- javascript - 使用 JavaScript 启动 Windows 10 设置?
- c - 仅使用 While 循环和 If 语句用 C 绘制 X
- javascript - 计算文本中特定标签的数量
- c# - Grpc.Core 更新到 2.23,System.MissingMethodException: Method not found: Void Grpc.Core.ClientBase`1..ctor(Grpc.Core.Channel)
- keras - 如何制作 N 个相同模型的副本并分别训练?
- c# - 默认情况下如何插入用户(客户端)条目?