我创建了一个简单的项目,提交并推送了主分支,然后保护它.之后,我作为开发人员将一个用户添加到项目中,并允许该用户推送到master.
所以admin = master,user1 = developer.
当我修改并推送为user1时,我被允许推送到master.这很奇怪,因为我有一个不允许这样的生产实例.
我使用vagrant安装来设置开发环境.
流浪者ssh之后:
cd / vagrant / gitlabhq&& git pull –ff origin master
把我放在提交a8b544ed770cf172b09feb6ffee14b1814b66ad4,gitlab-shell v1.5.0
cd / vagrant / gitlabhq&&捆绑exec工头启动-p 3000
gitlab现在正在运行.
我以admin@local.host登录
添加了我的“管理员”密钥
创建项目“主人保护”
在shell中,我创建了repo,添加了一个文件并提交并推送.
作为“user1”,我添加了我的密钥,并在shell中克隆了“master-protected”,其中user1具有开发人员角色.
当我修改并推送master时,gitlab接受了push,并且提交显示在gitlab中.它应该否认它.实际上,当你转到分支部分,并看到主分支被保护时,它的最后一次提交是“user1”的提交,它只具有开发者权限.
关于我可以进一步研究的任何想法,试着找出为什么在开发环境中发生这种情况?对于标签v5.3.0也是如此,我确信它不会在生产v5.3.0中发生.
这很有趣,因为我试图复制另一个错误,我认为我发现受保护的分支没有受到合并请求和开发人员角色的保护,但我遇到了这个问题.
最佳答案 很抱歉稍后碰到这几个飞蛾,但我有同样的问题,我设法通过检查gitlab-shell更新钩子来解决这个问题.
我有Gitlab版本5.1.0-4,在我的例子中,gitlab-shell / hooks / update文件应如下所示:
#!/usr/bin/env /opt/gitlab-5.1.0-4/ruby/bin/ruby
# This file was placed here by GitLab. It makes sure that your pushed commits
# will be processed properly.
refname = ARGV[0]
key_id = ENV['GL_ID']
repo_path = `pwd`
require_relative '../lib/gitlab_update'
GitlabUpdate.new(repo_path, key_id, refname).exec
我希望能帮助别人.
最好的祝福.
佩德罗弗洛雷斯