merge & sequencer: unify codepaths that write "Conflicts:" hint
Two identical loops in suggest_conflicts() in merge, and do_recursive_merge() in sequencer, can use a single helper function extracted from the latter that prepares the "Conflicts:" hint that is meant to remind the user the paths for which merge conflicts had to be resolved to write a better commit log message. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
35
sequencer.c
35
sequencer.c
@ -287,6 +287,24 @@ static int fast_forward_to(const unsigned char *to, const unsigned char *from,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void append_conflicts_hint(struct strbuf *msgbuf)
|
||||
{
|
||||
int i;
|
||||
|
||||
strbuf_addstr(msgbuf, "\nConflicts:\n");
|
||||
for (i = 0; i < active_nr;) {
|
||||
const struct cache_entry *ce = active_cache[i++];
|
||||
if (ce_stage(ce)) {
|
||||
strbuf_addch(msgbuf, '\t');
|
||||
strbuf_addstr(msgbuf, ce->name);
|
||||
strbuf_addch(msgbuf, '\n');
|
||||
while (i < active_nr && !strcmp(ce->name,
|
||||
active_cache[i]->name))
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int do_recursive_merge(struct commit *base, struct commit *next,
|
||||
const char *base_label, const char *next_label,
|
||||
unsigned char *head, struct strbuf *msgbuf,
|
||||
@ -328,21 +346,8 @@ static int do_recursive_merge(struct commit *base, struct commit *next,
|
||||
if (opts->signoff)
|
||||
append_signoff(msgbuf, 0, 0);
|
||||
|
||||
if (!clean) {
|
||||
int i;
|
||||
strbuf_addstr(msgbuf, "\nConflicts:\n");
|
||||
for (i = 0; i < active_nr;) {
|
||||
const struct cache_entry *ce = active_cache[i++];
|
||||
if (ce_stage(ce)) {
|
||||
strbuf_addch(msgbuf, '\t');
|
||||
strbuf_addstr(msgbuf, ce->name);
|
||||
strbuf_addch(msgbuf, '\n');
|
||||
while (i < active_nr && !strcmp(ce->name,
|
||||
active_cache[i]->name))
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!clean)
|
||||
append_conflicts_hint(msgbuf);
|
||||
|
||||
return !clean;
|
||||
}
|
||||
|
Reference in New Issue
Block a user