My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 465: Gerrit creates changes only for the network transfered commit objects
4 people starred this issue and may be notified of changes. Back to list
Status:  New
Owner:  ----


Sign in to add a comment
 
Reported by di...@google.com, Feb 23, 2010
I see the problems below based on: I want (with Gerrit) to be able to code 
review (ie get a second pair of eyes) on any code changes that happens to 
certain branches.

Affected Version: 2.1.1.1

What steps will reproduce the problem?
2 use cases that should work but don't seem to:
A.
1. Make some Git history known to a Gerrit Git repository without having a 
change for it (either pushing it without code review, or setup the repo 
with an alternates/info that points to a store with that object, etc)
2. Try to push some commit object part of that Git history to a branch that 
doesn't have the history (but has a common ancestor); example try to push 
v2.6.33-rc1^{} to a branch that currently is at v2.6.32^{} but have the 
repository setup with alternates to the Linus tree that contains all the 
objects needed to resolve v2.6.33-rc1 (and thus the Gerrit Git repository 
too "knows" about them)

What is the expected output? What do you see instead?
I would expect for Gerrit to be creating changes for each commit object 
from the common ancestry to the point that I'm pushing, instead it errors 
with "no new changes".

B.
1. same as A.1
2. make a commit on top of a tree state in the history that has no 
associated change
3. try to push this new commit to Gerrit to a branch that shares common 
ancestry with the history on top of which I built my latest commit

What is the expected output? What do you see instead?
I would expect Gerrit to be creating changes for all commits between the 
common ancestry and the one I'm pushing (including one change for this 
commit). Instead Gerrit creates a single change for the new commit (that 
was built on top of the unreviewed history), it doesn't show anything in 
the dependencies and if this change is reviewed Gerrit will submit it (and 
thus updates the target branch to include the reviewed commit and all the 
history it depends on which was not reviewed anywhere). This is very bad 
because (especially with the branch based ACL in the next Gerrit version) 
it means that people can change branches that are normally code reviewed 
for any change with commits that not reviewed anywhere.

I think the main problem here is that Gerrit creates changes only for the 
network transported commit objects with "git push". I think this is wrong 
and it should instead create changes for all the commits back to the common 
ancestry between the target branch and the source branch because all those 
will be part of the history of the target branch if it gets submitted (at 
least with the current design where Gerrit has a change per commit).

Sign in to add a comment

Powered by Google Project Hosting