我创建了一个简单的项目,提交并推送主分支,然后保护它。之后,我将一个用户作为开发人员添加到项目中,并且允许该用户推送到 master。
所以 admin=master,user1=developer。
当我修改并以 user1 身份推送时,我被允许推送到 master。这很奇怪,因为我有一个不允许这样做的生产实例。
我使用 vagrant 安装来设置开发环境。
流浪 ssh 之后:cd /vagrant/gitlabhq && git pull --ff origin master
让我提交 a8b544ed770cf172b09feb6ffee14b1814b66ad4,gitlab-shell v1.5.0cd /vagrant/gitlabhq && bundle exec foreman start -p 3000
gitlab 现在已经启动并运行了。
我以 admin@local.host 身份登录
添加了我的“管理员” key
创建项目“主保护”
在 shell 中,我创建了 repo,添加了一个文件并提交并推送。
作为“user1”,我添加了我的 key ,并在 shell 中克隆了 user1 具有开发人员角色的“主保护”。
当我修改并推送 master 时,gitlab 接受了推送,并且提交就显示在 gitlab 中。它应该否认它。事实上,当你转到分支部分,看到主分支受到保护时,它的最后一次提交是只有开发人员权限的“user1”的提交。
关于我可以在哪里进一步尝试找出为什么在开发环境中发生这种情况的任何想法?标签 v5.3.0 也是如此,我确信它不会在生产 v5.3.0 中发生。
这很有趣,因为我试图复制另一个我认为我发现的 protected 分支不受合并请求和开发人员角色保护的错误,但我遇到了这个问题。
最佳答案
很抱歉在这几个飞蛾之后遇到了这个问题,但我也遇到了同样的问题,我通过检查 gitlab-shell 更新钩子(Hook)设法解决了这个问题。
我有 Gitlab 版本 5.1.0-4,就我而言, gitlab-shell/钩子(Hook)/更新文件应如下所示:
#!/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
我希望能帮助别人。
最好的祝福。
佩德罗弗洛雷斯
关于Gitlab protected 分支不保护 ssh 推送上的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561871/