git - 如何限制推送到分支?
问题描述
我们有 git repo 的服务器实现。我想将除我之外的所有人的推送限制在回购的分支之一。
所以,我.git/hooks/update
在服务器 git dir 下添加了这样的脚本
#!/bin/sh
if [ "$USER" != "Aleksey" ] && [ "$1" == refs/heads/test_br ];then
echo "Manual pushing to this repo is restricted"
exit 1
fi
我看到那个条件"$USER" != "Aleksey"
总是true
. 第二个条件看起来很好,但名称条件不是......
谁知道是什么问题?也许我需要与用户邮件进行比较?或者是其他东西?
随意问
解决方案
git
没有任何用户的概念。无论您使用什么协议推送到远程$USER
,服务器端都在该用户下git
运行。例如,如果您像这样推送,git push git@remote-server/repo.git
则$USER
始终是git。
如果你想要基于用户的分支保护,你需要安装一些具有用户概念的东西——gitolite、github、gitlab 等。
推荐阅读
- typescript - 如何使用一种类型键入具有相同结构的函数签名和数组
- javascript - 如何在 webpack 中创建具有给定名称的输出文件名?
- azure-devops - 如何使用 Azure DevOps REST API 将条目添加到工作项的历史记录?
- r - 合并前检查对象是否存在
- mysql - 从一个表求和到另一个表的 SQL 查询
- python - 编译错误 OpenCV 4.2.0 Ubuntu 18.04:目标 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' 失败
- java - 画一个棋盘,每个棋子有 0.4 的机会被填满
- c# - C# DocuSign API:在 Docusign 上提取服务器模板而不是本地模板文档
- javascript - 嵌套组件可以改变 React 上下文吗?
- jquery - 为什么溢出不保持在底部?