Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit'
Stop spending cycles to compute information to be placed on commented lines in "merge --no-edit", which will be discarded anyway. * jc/maint-fmt-merge-msg-no-edit-lose-credit: merge --no-edit: do not credit people involved in the side branch
This commit is contained in:
commit
cf6c52fce8
@ -15,7 +15,8 @@ extern const char git_more_info_string[];
|
|||||||
extern void prune_packed_objects(int);
|
extern void prune_packed_objects(int);
|
||||||
|
|
||||||
struct fmt_merge_msg_opts {
|
struct fmt_merge_msg_opts {
|
||||||
unsigned add_title:1;
|
unsigned add_title:1,
|
||||||
|
credit_people:1;
|
||||||
int shortlog_len;
|
int shortlog_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -232,8 +232,9 @@ static void record_person(int which, struct string_list *people,
|
|||||||
{
|
{
|
||||||
char *name_buf, *name, *name_end;
|
char *name_buf, *name, *name_end;
|
||||||
struct string_list_item *elem;
|
struct string_list_item *elem;
|
||||||
const char *field = (which == 'a') ? "\nauthor " : "\ncommitter ";
|
const char *field;
|
||||||
|
|
||||||
|
field = (which == 'a') ? "\nauthor " : "\ncommitter ";
|
||||||
name = strstr(commit->buffer, field);
|
name = strstr(commit->buffer, field);
|
||||||
if (!name)
|
if (!name)
|
||||||
return;
|
return;
|
||||||
@ -323,7 +324,8 @@ static void add_people_info(struct strbuf *out,
|
|||||||
static void shortlog(const char *name,
|
static void shortlog(const char *name,
|
||||||
struct origin_data *origin_data,
|
struct origin_data *origin_data,
|
||||||
struct commit *head,
|
struct commit *head,
|
||||||
struct rev_info *rev, int limit,
|
struct rev_info *rev,
|
||||||
|
struct fmt_merge_msg_opts *opts,
|
||||||
struct strbuf *out)
|
struct strbuf *out)
|
||||||
{
|
{
|
||||||
int i, count = 0;
|
int i, count = 0;
|
||||||
@ -335,6 +337,7 @@ static void shortlog(const char *name,
|
|||||||
int flags = UNINTERESTING | TREESAME | SEEN | SHOWN | ADDED;
|
int flags = UNINTERESTING | TREESAME | SEEN | SHOWN | ADDED;
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
const unsigned char *sha1 = origin_data->sha1;
|
const unsigned char *sha1 = origin_data->sha1;
|
||||||
|
int limit = opts->shortlog_len;
|
||||||
|
|
||||||
branch = deref_tag(parse_object(sha1), sha1_to_hex(sha1), 40);
|
branch = deref_tag(parse_object(sha1), sha1_to_hex(sha1), 40);
|
||||||
if (!branch || branch->type != OBJ_COMMIT)
|
if (!branch || branch->type != OBJ_COMMIT)
|
||||||
@ -351,13 +354,15 @@ static void shortlog(const char *name,
|
|||||||
|
|
||||||
if (commit->parents && commit->parents->next) {
|
if (commit->parents && commit->parents->next) {
|
||||||
/* do not list a merge but count committer */
|
/* do not list a merge but count committer */
|
||||||
record_person('c', &committers, commit);
|
if (opts->credit_people)
|
||||||
|
record_person('c', &committers, commit);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!count)
|
if (!count && opts->credit_people)
|
||||||
/* the 'tip' committer */
|
/* the 'tip' committer */
|
||||||
record_person('c', &committers, commit);
|
record_person('c', &committers, commit);
|
||||||
record_person('a', &authors, commit);
|
if (opts->credit_people)
|
||||||
|
record_person('a', &authors, commit);
|
||||||
count++;
|
count++;
|
||||||
if (subjects.nr > limit)
|
if (subjects.nr > limit)
|
||||||
continue;
|
continue;
|
||||||
@ -372,7 +377,8 @@ static void shortlog(const char *name,
|
|||||||
string_list_append(&subjects, strbuf_detach(&sb, NULL));
|
string_list_append(&subjects, strbuf_detach(&sb, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
add_people_info(out, &authors, &committers);
|
if (opts->credit_people)
|
||||||
|
add_people_info(out, &authors, &committers);
|
||||||
if (count > limit)
|
if (count > limit)
|
||||||
strbuf_addf(out, "\n* %s: (%d commits)\n", name, count);
|
strbuf_addf(out, "\n* %s: (%d commits)\n", name, count);
|
||||||
else
|
else
|
||||||
@ -635,7 +641,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
|
|||||||
for (i = 0; i < origins.nr; i++)
|
for (i = 0; i < origins.nr; i++)
|
||||||
shortlog(origins.items[i].string,
|
shortlog(origins.items[i].string,
|
||||||
origins.items[i].util,
|
origins.items[i].util,
|
||||||
head, &rev, opts->shortlog_len, out);
|
head, &rev, opts, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
strbuf_complete_line(out);
|
strbuf_complete_line(out);
|
||||||
@ -690,6 +696,7 @@ int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix)
|
|||||||
|
|
||||||
memset(&opts, 0, sizeof(opts));
|
memset(&opts, 0, sizeof(opts));
|
||||||
opts.add_title = !message;
|
opts.add_title = !message;
|
||||||
|
opts.credit_people = 1;
|
||||||
opts.shortlog_len = shortlog_len;
|
opts.shortlog_len = shortlog_len;
|
||||||
|
|
||||||
ret = fmt_merge_msg(&input, &output, &opts);
|
ret = fmt_merge_msg(&input, &output, &opts);
|
||||||
|
@ -1222,6 +1222,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|||||||
memset(&opts, 0, sizeof(opts));
|
memset(&opts, 0, sizeof(opts));
|
||||||
opts.add_title = !have_message;
|
opts.add_title = !have_message;
|
||||||
opts.shortlog_len = shortlog_len;
|
opts.shortlog_len = shortlog_len;
|
||||||
|
opts.credit_people = (0 < option_edit);
|
||||||
|
|
||||||
fmt_merge_msg(&merge_names, &merge_msg, &opts);
|
fmt_merge_msg(&merge_names, &merge_msg, &opts);
|
||||||
if (merge_msg.len)
|
if (merge_msg.len)
|
||||||
|
Loading…
Reference in New Issue
Block a user