3

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

但是,在发出推送命令时,除了我当前所在的“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推送它们。

4

1 回答 1

6

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

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

Push Signed Tag显然,如果您有签名标签,您还需要允许。

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

于 2013-12-20T10:13:18.267 回答