IndexPack: Defer the "Resolving deltas" progress meter
If delta resolution completes in < 1000 milliseconds, don't bother showing the progress meter. This is actually very common for a Gerrit Code Review server, where the client is probably sending 1 commit and only a few trees/blobs modified... and the base objects are hot in the process buffer cache. The 1000 millisecond delay is just a guess at a reasonable time to wait. Change-Id: I440baa64ab0dfa21be61deae8dcd3ca061bed8ce Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
e0111b18c8
commit
c81f6ab3ab
|
@ -54,6 +54,7 @@
|
|||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.zip.DataFormatException;
|
||||
import java.util.zip.Inflater;
|
||||
|
||||
|
@ -61,6 +62,7 @@
|
|||
import org.eclipse.jgit.errors.CorruptObjectException;
|
||||
import org.eclipse.jgit.errors.MissingObjectException;
|
||||
import org.eclipse.jgit.lib.AnyObjectId;
|
||||
import org.eclipse.jgit.lib.BatchingProgressMonitor;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
import org.eclipse.jgit.lib.InflaterCache;
|
||||
import org.eclipse.jgit.lib.MutableObjectId;
|
||||
|
@ -478,6 +480,11 @@ public PackLock parse(ProgressMonitor receiving, ProgressMonitor resolving)
|
|||
if (!deferredCheckBlobs.isEmpty())
|
||||
doDeferredCheckBlobs();
|
||||
if (deltaCount > 0) {
|
||||
if (resolving instanceof BatchingProgressMonitor) {
|
||||
((BatchingProgressMonitor) resolving).setDelayStart(
|
||||
1000,
|
||||
TimeUnit.MILLISECONDS);
|
||||
}
|
||||
resolving.beginTask(JGitText.get().resolvingDeltas, deltaCount);
|
||||
resolveDeltas(resolving);
|
||||
if (entryCount < objectCount) {
|
||||
|
|
Loading…
Reference in New Issue