true built-in diff: run everything in-core.
[git.git] / send-pack.c
index b58bbab..c8ffc8d 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)
 {
@@ -26,7 +27,7 @@ static int is_zero_sha1(const unsigned char *sha1)
 
 static void exec_pack_objects(void)
 {
-       static char *args[] = {
+       static const char *args[] = {
                "pack-objects",
                "--stdout",
                NULL
@@ -38,11 +39,14 @@ static void exec_pack_objects(void)
 static void exec_rev_list(struct ref *refs)
 {
        struct ref *ref;
-       static char *args[1000];
+       static const char *args[1000];
        int i = 0, j;
 
        args[i++] = "rev-list"; /* 0 */
-       args[i++] = "--objects";        /* 1 */
+       if (use_thin_pack)      /* 1 */
+               args[i++] = "--objects-edge";
+       else
+               args[i++] = "--objects";
 
        /* First send the ones we care about most */
        for (ref = refs; ref; ref = ref->next) {
@@ -379,6 +383,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) {