revert(3p/git): Revert merge of git upstream at v2.26.2
This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
This commit is contained in:
parent
6f8fbf4aa4
commit
93ba78d6f4
1006 changed files with 60537 additions and 148724 deletions
214
third_party/git/builtin/log.c
vendored
214
third_party/git/builtin/log.c
vendored
|
|
@ -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 {
|
||||
#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 int config_cover_letter;
|
||||
static const char *config_output_directory;
|
||||
|
||||
enum {
|
||||
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;
|
||||
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 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);
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue