merge-ort: split out a separate display_update_messages() function
This patch includes no new code; it simply moves a bunch of lines into a new function. As such, there are no functional changes. This is just a preparatory step to allow the printed messages to be handled differently by other callers, such as in `git merge-tree --write-tree`. (Patch best viewed with --color-moved --color-moved-ws=allow-indentation-change to see that it is a simple code movement.) Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1f0c3a29da
commit
a34edae68a
78
merge-ort.c
78
merge-ort.c
@ -4257,6 +4257,45 @@ static int record_conflicted_index_entries(struct merge_options *opt)
|
|||||||
return errs;
|
return errs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void merge_display_update_messages(struct merge_options *opt,
|
||||||
|
struct merge_result *result)
|
||||||
|
{
|
||||||
|
struct merge_options_internal *opti = result->priv;
|
||||||
|
struct hashmap_iter iter;
|
||||||
|
struct strmap_entry *e;
|
||||||
|
struct string_list olist = STRING_LIST_INIT_NODUP;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (opt->record_conflict_msgs_as_headers)
|
||||||
|
BUG("Either display conflict messages or record them as headers, not both");
|
||||||
|
|
||||||
|
trace2_region_enter("merge", "display messages", opt->repo);
|
||||||
|
|
||||||
|
/* Hack to pre-allocate olist to the desired size */
|
||||||
|
ALLOC_GROW(olist.items, strmap_get_size(&opti->output),
|
||||||
|
olist.alloc);
|
||||||
|
|
||||||
|
/* Put every entry from output into olist, then sort */
|
||||||
|
strmap_for_each_entry(&opti->output, &iter, e) {
|
||||||
|
string_list_append(&olist, e->key)->util = e->value;
|
||||||
|
}
|
||||||
|
string_list_sort(&olist);
|
||||||
|
|
||||||
|
/* Iterate over the items, printing them */
|
||||||
|
for (i = 0; i < olist.nr; ++i) {
|
||||||
|
struct strbuf *sb = olist.items[i].util;
|
||||||
|
|
||||||
|
printf("%s", sb->buf);
|
||||||
|
}
|
||||||
|
string_list_clear(&olist, 0);
|
||||||
|
|
||||||
|
/* Also include needed rename limit adjustment now */
|
||||||
|
diff_warn_rename_limit("merge.renamelimit",
|
||||||
|
opti->renames.needed_limit, 0);
|
||||||
|
|
||||||
|
trace2_region_leave("merge", "display messages", opt->repo);
|
||||||
|
}
|
||||||
|
|
||||||
void merge_switch_to_result(struct merge_options *opt,
|
void merge_switch_to_result(struct merge_options *opt,
|
||||||
struct tree *head,
|
struct tree *head,
|
||||||
struct merge_result *result,
|
struct merge_result *result,
|
||||||
@ -4294,43 +4333,8 @@ void merge_switch_to_result(struct merge_options *opt,
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
trace2_region_leave("merge", "write_auto_merge", opt->repo);
|
trace2_region_leave("merge", "write_auto_merge", opt->repo);
|
||||||
}
|
}
|
||||||
|
if (display_update_msgs)
|
||||||
if (display_update_msgs) {
|
merge_display_update_messages(opt, result);
|
||||||
struct merge_options_internal *opti = result->priv;
|
|
||||||
struct hashmap_iter iter;
|
|
||||||
struct strmap_entry *e;
|
|
||||||
struct string_list olist = STRING_LIST_INIT_NODUP;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (opt->record_conflict_msgs_as_headers)
|
|
||||||
BUG("Either display conflict messages or record them as headers, not both");
|
|
||||||
|
|
||||||
trace2_region_enter("merge", "display messages", opt->repo);
|
|
||||||
|
|
||||||
/* Hack to pre-allocate olist to the desired size */
|
|
||||||
ALLOC_GROW(olist.items, strmap_get_size(&opti->output),
|
|
||||||
olist.alloc);
|
|
||||||
|
|
||||||
/* Put every entry from output into olist, then sort */
|
|
||||||
strmap_for_each_entry(&opti->output, &iter, e) {
|
|
||||||
string_list_append(&olist, e->key)->util = e->value;
|
|
||||||
}
|
|
||||||
string_list_sort(&olist);
|
|
||||||
|
|
||||||
/* Iterate over the items, printing them */
|
|
||||||
for (i = 0; i < olist.nr; ++i) {
|
|
||||||
struct strbuf *sb = olist.items[i].util;
|
|
||||||
|
|
||||||
printf("%s", sb->buf);
|
|
||||||
}
|
|
||||||
string_list_clear(&olist, 0);
|
|
||||||
|
|
||||||
/* Also include needed rename limit adjustment now */
|
|
||||||
diff_warn_rename_limit("merge.renamelimit",
|
|
||||||
opti->renames.needed_limit, 0);
|
|
||||||
|
|
||||||
trace2_region_leave("merge", "display messages", opt->repo);
|
|
||||||
}
|
|
||||||
|
|
||||||
merge_finalize(opt, result);
|
merge_finalize(opt, result);
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,14 @@ void merge_switch_to_result(struct merge_options *opt,
|
|||||||
int update_worktree_and_index,
|
int update_worktree_and_index,
|
||||||
int display_update_msgs);
|
int display_update_msgs);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display messages about conflicts and which files were 3-way merged.
|
||||||
|
* Automatically called by merge_switch_to_result() with stream == stdout,
|
||||||
|
* so only call this when bypassing merge_switch_to_result().
|
||||||
|
*/
|
||||||
|
void merge_display_update_messages(struct merge_options *opt,
|
||||||
|
struct merge_result *result);
|
||||||
|
|
||||||
/* Do needed cleanup when not calling merge_switch_to_result() */
|
/* Do needed cleanup when not calling merge_switch_to_result() */
|
||||||
void merge_finalize(struct merge_options *opt,
|
void merge_finalize(struct merge_options *opt,
|
||||||
struct merge_result *result);
|
struct merge_result *result);
|
||||||
|
Loading…
Reference in New Issue
Block a user