X-Git-Url: https://git.octo.it/?p=git.git;a=blobdiff_plain;f=send-pack.c;h=af93b11f238e4583f6e7fb9dab5a2224acf4ee1f;hp=b58bbabc15c7619622d7796fc0c7d69b7dcf7e9b;hb=HEAD;hpb=3efaa937a52aff14ca35207fd3a8a4d1d1ed2067 diff --git a/send-pack.c b/send-pack.c index b58bbabc..af93b11f 100644 --- a/send-pack.c +++ b/send-pack.c @@ -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) { @@ -147,12 +151,12 @@ static int ref_newer(const unsigned char *new_sha1, * old. Otherwise we require --force. */ o = deref_tag(parse_object(old_sha1), NULL, 0); - if (!o || o->type != commit_type) + if (!o || o->type != TYPE_COMMIT) return 0; old = (struct commit *) o; o = deref_tag(parse_object(new_sha1), NULL, 0); - if (!o || o->type != commit_type) + if (!o || o->type != TYPE_COMMIT) return 0; new = (struct commit *) o; @@ -358,6 +362,8 @@ int main(int argc, char **argv) pid_t pid; setup_git_directory(); + git_config(git_default_config); + argv++; for (i = 1; i < argc; i++, argv++) { char *arg = *argv; @@ -379,6 +385,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) {