Ste*_*fan 7 git githooks gitlab
我需要检查进入 GitLab 的每个提交并阻止其中包含特定文件的任何提交。我使用了此处的文档
pre-receive我已经在目录中创建了一个名为的文件.git/custom_hooks。
该文件仅包含内容:
#!/bin/sh
exit 1
Run Code Online (Sandbox Code Playgroud)
我相信,这应该拒绝任何将代码推送到存储库的尝试(?)
该文件由 git 所有并且可执行:
ls -a给出响应:
-rwxrwxrwx 1 git root 550 ...
custom_hooks 目录也是可执行的并由 git 用户拥有。
但是所有提交都没有问题地完成,提交挂钩似乎没有以任何方式激活。
我在文档中没有看到我应该做的任何其他事情。我错过了什么吗?
一种方法是在本地计算机上设置预提交挂钩,并检查暂存文件中是否存在所述文件:
# .git/hooks/pre-comit :
#!/bin/bash
forbidden=$(git diff --cached --diff-filter=ACMR -- forbidden/file)
if [ -n "$forbidden" ]; then
echo "*** rejecting commit, file '$forbidden' is present" >&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
一个主要好处是:您(或其他用户)现在就被告知不应提交该文件,而不是稍后在推送被拒绝时通知。
缺点是:
git commit -n以跳过pre-commit并commit-msg钩子)如果你需要100%肯定这个文件不会到达中央仓库,防止这种情况的一种方法确实是设置一个pre-receive钩子,但这个钩子必须设置在服务器上。
您标记了您的问题gitlab,这里是设置此类挂钩的文档页面:
https://docs.gitlab.com/ee/administration/server_hooks.html
您需要访问 gitlab 的安装文件系统(例如:使用管理员帐户 ssh 到 gitlab 的服务器),并pre-receive在适当的项目中设置挂钩。
请注意,由于用户可以一次性推送整个分支(甚至多个分支),因此您应该检查推送到服务器的所有新提交中是否存在所述文件,而不仅仅是每个分支的尖端。
| 归档时间: |
|
| 查看次数: |
9740 次 |
| 最近记录: |