@@ -94,7 +94,7 @@ class ShowPackDelta extends TextBuiltin { | |||
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 |
@@ -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 |
@@ -83,7 +83,6 @@ import org.eclipse.jgit.lib.ObjectReader; | |||
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 final class DfsReader extends ObjectReader implements ObjectReuseAsIs { | |||
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<DfsObjectRepresentation> REPRESENTATION_SORT = new Comparator<DfsObjectRepresentation>() { |
@@ -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 |
@@ -68,7 +68,6 @@ import org.eclipse.jgit.lib.ObjectId; | |||
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 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs { | |||
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, |
@@ -49,9 +49,9 @@ import java.util.List; | |||
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. |
@@ -47,7 +47,6 @@ package org.eclipse.jgit.storage.pack; | |||
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 class ObjectToPack extends PackedObjectInfo { | |||
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 |
@@ -1826,13 +1826,18 @@ public class PackWriter { | |||
} | |||
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); | |||
} | |||