From: Junio C Hamano Date: Fri, 26 Sep 2014 21:39:44 +0000 (-0700) Subject: Merge branch 'jk/prune-packed-server-info' X-Git-Tag: v2.2.0-rc0~86 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c0f5f311dbb219c88a2da4a3029f9c7d9c554753?ds=inline;hp=-c Merge branch 'jk/prune-packed-server-info' Code cleanup. * jk/prune-packed-server-info: repack: call prune_packed_objects() and update_server_info() directly server-info: clean up after writing info/packs make update-server-info more robust prune-packed: fix minor memory leak --- c0f5f311dbb219c88a2da4a3029f9c7d9c554753 diff --combined builtin/repack.c index fc088dbe6a,6912831273..2aae05d364 --- a/builtin/repack.c +++ b/builtin/repack.c @@@ -133,7 -133,7 +133,7 @@@ int cmd_repack(int argc, const char **a {".idx"}, {".bitmap", 1}, }; - struct child_process cmd; + struct child_process cmd = CHILD_PROCESS_INIT; struct string_list_item *item; struct argv_array cmd_args = ARGV_ARRAY_INIT; struct string_list names = STRING_LIST_INIT_DUP; @@@ -250,6 -250,7 +250,6 @@@ argv_array_push(&cmd_args, packtmp); - memset(&cmd, 0, sizeof(cmd)); cmd.argv = cmd_args.argv; cmd.git_cmd = 1; cmd.out = -1; @@@ -377,6 -378,7 +377,7 @@@ /* End of pack replacement. */ if (delete_redundant) { + int opts = 0; sort_string_list(&names); for_each_string_list_item(item, &existing_packs) { char *sha1; @@@ -387,25 -389,13 +388,13 @@@ if (!string_list_has_string(&names, sha1)) remove_redundant_pack(packdir, item->string); } - argv_array_push(&cmd_args, "prune-packed"); - if (quiet) - argv_array_push(&cmd_args, "--quiet"); - - memset(&cmd, 0, sizeof(cmd)); - cmd.argv = cmd_args.argv; - cmd.git_cmd = 1; - run_command(&cmd); - argv_array_clear(&cmd_args); + if (!quiet && isatty(2)) + opts |= PRUNE_PACKED_VERBOSE; + prune_packed_objects(opts); } - if (!no_update_server_info) { - argv_array_push(&cmd_args, "update-server-info"); - memset(&cmd, 0, sizeof(cmd)); - cmd.argv = cmd_args.argv; - cmd.git_cmd = 1; - run_command(&cmd); - argv_array_clear(&cmd_args); - } + if (!no_update_server_info) + update_server_info(0); remove_temporary_files(); string_list_clear(&names, 0); string_list_clear(&rollback, 0);