send-pack --thin: use "thin pack" delta transfer.
authorJunio C Hamano <junkio@cox.net>
Sun, 19 Feb 2006 23:03:49 +0000 (15:03 -0800)
committerJunio C Hamano <junkio@cox.net>
Mon, 20 Feb 2006 06:28:04 +0000 (22:28 -0800)
The new flag loosens the usual "self containedness" requirment
of packfiles, and sends deltified representation of objects when
we know the other side has the base objects needed to unpack
them.  This would help reducing the transfer size.

Signed-off-by: Junio C Hamano <junkio@cox.net>
send-pack.c

index 990be3f1a338a34025afa4acbe25f4c67ea6ce30..ad22da56e9d43b6dc36a1f9542d07e4b3da459ef 100644 (file)
@@ -12,6 +12,7 @@ static const char *exec = "git-receive-pack";
 static int verbose = 0;
 static int send_all = 0;
 static int force_update = 0;
+static int use_thin_pack = 0;
 
 static int is_zero_sha1(const unsigned char *sha1)
 {
@@ -41,7 +42,10 @@ static void exec_rev_list(struct ref *refs)
        int i = 0;
 
        args[i++] = "rev-list"; /* 0 */
-       args[i++] = "--objects";        /* 1 */
+       if (use_thin_pack)      /* 1 */
+               args[i++] = "--objects-edge";
+       else
+               args[i++] = "--objects";
        while (refs) {
                char *buf = malloc(100);
                if (i > 900)
@@ -361,6 +365,10 @@ int main(int argc, char **argv)
                                verbose = 1;
                                continue;
                        }
+                       if (!strcmp(arg, "--thin")) {
+                               use_thin_pack = 1;
+                               continue;
+                       }
                        usage(send_pack_usage);
                }
                if (!dest) {