1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-28 03:26:08 +02:00

merge-recursive: write the commit title in one go

In 66a155b (Enable output buffering in merge-recursive., 2007-01-14), we
changed the code such that it prints the output in one go, to avoid
interfering with the progress output.

Let's make sure that the same holds true when outputting the commit
title: previously, we used several printf() statements to stdout and
assumed that stdout's buffer is large enough to hold the entire
commit title.

Apart from making that speculation unnecessary, we change the code to
add the message to the output buffer before flushing for another reason:
the next commit will introduce a new level of output buffering, where
the caller can request the output not to be flushed, but to be retained
for further processing.

This latter feature will be needed when teaching the sequencer to do
rebase -i's brunt work: it wants to control the output of the
cherry-picks (i.e. recursive merges).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin 2016-08-01 13:44:45 +02:00 committed by Junio C Hamano
parent bc9204d4ef
commit dde75cb056

View File

@ -191,25 +191,26 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)
static void output_commit_title(struct merge_options *o, struct commit *commit)
{
int i;
flush_output(o);
for (i = o->call_depth; i--;)
fputs(" ", stdout);
strbuf_addchars(&o->obuf, ' ', o->call_depth * 2);
if (commit->util)
printf("virtual %s\n", merge_remote_util(commit)->name);
strbuf_addf(&o->obuf, "virtual %s\n",
merge_remote_util(commit)->name);
else {
printf("%s ", find_unique_abbrev(commit->object.oid.hash, DEFAULT_ABBREV));
strbuf_addf(&o->obuf, "%s ",
find_unique_abbrev(commit->object.oid.hash,
DEFAULT_ABBREV));
if (parse_commit(commit) != 0)
printf(_("(bad commit)\n"));
strbuf_addf(&o->obuf, _("(bad commit)\n"));
else {
const char *title;
const char *msg = get_commit_buffer(commit, NULL);
int len = find_commit_subject(msg, &title);
if (len)
printf("%.*s\n", len, title);
strbuf_addf(&o->obuf, "%.*s\n", len, title);
unuse_commit_buffer(commit, msg);
}
}
flush_output(o);
}
static int add_cacheinfo(struct merge_options *o,