| = same Change-Id in multiple changes |
| |
| With this error message Gerrit rejects to push a commit if it |
| contains the same Change-Id as a predecessor commit. |
| |
| The reason for rejecting such a commit is that it would introduce, for |
| the corresponding change in Gerrit, a dependency upon itself. Gerrit |
| prevents such dependencies between patch sets within the same change |
| to keep the review process simple. Otherwise reviewers would not only |
| have to review the latest patch set but also all the patch sets the |
| latest one depends on. |
| |
| This error is quite common, it appears when a user tries to address |
| review comments and creates a new commit instead of amending the |
| existing commit. Another possibility for this error, although less |
| likely, is that the user tried to create a patch series with multiple |
| changes to be reviewed and accidentally included the same Change-Id |
| into the different commit messages. |
| |
| |
| == Example |
| |
| Here an example about how the push is failing. Please note that the |
| two commits 'one commit' and 'another commit' both have the same |
| Change-Id (of course in real life it can happen that there are more |
| than two commits that have the same Change-Id). |
| |
| ---- |
| $ git log |
| commit 13d381265ffff88088e1af88d0e2c2c1143743cd |
| Author: John Doe <john.doe@example.com> |
| Date: Thu Dec 16 10:15:48 2010 +0100 |
| |
| another commit |
| |
| Change-Id: I93478acac09965af91f03c82e55346214811ac79 |
| |
| commit ca45e125145b12fe9681864b123bc9daea501bf7 |
| Author: John Doe <john.doe@example.com> |
| Date: Thu Dec 16 10:12:54 2010 +0100 |
| |
| one commit |
| |
| Change-Id: I93478acac09965af91f03c82e55346214811ac79 |
| |
| $ git push ssh://JohnDoe@host:29418/myProject HEAD:refs/for/master |
| Counting objects: 8, done. |
| Delta compression using up to 2 threads. |
| Compressing objects: 100% (2/2), done. |
| Writing objects: 100% (6/6), 558 bytes, done. |
| Total 6 (delta 0), reused 0 (delta 0) |
| To ssh://JohnDoe@host:29418/myProject |
| ! [remote rejected] HEAD -> refs/for/master (same Change-Id in multiple changes. |
| Squash the commits with the same Change-Id or ensure Change-Ids are unique for each commit) |
| error: failed to push some refs to 'ssh://JohnDoe@host:29418/myProject' |
| |
| ---- |
| |
| If it was the intention to rework a change and push a new patch |
| set, the problem can be fixed by squashing the commits that contain the |
| same Change-Id. The squashed commit can then be pushed to Gerrit. |
| |
| To squash the commits, use `git rebase -i` to do an interactive rebase. For |
| the example above where the last two commits have the same Change-Id, |
| this means an interactive rebase for the last two commits should be |
| done. For further details about the git rebase command please check |
| the link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[Git documentation for rebase,role=external,window=_blank]. |
| |
| ---- |
| $ git rebase -i HEAD~2 |
| |
| pick ca45e12 one commit |
| squash 13d3812 another commit |
| |
| [detached HEAD ab37207] squashed commit |
| 1 files changed, 3 insertions(+), 0 deletions(-) |
| Successfully rebased and updated refs/heads/master. |
| |
| $ git log |
| commit ab37207d33647685801dba36cb4fd51f3eb73507 |
| Author: John Doe <john.doe@example.com> |
| Date: Thu Dec 16 10:12:54 2010 +0100 |
| |
| squashed commit |
| |
| Change-Id: I93478acac09965af91f03c82e55346214811ac79 |
| |
| $ git push ssh://JohnDoe@host:29418/myProject HEAD:refs/for/master |
| Counting objects: 5, done. |
| Writing objects: 100% (3/3), 307 bytes, done. |
| Total 3 (delta 0), reused 0 (delta 0) |
| To ssh://JohnDoe@host:29418/myProject |
| * [new branch] HEAD -> refs/for/master |
| ---- |
| |
| If it was the intention to create a patch series with multiple |
| changes to be reviewed, each commit message should contain the |
| Change-Id of the corresponding change in Gerrit. If a change in |
| Gerrit does not exist yet, the Change-Id should be generated (either |
| by using a link:cmd-hook-commit-msg.html[commit hook] or by using EGit) or the Change-Id could be |
| removed (not recommended since then amending this commit to create |
| subsequent patch sets is more error prone). To change the Change-Id |
| of an existing commit do an interactive link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[git rebase,role=external,window=_blank] and fix the |
| affected commit messages. |
| |
| |
| GERRIT |
| ------ |
| Part of link:error-messages.html[Gerrit Error Messages] |
| |
| SEARCHBOX |
| --------- |