导入已经存在的带有多个分支和标签的git repo到gerrit中

时间:2013-10-22 09:51:00

标签: git gerrit

我正在尝试将已经存在的带有多个分支和标签的git存储库导入到gerrit中。我正在关注https://gerrit-review.googlesource.com/Documentation/install-quick.html#_already_existing_project的官方指南。

然而,当发出push命令时,除了我当前所在的“master”之外的所有分支和标签都被“Gerrit禁止”。输出是这样的:

user@host:~/my-project$ git push ssh://user@localhost:29418/demo-project *:*
[....]
* [new branch]      master -> master
! [remote rejected] origin/Branch1 -> origin/Branch1 (prohibited by Gerrit)
! [remote rejected] origin/Branch2 -> origin/Branch2 (prohibited by Gerrit)
[....]
! [remote rejected] Tag1 -> Tag1 (prohibited by Gerrit)
! [remote rejected] Tag2 -> Tag2 (prohibited by Gerrit)
[....]

我是管理员,所以它不应该是访问权限问题。

更新 通过使用blahdiblah的脚本(https://stackoverflow.com/a/16095671/63661),我成功地移动了所有分支。 为了能够传输所有标签,我首先必须使用gerrit Web界面为组管理员提供* refs / tags / **的“创建参考”权限。之后,我可以使用 git push --tags 推送它们。

1 个答案:

答案 0 :(得分:6)

允许refs/*将现有存储库导入Gerrit的最小权限集是我们的:

  • Create Reference(很明显)
  • Forge Author IdentityForge Committer Identity(因为您正在推动其他人的提交)
  • Push(很明显)
  • Push Merge Commit(这不包含在Push中,您可能会进行合并提交)
  • Push Annotated Tag(我们在某些标签中使用注释)

如果你有签名标签,你还需要允许Push Signed Tag

最后,如果您计划在某个过渡期间多次运行导入以逐步同步存储库,则还需要允许Read并为所有Force Push权限启用Push