【问题标题】:Gerrit push tags in packed-refsGerrit 在打包引用中推送标签
【发布时间】:2018-04-27 07:40:55
【问题描述】:

我们有 2 个 Gerrit 站点。
当尝试将其中一个存储库从 gerrit 站点 A 拉到我的本地笔记本电脑,并将我的本地存储库推送到 gerrit 站点 B 时,我遇到了一个问题。
对于 gerrit 站点 A,我已成功克隆了存储库,对于 gerrit 站点 B,我已将存储库访问权限设置为:

Reference:refs/tags/*
Push 
Allow Administrators  Force Push
Push Annotated Tag
Allow Administrators  Force Push

当尝试使用命令git push <remote repo> --tags 我收到 [remote rejected] <tag name> -> <tag name> (prohibited by Gerrit) 之类的错误

查看本地仓库.git文件夹后,发现所有标签都存放在.git/packed-refs中,而refs/tags文件夹中什么都没有

我不确定 push 命令是否试图在 gerrit 站点 B 的存储库中创建 packed-refs 文件?
有什么办法可以处理这种情况吗?必须将packed-refs解压到refs/tags文件夹然后再推送吗?

【问题讨论】:

  • 命令中的remote repo 是站点 B 存储库的 url 吗?
  • 远程repo别名,如origin,这里我们使用dest
  • dest 是否指向站点 B 的存储库?用户名是否属于管理员组?
  • 是的,dest 指向站点 B 存储库,而我使用的用户在管理员组中。实际上,对于其他选项都可以正常工作,例如在站点 B 中创建标签并将其提取到本地存储库(此标签将在本地​​存储库 .git/refs/tags 下创建)
  • Create Reference 权限授予管理员。

标签: git tags gerrit


【解决方案1】:

不,您不需要将打包的引用解压缩到 refs/tags 文件夹。

“Gerrit 禁止”是一般错误消息,如果不允许推送,Gerrit 返回。在您的情况下,这可能是由于以下原因之一:

  • 您推送了一个没有“创建带注释标签”访问权限的带注释标签 就在 refs/tags/*

  • 您推送了一个没有“创建签名标签”访问权限的签名标签 参考/标签/*

  • 您推送了一个没有“创建”访问权限的轻量级标签 Reference' 为参考名称 refs/tags/*

  • 您推送了一个以其他人为标记者的标记,但您没有 参考名称 refs/tags/*

  • 的“Forge Committer”访问权限

查看有关此错误的更多信息here

【讨论】:

  • 酷,在我已经拥有Create Reference 之前的refs/tags/* 但不起作用。然后我听从你的建议,在refs/tags/* 中添加Forge Committer Identity,它现在可以工作了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 2013-05-11
  • 1970-01-01
  • 2023-03-29
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多