Gerrit推送无法工作。远程被Gerrit禁止拒绝。

9

我正在尝试将一个已有的repo添加到gerrit中。我创建了一个空项目并尝试推送它(git push ssh://admin@localhost:29418/project *:*)。但是我收到了以下错误信息:

Counting objects: 14, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 384 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 3 (delta 1)
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 3, done    
To ssh://admin@localhost:29418/project
 ! [remote rejected] origin/HEAD -> origin/HEAD (prohibited by Gerrit)
 ! [remote rejected] origin/master -> origin/master (prohibited by Gerrit)
 ! [remote rejected] origin/ref/for/master/testing -> origin/ref/for/master/testing (prohibited by Gerrit)
error: failed to push some refs to 'ssh://admin@localhost:29418/project'

我已经进入了Gerrit网站,在项目/访问下为所有用户添加了refs/head/*创建参考权限。


1
我假设您能够正常使用Gerrit(即创建更改并合并它们),只是在直接推送方面遇到了问题? - forkrul
3个回答

9

根据我的经验,您需要以下组权限才能将整个存储库导入到Gerrit中 - 基本上是将所有内容推送到Gerrit仓库的权限:

  • refs/heads/*
    • 创建引用
    • 伪造作者身份
    • 伪造提交者身份
    • 推送
    • 推送合并提交
    • 推送带注释的标签
  • refs/tags/*
    • 创建引用

2

除了添加“创建引用(Create Reference)”权限之外,您还需要确保拥有直接推送/强制推送(direct push/force push)权限——创建引用将涉及到创建新分支,而更新现有分支(即 origin/HEADorigin/master)则需要直接推送/强制推送(我在 Gerrit 的文档中看到过这两个术语都被用于描述此权限)。


所以我为用户添加了强制推送权限,但是当推送 origin/HEAD 和 origin/master 远程时仍然出现“被 Gerrit 禁止”的错误。 - Vis

0
在您的git项目中,使用git config --list命令查看您的user.name和user.email是否与本地gerrit站点用户的名称或电子邮件相同。它们必须相同。如果不相同,请使用git config user.name XXX。
最后,使用git config remote.origin.push refs/heads/:refs/for/,这样您就可以使用git push origin master命令了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接