aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WORKSPACE12
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target8
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java40
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java43
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java60
-rw-r--r--pom.xml4
13 files changed, 173 insertions, 50 deletions
diff --git a/WORKSPACE b/WORKSPACE
index 54ad8ae4fe..d965224cd9 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -132,8 +132,8 @@ maven_jar(
maven_jar(
name = "commons-codec",
- artifact = "commons-codec:commons-codec:1.18.0",
- sha1 = "ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f",
+ artifact = "commons-codec:commons-codec:1.19.0",
+ sha1 = "8c0dbe3ae883fceda9b50a6c76e745e548073388",
)
maven_jar(
@@ -168,14 +168,14 @@ maven_jar(
maven_jar(
name = "commons-lang3",
- artifact = "org.apache.commons:commons-lang3:3.17.0",
- sha1 = "b17d2136f0460dcc0d2016ceefca8723bdf4ee70",
+ artifact = "org.apache.commons:commons-lang3:3.18.0",
+ sha1 = "fb14946f0e39748a6571de0635acbe44e7885491",
)
maven_jar(
name = "commons-io",
- artifact = "commons-io:commons-io:2.19.0",
- sha1 = "1f8d4a99ba72b77aa69101175efc79b0c7dcdd7e",
+ artifact = "commons-io:commons-io:2.20.0",
+ sha1 = "36f3474daec2849c149e877614e7f979b2082cd2",
)
maven_jar(
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
index f98b044bd6..ebc31d6ef8 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.32.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.32" sequenceNumber="1751623995">
+<target name="jgit-4.32" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
index 871972294b..72b009730f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.33.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.33" sequenceNumber="1751623995">
+<target name="jgit-4.33" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
index a8f51b2274..6d0c9af7e5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.34.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.34" sequenceNumber="1751623995">
+<target name="jgit-4.34" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
index 352b4062b3..9d870be781 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.35.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.35" sequenceNumber="1751623995">
+<target name="jgit-4.35" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
index 37e7c04228..3a1992cfc5 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.36.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.36" sequenceNumber="1751623995">
+<target name="jgit-4.36" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
index 228d84745b..1f3ec32656 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.37.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="jgit-4.37" sequenceNumber="1753739130">
+<target name="jgit-4.37" sequenceNumber="1753801216">
<locations>
<location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
<unit id="com.jcraft.jsch" version="0.1.55.v20230916-1400"/>
@@ -255,7 +255,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
<type>jar</type>
</dependency>
<dependency>
@@ -267,13 +267,13 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.17.0</version>
+ <version>3.18.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
<type>jar</type>
</dependency>
<dependency>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
index 5c6833eee1..6182ae7f4e 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/maven/dependencies.tpd
@@ -10,7 +10,7 @@ maven apache
dependency {
groupId = "commons-codec"
artifactId = "commons-codec"
- version = "1.18.0"
+ version = "1.19.0"
}
dependency {
groupId = "org.apache.commons"
@@ -20,12 +20,12 @@ maven apache
dependency {
groupId = "org.apache.commons"
artifactId = "commons-lang3"
- version = "3.17.0"
+ version = "3.18.0"
}
dependency {
groupId = "commons-io"
artifactId = "commons-io"
- version = "2.19.0"
+ version = "2.20.0"
}
dependency {
groupId = "commons-logging"
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
index 3f3d78c734..af571622b4 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LocalObjectRepresentation.java
@@ -22,6 +22,11 @@ class LocalObjectRepresentation extends StoredObjectRepresentation {
public int getFormat() {
return PACK_WHOLE;
}
+
+ @Override
+ public boolean wasDeltaAttempted() {
+ return true;
+ }
};
r.pack = pack;
r.offset = offset;
@@ -81,5 +86,10 @@ class LocalObjectRepresentation extends StoredObjectRepresentation {
public int getFormat() {
return PACK_DELTA;
}
+
+ @Override
+ public boolean wasDeltaAttempted() {
+ return true;
+ }
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
index 3a6de4e8e2..dc25bfde40 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectory.java
@@ -70,6 +70,11 @@ import org.eclipse.jgit.util.FileUtils;
* considered.
*/
public class ObjectDirectory extends FileObjectDatabase {
+ @FunctionalInterface
+ private interface TriFunctionThrowsException<A, A2, A3, R, E extends Exception> {
+ R apply(A a, A2 a2, A3 a3) throws E;
+ }
+
/** Maximum number of candidates offered as resolutions of abbreviation. */
private static final int RESOLVE_ABBREV_LIMIT = 256;
@@ -348,9 +353,13 @@ public class ObjectDirectory extends FileObjectDatabase {
@Override
ObjectLoader openObject(WindowCursor curs, AnyObjectId objectId)
throws IOException {
- ObjectLoader ldr = openObjectWithoutRestoring(curs, objectId);
- if (ldr == null && restoreFromSelfOrAlternate(objectId, null)) {
+ ObjectLoader ldr = getFromLocalObjectToPack(curs, objectId,
+ (p, c, l) -> p.load(c, l.offset));
+ if (ldr == null) {
ldr = openObjectWithoutRestoring(curs, objectId);
+ if (ldr == null && restoreFromSelfOrAlternate(objectId, null)) {
+ ldr = openObjectWithoutRestoring(curs, objectId);
+ }
}
return ldr;
}
@@ -419,11 +428,16 @@ public class ObjectDirectory extends FileObjectDatabase {
return loose.open(curs, id);
}
+ @SuppressWarnings("boxing")
@Override
long getObjectSize(WindowCursor curs, AnyObjectId id) throws IOException {
- long sz = getObjectSizeWithoutRestoring(curs, id);
- if (0 > sz && restoreFromSelfOrAlternate(id, null)) {
+ Long sz = getFromLocalObjectToPack(curs, id,
+ (p, c, l) -> p.getObjectSize(c, l));
+ if (sz == null) {
sz = getObjectSizeWithoutRestoring(curs, id);
+ if (sz < 0 && restoreFromSelfOrAlternate(id, null)) {
+ sz = getObjectSizeWithoutRestoring(curs, id);
+ }
}
return sz;
}
@@ -480,6 +494,24 @@ public class ObjectDirectory extends FileObjectDatabase {
return -1;
}
+ private <R> R getFromLocalObjectToPack(WindowCursor curs,
+ AnyObjectId objectId,
+ TriFunctionThrowsException<Pack, WindowCursor, LocalObjectToPack, R, IOException> func) {
+ if (objectId instanceof LocalObjectToPack) {
+ LocalObjectToPack lotp = (LocalObjectToPack) objectId;
+ Pack pack = lotp.pack;
+ if (pack != null) {
+ try {
+ return func.apply(pack, curs, lotp);
+ } catch (IOException e) {
+ // lotp potentially repacked, continue as if lotp not
+ // provided
+ }
+ }
+ }
+ return null;
+ }
+
@Override
void selectObjectRepresentation(PackWriter packer, ObjectToPack otp,
WindowCursor curs) throws IOException {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
index f2f54947af..8988b41b55 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/Pack.java
@@ -124,15 +124,16 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
private byte[] packChecksum;
- private Optionally<PackIndex> loadedIdx = Optionally.empty();
+ private volatile Optionally<PackIndex> loadedIdx = Optionally.empty();
- private Optionally<PackReverseIndex> reverseIdx = Optionally.empty();
+ private volatile Optionally<PackReverseIndex> reverseIdx = Optionally.empty();
private volatile PackObjectSizeIndex loadedObjSizeIdx;
private volatile boolean attemptLoadObjSizeIdx;
- private Optionally<PackBitmapIndex> bitmapIdx = Optionally.empty();
+ private volatile Optionally<PackBitmapIndex> bitmapIdx = Optionally.empty();
+
/**
* Objects we have tried to read, and discovered to be corrupt.
@@ -168,7 +169,15 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
length = Long.MAX_VALUE;
}
- private synchronized PackIndex idx() throws IOException {
+ private PackIndex idx() throws IOException {
+ Optional<PackIndex> optional = loadedIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ return memoizeIdxIfNeeded();
+ }
+
+ private synchronized PackIndex memoizeIdxIfNeeded() throws IOException {
Optional<PackIndex> optional = loadedIdx.getOptional();
if (optional.isPresent()) {
return optional.get();
@@ -420,9 +429,9 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
}
private synchronized void closeIndices() {
- loadedIdx.clear();
- reverseIdx.clear();
- bitmapIdx.clear();
+ loadedIdx = Optionally.empty();
+ reverseIdx = Optionally.empty();
+ bitmapIdx = Optionally.empty();
}
/**
@@ -1290,7 +1299,15 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
return getReverseIdx().findNextOffset(startOffset, maxOffset);
}
- synchronized PackBitmapIndex getBitmapIndex() throws IOException {
+ PackBitmapIndex getBitmapIndex() throws IOException {
+ Optional<PackBitmapIndex> optional = bitmapIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ return memoizeBitmapIndexIfNeeded();
+ }
+
+ private synchronized PackBitmapIndex memoizeBitmapIndexIfNeeded() throws IOException {
if (invalid || bitmapIdxFile == null) {
return null;
}
@@ -1325,7 +1342,15 @@ public class Pack implements Iterable<PackIndex.MutableEntry> {
this.bitmapIdxFile = bitmapIndexFile;
}
- private synchronized PackReverseIndex getReverseIdx() throws IOException {
+ private PackReverseIndex getReverseIdx() throws IOException {
+ Optional<PackReverseIndex> optional = reverseIdx.getOptional();
+ if (optional.isPresent()) {
+ return optional.get();
+ }
+ return memoizeReverseIdxIfNeeded();
+ }
+
+ private synchronized PackReverseIndex memoizeReverseIdxIfNeeded() throws IOException {
if (invalid) {
throw new PackInvalidException(packFile, invalidatingCause);
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
index 11c45471e4..6612cfc838 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java
@@ -55,6 +55,8 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
private DeltaBaseCache baseCache;
+ private Pack lastPack;
+
@Nullable
private final ObjectInserter createdFromInserter;
@@ -147,8 +149,7 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
return db.getShallowCommits();
}
- @Override
- public long getObjectSize(AnyObjectId objectId, int typeHint)
+ private long getObjectSizeStorage(AnyObjectId objectId, int typeHint)
throws MissingObjectException, IncorrectObjectTypeException,
IOException {
long sz = db.getObjectSize(this, objectId);
@@ -162,6 +163,61 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
}
@Override
+ public long getObjectSize(AnyObjectId objectId, int typeHint)
+ throws MissingObjectException, IncorrectObjectTypeException,
+ IOException {
+ // Async queue uses hint OBJ_ANY
+ if (typeHint != Constants.OBJ_BLOB) {
+ return getObjectSizeStorage(objectId, typeHint);
+ }
+
+ Pack pack = findPack(objectId);
+ if (pack == null) {
+ // Non-packed object (e.g. loose or in alternates)
+ return getObjectSizeStorage(objectId, typeHint);
+ }
+
+ long sz = pack.getIndexedObjectSize(objectId);
+ if (sz >= 0) {
+ return sz;
+ }
+ return getObjectSizeStorage(objectId, typeHint);
+ }
+
+ @Override
+ public boolean isNotLargerThan(AnyObjectId objectId, int typeHint,
+ long size)
+ throws MissingObjectException, IncorrectObjectTypeException,
+ IOException {
+ if (typeHint != Constants.OBJ_BLOB) {
+ return getObjectSizeStorage(objectId, typeHint) <= size;
+ }
+
+ Pack pack = findPack(objectId);
+ if (pack == null || !pack.hasObjectSizeIndex()) {
+ // Non-packed object (e.g. loose or in alternates)
+ return getObjectSizeStorage(objectId, typeHint) <= size;
+ }
+
+ return pack.getIndexedObjectSize(objectId) <= size;
+ }
+
+ private Pack findPack(AnyObjectId objectId) throws IOException {
+ if (lastPack != null && lastPack.hasObject(objectId)) {
+ return lastPack;
+ }
+
+ for (Pack p : db.getPacks()) {
+ if (p.hasObject(objectId)) {
+ lastPack = p;
+ return p;
+ }
+ }
+
+ return null;
+ }
+
+ @Override
public LocalObjectToPack newObjectToPack(AnyObjectId objectId, int type) {
return new LocalObjectToPack(objectId, type);
}
diff --git a/pom.xml b/pom.xml
index 2015b48ab1..2fa8528bce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -899,7 +899,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.18.0</version>
+ <version>1.19.0</version>
</dependency>
<dependency>
@@ -911,7 +911,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
- <version>2.19.0</version>
+ <version>2.20.0</version>
</dependency>
<dependency>