【问题标题】:Gerrit push not working. Remote rejected, prohibited by gerrit格里特推不工作。远程拒绝,被gerrit禁止
【发布时间】:2016-04-19 11:01:50
【问题描述】:

我正在尝试将现有的 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 站点并在 project/access 下添加了 refs/head/* 为所有用户创建引用权限。

【问题讨论】:

  • 我假设您能够正常使用gerrit(即创建更改并合并它们),只是在直接推送时遇到问题?

标签: git github ssh gerrit


【解决方案1】:

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

  • 参考/头/*
    • 创建参考
    • 伪造作者身份
    • 伪造提交者身份
    • 推送合并提交
    • 推送注释标签
  • 参考/标签/*
    • 创建参考

【讨论】:

    【解决方案2】:

    除了添加创建引用权限外,您还需要确保您拥有直接推送/强制推送权限——创建引用将涉及创建新分支,而更新现有分支(即@987654321 @ 和 origin/master) 将需要直接推送/强制推送权限(我看到 gerrit 在文档中将其称为直接推送和强制推送)。

    【讨论】:

    • 所以我为用户添加了强制推送权限,但在推送 origin/HEAD 和 origin/master 遥控器时仍然出现(gerrit 禁止)错误
    【解决方案3】:

    在您的 git 项目中,使用 git config --list 查看您的用户名,user.email 是否等于您本地 gerrit 站点用户的名称或电子邮件。它们必须相同。如果不相等,请使用 git config用户名 XXX。

    终于。 git config remote.origin.push refs/heads/:refs/for/ 所以你可以使用 git push origin master

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-26
      • 2019-05-31
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2012-08-12
      相关资源
      最近更新 更多