diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java index cd8f462b2..7da2cd5d0 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java @@ -1147,7 +1147,9 @@ private void searchForDeltas(ProgressMonitor monitor) AsyncObjectSizeQueue sizeQueue = reader.getObjectSize( Arrays. asList(list).subList(0, cnt), false); try { - final long limit = config.getBigFileThreshold(); + final long limit = Math.min( + config.getBigFileThreshold(), + Integer.MAX_VALUE); for (;;) { try { if (!sizeQueue.next()) @@ -1175,14 +1177,10 @@ private void searchForDeltas(ProgressMonitor monitor) otp = objectsMap.get(sizeQueue.getObjectId()); long sz = sizeQueue.getSize(); - if (limit <= sz || Integer.MAX_VALUE <= sz) - otp.setDoNotDelta(); // too big, avoid costly files - - else if (sz <= DeltaIndex.BLKSZ) - otp.setDoNotDelta(); // too small, won't work - - else + if (DeltaIndex.BLKSZ < sz && sz < limit) otp.setWeight((int) sz); + else + otp.setDoNotDelta(); // too small, or too big monitor.update(1); } } finally {