diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java index 6a71ad7dc..07dcd943c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/DeltaWindow.java @@ -129,8 +129,6 @@ class DeltaWindow { int cnt) throws IOException { try { for (int end = off + cnt; off < end; off++) { - monitor.update(1); - res = window[resSlot]; if (0 < maxMemory) { clear(res); @@ -152,6 +150,7 @@ class DeltaWindow { } else { // Search for a delta for the current window slot. // + monitor.update(1); search(); } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java index 17c5a12d4..9a586683a 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java @@ -539,6 +539,7 @@ public class PackWriter { cnt = findObjectsNeedingDelta(list, cnt, Constants.OBJ_BLOB); if (cnt == 0) return; + int nonEdgeCnt = cnt; // Queue up any edge objects that we might delta against. We won't // be sending these as we assume the other side has them, but we need @@ -636,12 +637,15 @@ public class PackWriter { // Above we stored the objects we cannot delta onto the end. // Remove them from the list so we don't waste time on them. - while (0 < cnt && list[cnt - 1].isDoNotDelta()) + while (0 < cnt && list[cnt - 1].isDoNotDelta()) { + if (!list[cnt - 1].isEdge()) + nonEdgeCnt--; cnt--; + } if (cnt == 0) return; - monitor.beginTask(JGitText.get().compressingObjects, cnt); + monitor.beginTask(JGitText.get().compressingObjects, nonEdgeCnt); searchForDeltas(monitor, list, cnt); monitor.endTask(); }