2013-12-14 28 views
0

我刚刚创建了一个新的更改,我希望将其更改为Gerrit。我做了(我希望)通常的方式,即创建新的分支,做魔术,提交。现在,我想推动对Gerrit的改变。所以......Gerrit不接受新创建的更改/分支

git checkout 82-changes-and-fixes-to-files-view 
git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view 

(紧缩,紧缩)

! [remote rejected] HEAD -> refs/for/82-changes-and-fixes-to-files-view (branch 82-changes-and-fixes-to-files-view not found) 

分公司没有发现?嗯......我想起了一些东西,那个文档在之前通过Gerrit UI 推动了一些关于手动创建分支的事情。我对吗?无论如何,我正在这样做。我通过UI创建了一个分支,并将其命名为(82-changes-and-fixes-to-files-view)和相应的修订版,取自git status2b25fe7612f1563a78c9dc2d1574ae3dcfe9d5a1)。并再次...

git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view 

(紧缩,cruch)

! [remote rejected] HEAD -> refs/for/82-changes-and-fixes-to-files-view (no new changes) 

的Eee ...我缺少什么? Gerrit如何声称,没有任何变化,如果我其实还没有推过任何代码呢(没有这样的变化,当然是以上名字,都没有记录也没有合并变更在Gerrit UI中)?

+0

另请检查您是否已将此提交推送到不同分支上的gerrit? – mrutyunjay

回答

0

此问题的解决方案总是使用当前HEAD的上次提交ID,而不是提交给您的分支的提交ID。使用分支的最后一个提交ID是错误的。为什么 - 这超出了我的想象。

所以,正确的路径是:

  1. 创建使用UI,并给予HEAD的版本分支。
  2. 将变化(该分支)推送给Gerrit,不要忘记正确的参考。
  3. 访问页面,Gerrit向您推送的URL是您推送的结果,并查看您的更改或等待其他人对其进行审阅。

作为替代方案,您可以简单地点击Create Branch并将Initial Revision字段设为空,Gerrit将自动填充它。然后再次按下Create Branch按钮。

编辑:这个答案只是解释,该怎么做,以获得Gerrit接受的变化。它没有解释,为什么在前面的方法(解释有问题)中,Gerrit声称,没有变化并且不接受代码,而实际上它根本没有代码(对于那个特定的分支)。对我而言,这是一个巨大的bug,导致代码损失。(根据下面的注释不正确)

+1

如果您创建了一个指向提交2b25fe76的新分支,那么在同一分支上推送相同的提交以进行审阅显然是无操作的,因为分支已经指向该提交。像Gerrit所说,没有新的变化。 –

+0

对我来说真正的问题是为什么我必须通过UI手动创建该分支?为什么Gerrit自己无法处理?我推动一个特定的分支,那么自动创建它有什么问题? – trejder

+0

Magnus,再次阅读我的问题并修改了答案。分支'82-changes-and-fixes-to-files-view'在第一次被拒绝时丢失,第二次(因为我指出通过UI创建的分支错误提交 - 2b25fe76)也被拒绝,因为没有改变。在效果中,Gerrit **没有得到任何字节的代码**用于分支“82-changes-and-fixes-to-files-view”(这两个尝试都被拒绝了,所以没有实际推送这个代码),而它声称它有(_no changes_)。这似乎是一个巨大的bug,或者我错过了一些明显的东西。 – trejder