From: Junio C Hamano Date: Mon, 18 May 2009 16:01:16 +0000 (-0700) Subject: Merge branch 'np/push-delta' X-Git-Tag: v1.6.4-rc0~154 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/99ddd24ad7753458043016bf1b7d88915aaeb396?hp=-c Merge branch 'np/push-delta' * np/push-delta: allow OFS_DELTA objects during a push --- 99ddd24ad7753458043016bf1b7d88915aaeb396 diff --combined builtin-receive-pack.c index 035b723e50,4b9d9218d1..0b08da9b59 --- a/builtin-receive-pack.c +++ b/builtin-receive-pack.c @@@ -27,10 -27,9 +27,9 @@@ static int receive_unpack_limit = -1 static int transfer_unpack_limit = -1; static int unpack_limit = 100; static int report_status; + static int prefer_ofs_delta = 1; static const char *head_name; - - static char capabilities[] = " report-status delete-refs "; - static int capabilities_sent; + static char *capabilities_to_send; static enum deny_action parse_deny_action(const char *var, const char *value) { @@@ -84,24 -83,29 +83,29 @@@ static int receive_pack_config(const ch return 0; } + if (strcmp(var, "repack.usedeltabaseoffset") == 0) { + prefer_ofs_delta = git_config_bool(var, value); + return 0; + } + return git_default_config(var, value, cb); } static int show_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data) { - if (capabilities_sent) + if (!capabilities_to_send) packet_write(1, "%s %s\n", sha1_to_hex(sha1), path); else packet_write(1, "%s %s%c%s\n", - sha1_to_hex(sha1), path, 0, capabilities); - capabilities_sent = 1; + sha1_to_hex(sha1), path, 0, capabilities_to_send); + capabilities_to_send = NULL; return 0; } static void write_head_info(void) { for_each_ref(show_ref, NULL); - if (!capabilities_sent) + if (capabilities_to_send) show_ref("capabilities^{}", null_sha1, 0, NULL); } @@@ -687,6 -691,10 +691,10 @@@ int cmd_receive_pack(int argc, const ch else if (0 <= receive_unpack_limit) unpack_limit = receive_unpack_limit; + capabilities_to_send = (prefer_ofs_delta) ? + " report-status delete-refs ofs-delta " : + " report-status delete-refs "; + add_alternate_refs(); write_head_info(); clear_extra_refs(); @@@ -702,7 -710,7 +710,7 @@@ unpack_status = unpack(); execute_commands(unpack_status); if (pack_lockfile) - unlink(pack_lockfile); + unlink_or_warn(pack_lockfile); if (report_status) report(unpack_status); run_receive_hook(post_receive_hook);