Merge branch 'pj/portable' into next
[git.git] / send-pack.c
index cd36193..ad22da5 100644 (file)
@@ -3,6 +3,7 @@
 #include "tag.h"
 #include "refs.h"
 #include "pkt-line.h"
+#include "exec_cmd.h"
 
 static const char send_pack_usage[] =
 "git-send-pack [--all] [--exec=git-receive-pack] <remote> [<head>...]\n"
@@ -11,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,11 +28,11 @@ static int is_zero_sha1(const unsigned char *sha1)
 static void exec_pack_objects(void)
 {
        static char *args[] = {
-               "git-pack-objects",
+               "pack-objects",
                "--stdout",
                NULL
        };
-       execvp("git-pack-objects", args);
+       execv_git_cmd(args);
        die("git-pack-objects exec failed (%s)", strerror(errno));
 }
 
@@ -39,8 +41,11 @@ static void exec_rev_list(struct ref *refs)
        static char *args[1000];
        int i = 0;
 
-       args[i++] = "git-rev-list";     /* 0 */
-       args[i++] = "--objects";        /* 1 */
+       args[i++] = "rev-list"; /* 0 */
+       if (use_thin_pack)      /* 1 */
+               args[i++] = "--objects-edge";
+       else
+               args[i++] = "--objects";
        while (refs) {
                char *buf = malloc(100);
                if (i > 900)
@@ -58,7 +63,7 @@ static void exec_rev_list(struct ref *refs)
                refs = refs->next;
        }
        args[i] = NULL;
-       execvp("git-rev-list", args);
+       execv_git_cmd(args);
        die("git-rev-list exec failed (%s)", strerror(errno));
 }
 
@@ -360,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) {