]> source.dussan.org Git - jgit.git/commit
UploadPack: Don't discard COMMON, SATISIFIED flags 28/2428/1
authorShawn O. Pearce <spearce@spearce.org>
Sun, 6 Feb 2011 02:23:18 +0000 (18:23 -0800)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 6 Feb 2011 09:08:41 +0000 (01:08 -0800)
commitb5da75bb87b404046a0b242ad97628bd97d60b0d
tree06da7b6011eed0e578043f3b425cff0fe2d45ebc
parenta35c793b2d3a1c29a55ee96123109b3c80ab15e3
UploadPack: Don't discard COMMON, SATISIFIED flags

When the walker resets, its going to scrub the COMMON and SATISIFIED
flags off a commit if the commit is contained within another commit
the client wants.  This is common if the client asks for both a
'maint' and 'master' branch, and 'maint' is also fully merged into
'master'.

COMMON shouldn't be scrubbed during reset because its used to control
membership of the commonBase collection, which is a List.  commonBase
should technically be a set, but membership is cheaper with a RevFlag.
COMMON appears on a commit reachable from a WANT when there is also a
PEER_HAS flag present, as this is a merge base.  Scrubbing this off
when another branch is tested isn't useful.

SATISIFIED is a cache to tell us if wantSatisified() has already
completed for this particular WANT.  If it has, there isn't a need to
recompute on that branch.  Scrubbing it off 'maint' when we test
'master' just means we would later need to re-test 'maint', wasting
CPU time on the server.

Bug: 301639
Change-Id: I3bb67d68212e4f579e8c5dfb138f007b406d775f
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java