2013-07-10 65 views
4

我创建了一个简单的项目,提交并推送了主分支,然后对其进行了保护。之后,我作为开发人员添加了一个用户到该项目中,并允许该用户推送给主人。
所以admin = master,user1 = developer。Gitlab受保护的分支不保护ssh上的分支

当我修改并推送为user1时,我被允许推送给主。这很奇怪,因为我有一个不允许这样的生产实例。

我使用vagrant安装来设置开发环境。 流浪汉SSH后:
cd /vagrant/gitlabhq && git pull --ff origin master
把我在提交a8b544ed770cf172b09feb6ffee14b1814b66ad4,gitlab壳V1.5.0
cd /vagrant/gitlabhq && bundle exec foreman start -p 3000
gitlab现在启动和运行。

我登录的[email protected]
增加了我的“管理员”键
创建项目“主保护”
的外壳,我创建了回购,增加了一个文件,并提交和推送。

作为“user1”,我添加了我的密钥,并在shell中克隆了“master-protected”,其中user1具有开发人员角色。

当我修改并推送master时,gitlab接受推送,提交在gitlab中显示正确。它应该否认它。事实上,当你转到分支部分,并看到主分支被保护时,它最后的提交是只有开发人员权限的“user1”的提交。

关于我可以进一步探索的地方,了解为什么会在开发环境中发生这种情况?标签v5.3.0也是如此,并且我确信它在生产v5.3.0中不会发生。

这很有趣,因为我试图复制另一个错误,我认为我发现受保护的分支没有受到合并请求和开发人员角色的保护,但是我用此命令打了一个块。

+0

显然这是一个类似的错误:https://github.com/gitlabhq/gitlabhq/issues/3775。该特定的错误在分支名称中提到破折号是一个问题。这不是在这里的情况,因为我只是使用nodashes执行相同的测试,我仍然收到相同的结果。 –

+0

我不认为这是一个类似的bug后,逐步通过代码。看起来,git_update.rb并不拒绝推送(它甚至没有被调用),而在生产中它是。 –

回答

2

对不起后来碰到这几个飞蛾,但我有同样的问题,我设法通过检查gitlab外壳更新挂钩解决这个问题。

我有Gitlab版本5.1.0-4,在我的情况下,gitlab壳/钩/更新文件应该是这样的:

#!/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 

我希望可以帮助别人。

最好的问候。

佩德罗布鲁姆