X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-pack-objects.c;h=827673ce4e81e14e13ae4b41ac89c18f6201ddb6;hb=1f5c74f6cf918d317c73b328dcd4cf6f55c44d8a;hp=f43eb67016ee719d34d2e2f4ae8d77e1ec74b396;hpb=b84c343c885b8168047b2773b5c597d04337d9bd;p=git.git diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index f43eb6701..827673ce4 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -514,11 +514,14 @@ static void write_pack_file(void) * Did we write the wrong # entries in the header? * If so, rewrite it like in fast-import */ - if (pack_to_stdout || nr_written == nr_remaining) { - sha1close(f, sha1, 1); + if (pack_to_stdout) { + sha1close(f, sha1, CSUM_CLOSE); + } else if (nr_written == nr_remaining) { + sha1close(f, sha1, CSUM_FSYNC); } else { int fd = sha1close(f, NULL, 0); fixup_pack_header_footer(fd, sha1, pack_tmp_name, nr_written); + fsync_or_die(fd, pack_tmp_name); close(fd); } @@ -1145,8 +1148,6 @@ static void get_object_details(void) sorted_by_offset[i] = objects + i; qsort(sorted_by_offset, nr_objects, sizeof(*sorted_by_offset), pack_offset_sort); - init_pack_revindex(); - for (i = 0; i < nr_objects; i++) check_object(sorted_by_offset[i]); @@ -1760,7 +1761,7 @@ static void prepare_pack(int window, int depth) free(delta_list); } -static int git_pack_config(const char *k, const char *v) +static int git_pack_config(const char *k, const char *v, void *cb) { if(!strcmp(k, "pack.window")) { window = git_config_int(k, v); @@ -1813,7 +1814,7 @@ static int git_pack_config(const char *k, const char *v) pack_size_limit_cfg = git_config_ulong(k, v); return 0; } - return git_default_config(k, v); + return git_default_config(k, v, cb); } static void read_object_list_from_stdin(void) @@ -2033,7 +2034,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) rp_av[1] = "--objects"; /* --thin will make it --objects-edge */ rp_ac = 2; - git_config(git_pack_config); + git_config(git_pack_config, NULL); if (!pack_compression_seen && core_compression_seen) pack_compression_level = core_compression_level;