Merge "Only throw MissingObjectException when necessary"

This commit is contained in:
Terry Parker 2017-04-12 10:25:09 -04:00 committed by Gerrit Code Review @ Eclipse.org
commit 56a1cced74
1 changed files with 32 additions and 17 deletions

View File

@ -117,6 +117,7 @@ BitmapBuilder findObjects(Set<? extends ObjectId> start, BitmapBuilder seen, boo
new AddUnseenToBitmapFilter(seen, bitmapResult));
}
try {
while (walker.next() != null) {
// Iterate through all of the commits. The BitmapRevFilter does
// the work.
@ -136,6 +137,20 @@ BitmapBuilder findObjects(Set<? extends ObjectId> start, BitmapBuilder seen, boo
bitmapResult.addObject(ro, ro.getType());
pm.update(1);
}
} catch (MissingObjectException e) {
if (!ignoreMissingStart) {
throw e;
}
// Even when none of the objects we started the walk from is missing,
// an object reachable from one can be. RevWalk and ObjectWalk don't
// provide a way to ignore the missing object and continue, so bail
// out early with an undersized bitmap.
//
// The resulting packfile is likely to be much too large, but that's
// better than serving an error.
//
// TODO(czhen): Resume the walk instead once RevWalk supports that.
}
}
return bitmapResult;