From 93ba78d6f4632ef1c5228965e3edc8c0faf88c1e Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 26 May 2020 00:06:52 +0100 Subject: revert(3p/git): Revert merge of git upstream at v2.26.2 This causes cgit to serve error pages, which is undesirable. This reverts commit 5229c9b232de5bfa959ad6ebbb4c8192ac513352, reversing changes made to f2b211131f2347342dde63975b09cf603149f1a3. --- third_party/git/builtin/bundle.c | 217 ++++++++------------------------------- 1 file changed, 45 insertions(+), 172 deletions(-) (limited to 'third_party/git/builtin/bundle.c') diff --git a/third_party/git/builtin/bundle.c b/third_party/git/builtin/bundle.c index f049d27a14..1ea4bfdfc1 100644 --- a/third_party/git/builtin/bundle.c +++ b/third_party/git/builtin/bundle.c @@ -1,6 +1,4 @@ #include "builtin.h" -#include "argv-array.h" -#include "parse-options.h" #include "cache.h" #include "bundle.h" @@ -11,184 +9,59 @@ * bundle supporting "fetch", "pull", and "ls-remote". */ -static const char * const builtin_bundle_usage[] = { - N_("git bundle create [] "), - N_("git bundle verify [] "), - N_("git bundle list-heads [...]"), - N_("git bundle unbundle [...]"), - NULL -}; +static const char builtin_bundle_usage[] = + "git bundle create \n" + " or: git bundle verify \n" + " or: git bundle list-heads [...]\n" + " or: git bundle unbundle [...]"; -static const char * const builtin_bundle_create_usage[] = { - N_("git bundle create [] "), - NULL -}; - -static const char * const builtin_bundle_verify_usage[] = { - N_("git bundle verify [] "), - NULL -}; - -static const char * const builtin_bundle_list_heads_usage[] = { - N_("git bundle list-heads [...]"), - NULL -}; - -static const char * const builtin_bundle_unbundle_usage[] = { - N_("git bundle unbundle [...]"), - NULL -}; - -static int verbose; - -static int parse_options_cmd_bundle(int argc, - const char **argv, - const char* prefix, - const char * const usagestr[], - const struct option options[], - const char **bundle_file) { - int newargc; - newargc = parse_options(argc, argv, NULL, options, usagestr, - PARSE_OPT_STOP_AT_NON_OPTION); - if (argc < 1) - usage_with_options(usagestr, options); - *bundle_file = prefix_filename(prefix, argv[0]); - return newargc; -} - -static int cmd_bundle_create(int argc, const char **argv, const char *prefix) { - int all_progress_implied = 0; - int progress = isatty(STDERR_FILENO); - struct argv_array pack_opts; - - struct option options[] = { - OPT_SET_INT('q', "quiet", &progress, - N_("do not show progress meter"), 0), - OPT_SET_INT(0, "progress", &progress, - N_("show progress meter"), 1), - OPT_SET_INT(0, "all-progress", &progress, - N_("show progress meter during object writing phase"), 2), - OPT_BOOL(0, "all-progress-implied", - &all_progress_implied, - N_("similar to --all-progress when progress meter is shown")), - OPT_END() - }; - const char* bundle_file; - - argc = parse_options_cmd_bundle(argc, argv, prefix, - builtin_bundle_create_usage, options, &bundle_file); - /* bundle internals use argv[1] as further parameters */ - - argv_array_init(&pack_opts); - if (progress == 0) - argv_array_push(&pack_opts, "--quiet"); - else if (progress == 1) - argv_array_push(&pack_opts, "--progress"); - else if (progress == 2) - argv_array_push(&pack_opts, "--all-progress"); - if (progress && all_progress_implied) - argv_array_push(&pack_opts, "--all-progress-implied"); - - if (!startup_info->have_repository) - die(_("Need a repository to create a bundle.")); - return !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts); -} - -static int cmd_bundle_verify(int argc, const char **argv, const char *prefix) { - struct bundle_header header; - int bundle_fd = -1; - int quiet = 0; - - struct option options[] = { - OPT_BOOL('q', "quiet", &quiet, - N_("do not show bundle details")), - OPT_END() - }; - const char* bundle_file; - - argc = parse_options_cmd_bundle(argc, argv, prefix, - builtin_bundle_verify_usage, options, &bundle_file); - /* bundle internals use argv[1] as further parameters */ - - memset(&header, 0, sizeof(header)); - if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) - return 1; - close(bundle_fd); - if (verify_bundle(the_repository, &header, !quiet)) - return 1; - fprintf(stderr, _("%s is okay\n"), bundle_file); - return 0; -} - -static int cmd_bundle_list_heads(int argc, const char **argv, const char *prefix) { - struct bundle_header header; - int bundle_fd = -1; - - struct option options[] = { - OPT_END() - }; - const char* bundle_file; - - argc = parse_options_cmd_bundle(argc, argv, prefix, - builtin_bundle_list_heads_usage, options, &bundle_file); - /* bundle internals use argv[1] as further parameters */ - - memset(&header, 0, sizeof(header)); - if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) - return 1; - close(bundle_fd); - return !!list_bundle_refs(&header, argc, argv); -} - -static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix) { +int cmd_bundle(int argc, const char **argv, const char *prefix) +{ struct bundle_header header; + const char *cmd, *bundle_file; int bundle_fd = -1; - struct option options[] = { - OPT_END() - }; - const char* bundle_file; + if (argc < 3) + usage(builtin_bundle_usage); - argc = parse_options_cmd_bundle(argc, argv, prefix, - builtin_bundle_unbundle_usage, options, &bundle_file); - /* bundle internals use argv[1] as further parameters */ + cmd = argv[1]; + bundle_file = prefix_filename(prefix, argv[2]); + argc -= 2; + argv += 2; memset(&header, 0, sizeof(header)); - if ((bundle_fd = read_bundle_header(bundle_file, &header)) < 0) + if (strcmp(cmd, "create") && (bundle_fd = + read_bundle_header(bundle_file, &header)) < 0) return 1; - if (!startup_info->have_repository) - die(_("Need a repository to unbundle.")); - return !!unbundle(the_repository, &header, bundle_fd, 0) || - list_bundle_refs(&header, argc, argv); -} - -int cmd_bundle(int argc, const char **argv, const char *prefix) -{ - struct option options[] = { - OPT__VERBOSE(&verbose, N_("be verbose; must be placed before a subcommand")), - OPT_END() - }; - int result; - - argc = parse_options(argc, argv, prefix, options, builtin_bundle_usage, - PARSE_OPT_STOP_AT_NON_OPTION); - - packet_trace_identity("bundle"); - if (argc < 2) - usage_with_options(builtin_bundle_usage, options); - - else if (!strcmp(argv[0], "create")) - result = cmd_bundle_create(argc, argv, prefix); - else if (!strcmp(argv[0], "verify")) - result = cmd_bundle_verify(argc, argv, prefix); - else if (!strcmp(argv[0], "list-heads")) - result = cmd_bundle_list_heads(argc, argv, prefix); - else if (!strcmp(argv[0], "unbundle")) - result = cmd_bundle_unbundle(argc, argv, prefix); - else { - error(_("Unknown subcommand: %s"), argv[0]); - usage_with_options(builtin_bundle_usage, options); + if (!strcmp(cmd, "verify")) { + close(bundle_fd); + if (argc != 1) { + usage(builtin_bundle_usage); + return 1; + } + if (verify_bundle(the_repository, &header, 1)) + return 1; + fprintf(stderr, _("%s is okay\n"), bundle_file); + return 0; + } + if (!strcmp(cmd, "list-heads")) { + close(bundle_fd); + return !!list_bundle_refs(&header, argc, argv); } - return result ? 1 : 0; + if (!strcmp(cmd, "create")) { + if (argc < 2) { + usage(builtin_bundle_usage); + return 1; + } + if (!startup_info->have_repository) + die(_("Need a repository to create a bundle.")); + return !!create_bundle(the_repository, bundle_file, argc, argv); + } else if (!strcmp(cmd, "unbundle")) { + if (!startup_info->have_repository) + die(_("Need a repository to unbundle.")); + return !!unbundle(the_repository, &header, bundle_fd, 0) || + list_bundle_refs(&header, argc, argv); + } else + usage(builtin_bundle_usage); } -- cgit 1.4.1