Issue 278: Missing dependency error
Status:  Accepted
Owner:
Reported by code-rev...@gtempaccount.com, Sep 24, 2009
Reported by Väinö Järvelä <vaino.jarvela@gmail.com> on Thu Sep 17 02:58:53 PDT 2009
Source: JIRA GERRIT-279
Affected Version: 2.0.21

This is clearly not a proper way to use git nor gerrit, but when testing
gerrit squashing behavior I came up with a bug that breaks the dependency tree
of gerrit changes.

I have three commits: #1, #2 and #3. I push all three to gerrit for review
(Change-Id commit-msg hook is enabled), all changes and their dependencies are
registered correctly. I verify, approve and submit the first commit. The next
step is to do something horrible: Squash commits #1 and #2, keep Change-Id
from commit #1 and push back to gerrit which accepts the changes.

The end result is that commit #1 stays submitted, commit #2 is not changed but
commit #3 receives a new patch set. #2 depends on #1 and is needed by #3. But
if you open #3 it has no dependencies. Now if you try to submit #3, it fails
with missing dependencies. I guess the change ids mess up the dependency
handling as git uses its own rebased tree when seen from commits #2 and #3.


For an easier list of steps to reproduce:

$ echo 1 > foo
$ git add foo
$ git commit -m 'Commit #1'
$ echo 2 >> foo
$ git commit -a -m 'Commit #2'
$ echo 3 >> foo
$ git commit -a -m 'Commit #3'
$ git push gerrit HEAD:refs/for/master

In gerrit, submit 'Commit #1'

$ git rebase -i HEAD~3

squash #1 and #2

$ git push gerrit HEAD:refs/for/master


Expected behavior:

I guess it should detect changes to a submitted commit and reject the push as
with non-fast forward push in git.
Sep 24, 2009
#1 sop+code@google.com
(No comment was entered for this change.)
Status: Accepted
Owner: s...@google.com
Nov 21, 2009
#2 sop@google.com
(No comment was entered for this change.)
Owner: s...@google.com