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>
This commit is contained in:
Shawn O. Pearce 2010-04-16 16:37:29 -07:00
parent 6029bb24ad
commit a770205070
1 changed files with 7 additions and 3 deletions

View File

@ -823,11 +823,15 @@ private void checkConnectivity() throws IOException {
RevObject o;
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))
throw new MissingObjectException(o, Constants.TYPE_BLOB);
if (ensureObjectsProvidedVisible && !providedObjects.contains(o))
throw new MissingObjectException(o, o.getType());
}
}