我创建了一个简单的项目,提交并推送了主分支,然后保护它。之后,我作为开发人员将一个用户添加到项目中,并允许该用户推送到主人 所以admin = master,user1 = developer。
当我修改并推送为user1时,我被允许推送到主人。这很奇怪,因为我有一个不允许这样做的生产实例。
我使用vagrant安装来设置开发环境。
流浪者ssh之后:
cd /vagrant/gitlabhq && git pull --ff origin master
让我提交a8b544ed770cf172b09feb6ffee14b1814b66ad4,gitlab-shell v1.5.0
cd /vagrant/gitlabhq && bundle exec foreman start -p 3000
gitlab现在正在运行。
我以admin@local.host身份登录
添加了我的“管理员”键
创建项目“主人保护”
在shell中,我创建了repo,添加了一个文件并提交并推送。
作为“user1”,我添加了我的密钥,并在shell中克隆了“master-protected”,其中user1具有开发人员角色。
当我修改并推送master时,gitlab接受了push,并且提交显示在gitlab中。它应该否认它。实际上,当你转到分支部分,并看到主分支被保护时,它的最后一次提交是“user1”的提交,它只具有开发者权限。
关于我可以进一步研究的任何想法,试着找出为什么在开发环境中发生这种情况?对于标签v5.3.0也是如此,我确信它不会在生产v5.3.0中发生。
这很有趣,因为我试图复制另一个错误,我认为我发现受保护的分支没有受到合并请求和开发人员角色的保护,但是我遇到了这个问题。
答案 0 :(得分:2)
很抱歉稍后碰到这几个飞蛾,但我有同样的问题,我设法通过检查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
我希望帮助别人。
最诚挚的问候。
Pedro Flores
答案 1 :(得分:0)
这可能是因为用户是管理员,(用户可以是admin
和developer
):
请参阅: https://github.com/gitlabhq/gitlabhq/issues/7723#issuecomment-63287902
从用户中删除admin
权限解决了我的问题。
答案 2 :(得分:0)
我遇到了同样的问题,就我而言,问题是项目文件夹中的“挂钩”符号链接损坏。
lrwxrwxrwx 1 git git 28 Sep 29 2015 hooks -> /home/git/gitlab-shell/hooks
如上所述修复链接