diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java index 338929a1b..837ca2cb1 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/ShowPackDelta.java @@ -94,7 +94,7 @@ private static byte[] getDelta(ObjectReader reader, RevObject obj) throws IOException, MissingObjectException, StoredObjectRepresentationNotAvailableException { ObjectReuseAsIs asis = (ObjectReuseAsIs) reader; - ObjectToPack target = asis.newObjectToPack(obj); + ObjectToPack target = asis.newObjectToPack(obj, obj.getType()); PackWriter pw = new PackWriter(reader) { @Override diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsObjectToPack.java index c5243d994..7efa96668 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsObjectToPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsObjectToPack.java @@ -43,7 +43,7 @@ package org.eclipse.jgit.storage.dfs; -import org.eclipse.jgit.revwalk.RevObject; +import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.storage.pack.ObjectToPack; import org.eclipse.jgit.storage.pack.StoredObjectRepresentation; @@ -61,8 +61,8 @@ class DfsObjectToPack extends ObjectToPack { /** Length of the data section of the object. */ long length; - DfsObjectToPack(RevObject obj) { - super(obj); + DfsObjectToPack(AnyObjectId src, final int type) { + super(src, type); } @Override diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java index 393fa3fce..e22e13eaf 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java @@ -83,7 +83,6 @@ import org.eclipse.jgit.lib.ProgressMonitor; import org.eclipse.jgit.revwalk.ObjectWalk; import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.storage.pack.CachedPack; import org.eclipse.jgit.storage.pack.ObjectReuseAsIs; @@ -433,8 +432,8 @@ public long getObjectSize(AnyObjectId objectId, int typeHint) throw new MissingObjectException(objectId.copy(), typeHint); } - public DfsObjectToPack newObjectToPack(RevObject obj) { - return new DfsObjectToPack(obj); + public DfsObjectToPack newObjectToPack(AnyObjectId objectId, int type) { + return new DfsObjectToPack(objectId, type); } private static final Comparator REPRESENTATION_SORT = new Comparator() { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LocalObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LocalObjectToPack.java index c7ef2c913..c7d822c97 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LocalObjectToPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/LocalObjectToPack.java @@ -43,7 +43,7 @@ package org.eclipse.jgit.storage.file; -import org.eclipse.jgit.revwalk.RevObject; +import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.storage.pack.ObjectToPack; import org.eclipse.jgit.storage.pack.StoredObjectRepresentation; @@ -58,8 +58,8 @@ class LocalObjectToPack extends ObjectToPack { /** Length of the data section of the object. */ long length; - LocalObjectToPack(RevObject obj) { - super(obj); + LocalObjectToPack(AnyObjectId src, final int type) { + super(src, type); } @Override diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCursor.java index 5555a3c40..350f981b2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCursor.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCursor.java @@ -68,7 +68,6 @@ import org.eclipse.jgit.lib.ObjectLoader; import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.ProgressMonitor; -import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.storage.pack.CachedPack; import org.eclipse.jgit.storage.pack.ObjectReuseAsIs; import org.eclipse.jgit.storage.pack.ObjectToPack; @@ -148,8 +147,8 @@ public long getObjectSize(AnyObjectId objectId, int typeHint) return sz; } - public LocalObjectToPack newObjectToPack(RevObject obj) { - return new LocalObjectToPack(obj); + public LocalObjectToPack newObjectToPack(AnyObjectId objectId, int type) { + return new LocalObjectToPack(objectId, type); } public void selectObjectRepresentation(PackWriter packer, diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectReuseAsIs.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectReuseAsIs.java index 795b004e8..ed0294ed3 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectReuseAsIs.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectReuseAsIs.java @@ -49,9 +49,9 @@ import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException; +import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.ProgressMonitor; -import org.eclipse.jgit.revwalk.RevObject; /** * Extension of {@link ObjectReader} that supports reusing objects in packs. @@ -71,13 +71,13 @@ public interface ObjectReuseAsIs { * object state, such as to remember what file and offset contains the * object's pack encoded data. * - * @param obj - * identity of the object that will be packed. The object's - * parsed status is undefined here. Implementers must not rely on - * the object being parsed. + * @param objectId + * the id of the object that will be packed. + * @param type + * the Git type of the object that will be packed. * @return a new instance for this object. */ - public ObjectToPack newObjectToPack(RevObject obj); + public ObjectToPack newObjectToPack(AnyObjectId objectId, int type); /** * Select the best object representation for a packer. diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectToPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectToPack.java index 1b8a9bf60..b42d4a5e4 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectToPack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectToPack.java @@ -47,7 +47,6 @@ import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.revwalk.RevObject; import org.eclipse.jgit.transport.PackedObjectInfo; /** @@ -120,18 +119,6 @@ public ObjectToPack(AnyObjectId src, final int type) { flags = type << TYPE_SHIFT; } - /** - * Construct for the specified object. - * - * @param obj - * identity of the object that will be packed. The object's - * parsed status is undefined here. Implementers must not rely on - * the object being parsed. - */ - public ObjectToPack(RevObject obj) { - this(obj, obj.getType()); - } - /** * @return delta base object id if object is going to be packed in delta * representation; null otherwise - if going to be packed as a 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 1cf178128..77ebaf618 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 @@ -1826,13 +1826,18 @@ public void addObject(final RevObject object) } private void addObject(final RevObject object, final int pathHashCode) { + addObject(object, object.getType(), pathHashCode); + } + + private void addObject( + final AnyObjectId src, final int type, final int pathHashCode) { final ObjectToPack otp; if (reuseSupport != null) - otp = reuseSupport.newObjectToPack(object); + otp = reuseSupport.newObjectToPack(src, type); else - otp = new ObjectToPack(object); + otp = new ObjectToPack(src, type); otp.setPathHash(pathHashCode); - objectsLists[object.getType()].add(otp); + objectsLists[type].add(otp); objectsMap.add(otp); }