4

我创建了一个简单的项目,提交并推送主分支,然后保护它。之后,我将一个用户作为开发人员添加到项目中,并且允许该用户推送到 master。
所以 admin=master,user1=developer。

当我修改并以 user1 身份推送时,我被允许推送到 master。这很奇怪,因为我有一个不允许这样做的生产实例。

我使用 vagrant 安装来设置开发环境。在 vagrant ssh:
cd /vagrant/gitlabhq && git pull --ff origin master
put me at commit a8b544ed770cf172b09feb6ffee14b1814b66ad4 之后,gitlab-shell v1.5.0
cd /vagrant/gitlabhq && bundle exec foreman start -p 3000
gitlab 现已启动并运行。

我以 admin@local.host 身份登录
添加了我的“admin”密钥在 shell 中创建了
“master-protected”项目
,我创建了 repo,添加了一个文件并提交并推送。

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

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

关于我可以在哪里进一步尝试找出为什么在开发环境中发生这种情况的任何想法?标签 v5.3.0 也是如此,我确信它不会在生产 v5.3.0 中发生。

这很有趣,因为我试图复制另一个我认为我发现的受保护分支不受合并请求和开发人员角色保护的错误,但我遇到了这个问题。

4

3 回答 3

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

我希望能帮助别人。

此致。

佩德罗弗洛雷斯

于 2013-12-02T14:17:49.427 回答
0

我遇到了同样的问题,在我的情况下,问题是项目文件夹中的“钩子”符号链接损坏。

lrwxrwxrwx   1 git git    28 Sep 29  2015 hooks -> /home/git/gitlab-shell/hooks

如上所述修复链接解决了问题

于 2018-09-27T14:43:16.160 回答
0

这可能是因为用户是管理员,(用户可以是admindeveloper):

见: https ://github.com/gitlabhq/gitlabhq/issues/7723#issuecomment-63287902

删除admin用户的权限为我解决了这个问题。

于 2017-11-05T16:08:31.703 回答