How to merge the Gerrit branch to another Gerrit branch

Alan Shen picture Alan Shen · Oct 11, 2012 · Viewed 24.7k times · Source

I'm using Gerrit version 2.4.2. I have a branch master and I created a new branch, called newbranch. Then I pushed some changes to the remote (Gerrit's) newbranch. After verifying in Gerrit, I merged the changes to newbranch.

No, I want to merge the newbranch to master, send updates master (merged with changes from newbranch), and delete the newbranch branch.

I tried do this:

git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master

But Gerrit gives back this message:

 ! [remote rejected] master -> refs/for/master (no new changes)

What should I do?

Answer

Michael Sims picture Michael Sims · Oct 11, 2012

This situation has been reported as a bug in Gerrit. Here's a solution/workaround from Gerrit's issue tracker:

To the best of my knowledge, you have 2 options currently -

  1. Force push to refs/heads. It is just a fast-forward, so in theory everything has already been reviewed and verified. There is no point in doing so again, so just skip that process and push to refs/heads rather than refs/for.

  2. Go ahead and create a merge commit. Use 'git merge --no-ff' - this will create a merge commit even though it isn't necessary in your fast-forward situation. Then the merge commit can be uploaded, reviewed, verified, and merged like normal.

My company tends to go with option 2. I'll close this as wontfix, but if you have any suggestions on how to do this better please let us know.