]> source.dussan.org Git - jgit.git/commitdiff
Add doNotDelta flag to ObjectToPack 05/1105/1
authorShawn O. Pearce <spearce@spearce.org>
Fri, 9 Jul 2010 00:19:20 +0000 (17:19 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 10 Jul 2010 02:00:49 +0000 (19:00 -0700)
This flag will later control whether or not PackWriter search for a
delta base for this object.  Edge objects will never get searched,
as the writer won't be outputting them, so they should always have
this flag set on.  Sometime in the future this flag should also be
set for file blobs on file paths that have the "-delta" gitattribute
set in the repository's attributes file.

Change-Id: I6e518e1a6996c8ce00b523727f1b605e400e82c6
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/ObjectToPack.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java

index cad3aaeec7129cf2a0c0b8abd3fe0e98aab593d4..4016e92c9de3125d57f8235e2c530f9681e83db2 100644 (file)
@@ -61,6 +61,8 @@ public class ObjectToPack extends PackedObjectInfo {
 
        private static final int REUSE_AS_IS = 1 << 1;
 
+       private static final int DO_NOT_DELTA = 1 << 2;
+
        private static final int TYPE_SHIFT = 5;
 
        private static final int DELTA_SHIFT = 8;
@@ -75,7 +77,8 @@ public class ObjectToPack extends PackedObjectInfo {
         * <ul>
         * <li>1 bit: wantWrite</li>
         * <li>1 bit: canReuseAsIs</li>
-        * <li>3 bits: unused</li>
+        * <li>1 bit: doNotDelta</li>
+        * <li>2 bits: unused</li>
         * <li>3 bits: type</li>
         * <li>--</li>
         * <li>24 bits: deltaDepth</li>
@@ -207,6 +210,17 @@ public class ObjectToPack extends PackedObjectInfo {
                flags &= ~REUSE_AS_IS;
        }
 
+       boolean isDoNotDelta() {
+               return (flags & DO_NOT_DELTA) != 0;
+       }
+
+       void setDoNotDelta(boolean noDelta) {
+               if (noDelta)
+                       flags |= DO_NOT_DELTA;
+               else
+                       flags &= ~DO_NOT_DELTA;
+       }
+
        int getFormat() {
                if (isReuseAsIs()) {
                        if (isDeltaRepresentation())
index 05e863e551439a1f30eea5935f10d4f1e653a9e1..25e2bea1ab4073cc3a908909c8cce6c92cd60f21 100644 (file)
@@ -911,6 +911,7 @@ public class PackWriter {
                        case Constants.OBJ_BLOB:
                                ObjectToPack otp = new ObjectToPack(object);
                                otp.setPathHash(pathHashCode);
+                               otp.setDoNotDelta(true);
                                edgeObjects.add(otp);
                                thin = true;
                                break;