为什么Gerrit无法自己创建分支?

tre*_*der 10 git version-control gerrit

根据这个答案我自己的问题,我有一个简单的(希望如此)问题.

如果我正在推动一个特定的分支,所有必需的refs设置正确:

git checkout 82-blah-blah
git push origin HEAD:refs/for/82-blah-blah
Run Code Online (Sandbox Code Playgroud)

为什么我总是得到:

! [remote rejected] HEAD -> refs/for/82-blah-blah (branch 82-blah-blah not found)
Run Code Online (Sandbox Code Playgroud)

我总是要去Gerrit的UI并手动创建该分支?

这不是一个明显的步骤,Gerrit可以简单地自动化吗?或者我错过了什么?

unc*_*all 22

接受的答案是指允许用户使用SSH创建分支的功能,它添加的只是CreateBranchCommand.原始问题请求实际上可能是指@trejder想要的,但实现只是通过SSH命令创建分支.

我的印象是,如果你有创建引用权,你可以推送到ref/for/new-branch但是我错了,只是测试它并且它不起作用.它只允许您创建新分支但直接推送到它们.

猜猜完成它的最快方法是:

git checkout master
git push origin HEAD:new-branch
git checkout new-branch
git push origin HEAD:/refs/for/new-branch
Run Code Online (Sandbox Code Playgroud)

  • 我认为很明显trejder想要什么,我同意@mvp,[问题1156](https://code.google.com/p/gerrit/issues/detail?id=1156)中的原始功能请求与被要求提供,但没有证据表明该问题的解决方案是按原始要求实施的.如另一条评论所示,[Change 52500](https://gerrit-review.googlesource.com/52500)仅实施问题最后一段中描述的备份计划. (3认同)
  • 我必须同意mvp.我实际上在问,为什么我必须使用UI来做同样的事情,Gerrit可以自动化什么?假设我正在使用`Ctrl + C`,`Ctrl + V`在Git Bash和Gerrit的UI中使用_exactly相同的分支名称_,我有完全相同的机会拼错分支名称或创建其中许多分支名称,正如我所希望的那样,Gerrit会为我自动完成这个过程. (2认同)

mvp*_*mvp 3

该功能最近才实现,并将在Gerrit v2.9中提供。

  • AFAICT Gerrit 2.9 中提供的新分支创建 REST 和 SSH 命令不会解决最初的问题。这只是手动创建分支的两种新方法,但从第一天起,就可以通过“git Push”创建分支。我怀疑 @trejder 认为这是一个“基本功能”的观点源于一种误解,即分支创建是一项常见任务,或多或少总是在上传更改时执行,而实际上这是用户通常很少执行的操作。不允许这样做。 (3认同)