diff options
author | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-05-25T23·06+0100 |
commit | 93ba78d6f4632ef1c5228965e3edc8c0faf88c1e (patch) | |
tree | 85730c182a9f5f492ade8e8ccdb1c2356f9900bd /third_party/git/builtin/log.c | |
parent | 6f8fbf4aa4b1654ab27d4829e114538761817de0 (diff) |
revert(3p/git): Revert merge of git upstream at v2.26.2 r/852
This causes cgit to serve error pages, which is undesirable. This reverts commit 5229c9b232de5bfa959ad6ebbb4c8192ac513352, reversing changes made to f2b211131f2347342dde63975b09cf603149f1a3.
Diffstat (limited to 'third_party/git/builtin/log.c')
-rw-r--r-- | third_party/git/builtin/log.c | 210 |
1 files changed, 56 insertions, 154 deletions
diff --git a/third_party/git/builtin/log.c b/third_party/git/builtin/log.c index 83a4a6188e22..44b10b341541 100644 --- a/third_party/git/builtin/log.c +++ b/third_party/git/builtin/log.c @@ -37,7 +37,6 @@ #include "range-diff.h" #define MAIL_DEFAULT_WRAP 72 -#define COVER_FROM_AUTO_MAX_SUBJECT_LEN 100 /* Set a default date-time format for git log ("log.date" config variable) */ static const char *default_date_mode = NULL; @@ -208,7 +207,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix, if (!rev->show_notes_given && (!rev->pretty_given || w.notes)) rev->show_notes = 1; if (rev->show_notes) - load_display_notes(&rev->notes_opt); + init_display_notes(&rev->notes_opt); if ((rev->diffopt.pickaxe_opts & DIFF_PICKAXE_KINDS_MASK) || rev->diffopt.filter || rev->diffopt.flags.follow_renames) @@ -628,7 +627,6 @@ int cmd_show(int argc, const char **argv, const char *prefix) break; case OBJ_TAG: { struct tag *t = (struct tag *)o; - struct object_id *oid = get_tagged_oid(t); if (rev.shown_one) putchar('\n'); @@ -640,10 +638,10 @@ int cmd_show(int argc, const char **argv, const char *prefix) rev.shown_one = 1; if (ret) break; - o = parse_object(the_repository, oid); + o = parse_object(the_repository, &t->tagged->oid); if (!o) ret = error(_("could not read object %s"), - oid_to_hex(oid)); + oid_to_hex(&t->tagged->oid)); objects[i].item = o; i--; break; @@ -766,56 +764,28 @@ static void add_header(const char *value) item->string[len] = '\0'; } -enum cover_setting { - COVER_UNSET, - COVER_OFF, - COVER_ON, - COVER_AUTO -}; - -enum thread_level { - THREAD_UNSET, - THREAD_SHALLOW, - THREAD_DEEP -}; - -enum cover_from_description { - COVER_FROM_NONE, - COVER_FROM_MESSAGE, - COVER_FROM_SUBJECT, - COVER_FROM_AUTO -}; - -static enum thread_level thread; +#define THREAD_SHALLOW 1 +#define THREAD_DEEP 2 +static int thread; static int do_signoff; static int base_auto; static char *from; static const char *signature = git_version_string; static const char *signature_file; -static enum cover_setting config_cover_letter; +static int config_cover_letter; static const char *config_output_directory; -static enum cover_from_description cover_from_description_mode = COVER_FROM_MESSAGE; -static int show_notes; -static struct display_notes_opt notes_opt; -static enum cover_from_description parse_cover_from_description(const char *arg) -{ - if (!arg || !strcmp(arg, "default")) - return COVER_FROM_MESSAGE; - else if (!strcmp(arg, "none")) - return COVER_FROM_NONE; - else if (!strcmp(arg, "message")) - return COVER_FROM_MESSAGE; - else if (!strcmp(arg, "subject")) - return COVER_FROM_SUBJECT; - else if (!strcmp(arg, "auto")) - return COVER_FROM_AUTO; - else - die(_("%s: invalid cover from description mode"), arg); -} +enum { + COVER_UNSET, + COVER_OFF, + COVER_ON, + COVER_AUTO +}; static int git_format_config(const char *var, const char *value, void *cb) { + struct rev_info *rev = cb; + if (!strcmp(var, "format.headers")) { if (!value) die(_("format.headers without value")); @@ -865,7 +835,7 @@ static int git_format_config(const char *var, const char *value, void *cb) thread = THREAD_SHALLOW; return 0; } - thread = git_config_bool(var, value) ? THREAD_SHALLOW : THREAD_UNSET; + thread = git_config_bool(var, value) && THREAD_SHALLOW; return 0; } if (!strcmp(var, "format.signoff")) { @@ -902,17 +872,19 @@ static int git_format_config(const char *var, const char *value, void *cb) return 0; } if (!strcmp(var, "format.notes")) { + struct strbuf buf = STRBUF_INIT; int b = git_parse_maybe_bool(value); - if (b < 0) - enable_ref_display_notes(¬es_opt, &show_notes, value); - else if (b) - enable_default_display_notes(¬es_opt, &show_notes); - else - disable_display_notes(¬es_opt, &show_notes); - return 0; - } - if (!strcmp(var, "format.coverfromdescription")) { - cover_from_description_mode = parse_cover_from_description(value); + if (!b) + return 0; + rev->show_notes = 1; + if (b < 0) { + strbuf_addstr(&buf, value); + expand_notes_ref(&buf); + string_list_append(&rev->notes_opt.extra_notes_refs, + strbuf_detach(&buf, NULL)); + } else { + rev->notes_opt.use_default_notes = 1; + } return 0; } @@ -1021,6 +993,20 @@ static void print_signature(FILE *file) putc('\n', file); } +static void add_branch_description(struct strbuf *buf, const char *branch_name) +{ + struct strbuf desc = STRBUF_INIT; + if (!branch_name || !*branch_name) + return; + read_branch_desc(&desc, branch_name); + if (desc.len) { + strbuf_addch(buf, '\n'); + strbuf_addbuf(buf, &desc); + strbuf_addch(buf, '\n'); + } + strbuf_release(&desc); +} + static char *find_branch_name(struct rev_info *rev) { int i, positive = -1; @@ -1067,63 +1053,6 @@ static void show_diffstat(struct rev_info *rev, fprintf(rev->diffopt.file, "\n"); } -static void prepare_cover_text(struct pretty_print_context *pp, - const char *branch_name, - struct strbuf *sb, - const char *encoding, - int need_8bit_cte) -{ - const char *subject = "*** SUBJECT HERE ***"; - const char *body = "*** BLURB HERE ***"; - struct strbuf description_sb = STRBUF_INIT; - struct strbuf subject_sb = STRBUF_INIT; - - if (cover_from_description_mode == COVER_FROM_NONE) - goto do_pp; - - if (branch_name && *branch_name) - read_branch_desc(&description_sb, branch_name); - if (!description_sb.len) - goto do_pp; - - if (cover_from_description_mode == COVER_FROM_SUBJECT || - cover_from_description_mode == COVER_FROM_AUTO) - body = format_subject(&subject_sb, description_sb.buf, " "); - - if (cover_from_description_mode == COVER_FROM_MESSAGE || - (cover_from_description_mode == COVER_FROM_AUTO && - subject_sb.len > COVER_FROM_AUTO_MAX_SUBJECT_LEN)) - body = description_sb.buf; - else - subject = subject_sb.buf; - -do_pp: - pp_title_line(pp, &subject, sb, encoding, need_8bit_cte); - pp_remainder(pp, &body, sb, 0); - - strbuf_release(&description_sb); - strbuf_release(&subject_sb); -} - -static int get_notes_refs(struct string_list_item *item, void *arg) -{ - argv_array_pushf(arg, "--notes=%s", item->string); - return 0; -} - -static void get_notes_args(struct argv_array *arg, struct rev_info *rev) -{ - if (!rev->show_notes) { - argv_array_push(arg, "--no-notes"); - } else if (rev->notes_opt.use_default_notes > 0 || - (rev->notes_opt.use_default_notes == -1 && - !rev->notes_opt.extra_notes_refs.nr)) { - argv_array_push(arg, "--notes"); - } else { - for_each_string_list(&rev->notes_opt.extra_notes_refs, get_notes_refs, arg); - } -} - static void make_cover_letter(struct rev_info *rev, int use_stdout, struct commit *origin, int nr, struct commit **list, @@ -1131,6 +1060,8 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, int quiet) { const char *committer; + const char *body = "*** SUBJECT HERE ***\n\n*** BLURB HERE ***\n"; + const char *msg; struct shortlog log; struct strbuf sb = STRBUF_INIT; int i; @@ -1160,12 +1091,15 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, if (!branch_name) branch_name = find_branch_name(rev); + msg = body; pp.fmt = CMIT_FMT_EMAIL; pp.date_mode.type = DATE_RFC2822; pp.rev = rev; pp.print_email_subject = 1; pp_user_info(&pp, NULL, &sb, committer, encoding); - prepare_cover_text(&pp, branch_name, &sb, encoding, need_8bit_cte); + pp_title_line(&pp, &msg, &sb, encoding, need_8bit_cte); + pp_remainder(&pp, &msg, &sb, 0); + add_branch_description(&sb, branch_name); fprintf(rev->diffopt.file, "%s\n", sb.buf); strbuf_release(&sb); @@ -1196,16 +1130,13 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, * can be added later if deemed desirable. */ struct diff_options opts; - struct argv_array other_arg = ARGV_ARRAY_INIT; diff_setup(&opts); opts.file = rev->diffopt.file; opts.use_color = rev->diffopt.use_color; diff_setup_done(&opts); fprintf_ln(rev->diffopt.file, "%s", rev->rdiff_title); - get_notes_args(&other_arg, rev); show_range_diff(rev->rdiff1, rev->rdiff2, - rev->creation_factor, 1, &opts, &other_arg); - argv_array_clear(&other_arg); + rev->creation_factor, 1, &opts); } } @@ -1317,9 +1248,9 @@ static int output_directory_callback(const struct option *opt, const char *arg, static int thread_callback(const struct option *opt, const char *arg, int unset) { - enum thread_level *thread = (enum thread_level *)opt->value; + int *thread = (int *)opt->value; if (unset) - *thread = THREAD_UNSET; + *thread = 0; else if (!arg || !strcmp(arg, "shallow")) *thread = THREAD_SHALLOW; else if (!strcmp(arg, "deep")) @@ -1366,7 +1297,7 @@ static int header_callback(const struct option *opt, const char *arg, int unset) string_list_clear(&extra_to, 0); string_list_clear(&extra_cc, 0); } else { - add_header(arg); + add_header(arg); } return 0; } @@ -1422,7 +1353,7 @@ static struct commit *get_base_commit(const char *base_commit, base = lookup_commit_reference_by_name(base_commit); if (!base) die(_("unknown commit %s"), base_commit); - } else if ((base_commit && !strcmp(base_commit, "auto"))) { + } else if ((base_commit && !strcmp(base_commit, "auto")) || base_auto) { struct branch *curr_branch = branch_get(NULL); const char *upstream = branch_get_upstream(curr_branch, NULL); if (upstream) { @@ -1610,7 +1541,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) int use_patch_format = 0; int quiet = 0; int reroll_count = -1; - char *cover_from_description_arg = NULL; char *branch_name = NULL; char *base_commit = NULL; struct base_tree_info bases; @@ -1647,9 +1577,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) { OPTION_CALLBACK, 0, "rfc", &rev, NULL, N_("Use [RFC PATCH] instead of [PATCH]"), PARSE_OPT_NOARG | PARSE_OPT_NONEG, rfc_callback }, - OPT_STRING(0, "cover-from-description", &cover_from_description_arg, - N_("cover-from-description-mode"), - N_("generate parts of a cover letter based on a branch's description")), { OPTION_CALLBACK, 0, "subject-prefix", &rev, N_("prefix"), N_("Use [<prefix>] instead of [PATCH]"), PARSE_OPT_NONEG, subject_prefix_callback }, @@ -1713,11 +1640,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) extra_to.strdup_strings = 1; extra_cc.strdup_strings = 1; init_log_defaults(); - init_display_notes(¬es_opt); - git_config(git_format_config, NULL); repo_init_revisions(the_repository, &rev, prefix); - rev.show_notes = show_notes; - memcpy(&rev.notes_opt, ¬es_opt, sizeof(notes_opt)); + git_config(git_format_config, &rev); rev.commit_format = CMIT_FMT_EMAIL; rev.expand_tabs_in_log_default = 0; rev.verbose_header = 1; @@ -1729,9 +1653,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) s_r_opt.def = "HEAD"; s_r_opt.revarg_opt = REVARG_COMMITTISH; - if (base_auto) - base_commit = "auto"; - if (default_attach) { rev.mime_boundary = default_attach; rev.no_inline = 1; @@ -1747,9 +1668,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN | PARSE_OPT_KEEP_DASHDASH); - if (cover_from_description_arg) - cover_from_description_mode = parse_cover_from_description(cover_from_description_arg); - if (0 < reroll_count) { struct strbuf sprefix = STRBUF_INIT; strbuf_addf(&sprefix, "%s v%d", @@ -1836,7 +1754,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) rev.diffopt.flags.binary = 1; if (rev.show_notes) - load_display_notes(&rev.notes_opt); + init_display_notes(&rev.notes_opt); if (!output_directory && !use_stdout) output_directory = config_output_directory; @@ -1847,26 +1765,10 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) setup_pager(); if (output_directory) { - int saved; if (rev.diffopt.use_color != GIT_COLOR_ALWAYS) rev.diffopt.use_color = GIT_COLOR_NEVER; if (use_stdout) die(_("standard output, or directory, which one?")); - /* - * We consider <outdir> as 'outside of gitdir', therefore avoid - * applying adjust_shared_perm in s-c-l-d. - */ - saved = get_shared_repository(); - set_shared_repository(0); - switch (safe_create_leading_directories_const(output_directory)) { - case SCLD_OK: - case SCLD_EXISTS: - break; - default: - die(_("could not create leading directories " - "of '%s'"), output_directory); - } - set_shared_repository(saved); if (mkdir(output_directory, 0777) < 0 && errno != EEXIST) die_errno(_("could not create directory '%s'"), output_directory); @@ -1995,7 +1897,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) } memset(&bases, 0, sizeof(bases)); - if (base_commit) { + if (base_commit || base_auto) { struct commit *base = get_base_commit(base_commit, list, nr); reset_revision_walk(); clear_object_flags(UNINTERESTING); |