Browse Source

ReceivePack: Micro-optimize object lookup when checking connectivity

If we are checking the visibility of everything referenced in the
pack that isn't already reachable by a reference, it needs to be
in the provided set.  Since the provided set lists everything that
is in this pack, we can avoid checking to see if the blob exists
on disk, because we know it should be there, it was found in the
pack we just consumed.

Change-Id: Ie3c7746f734d13077242100a68e048f1ac18c34a
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.8
Shawn O. Pearce 15 years ago
parent
commit
a770205070
  1. 10
      org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java

10
org.eclipse.jgit/src/org/eclipse/jgit/transport/ReceivePack.java

@ -823,11 +823,15 @@ public class ReceivePack {
RevObject o; RevObject o;
while ((o = ow.nextObject()) != null) { while ((o = ow.nextObject()) != null) {
if (ensureObjectsProvidedVisible) {
if (providedObjects.contains(o))
continue;
else
throw new MissingObjectException(o, o.getType());
}
if (o instanceof RevBlob && !db.hasObject(o)) if (o instanceof RevBlob && !db.hasObject(o))
throw new MissingObjectException(o, Constants.TYPE_BLOB); throw new MissingObjectException(o, Constants.TYPE_BLOB);
if (ensureObjectsProvidedVisible && !providedObjects.contains(o))
throw new MissingObjectException(o, o.getType());
} }
} }

Loading…
Cancel
Save