fetch: refactor ref update status formatting code
This makes it easier to change the formatting later. And it makes sure translators cannot mess up format specifiers and break Git. There are a couple call sites where the length of the second column is TRANSPORT_SUMMARY_WIDTH instead of calculated by TRANSPORT_SUMMARY(), which is enforced now. The result should be the same because these call sites do not contain characters outside ASCII range. The two strbuf_addf() calls instead of one is mostly to reduce diff-noise in a future patch where "ref -> ref" is reformatted differently. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a52397cce6
commit
d0b39a03cd
@ -451,6 +451,16 @@ fail:
|
||||
|
||||
#define REFCOL_WIDTH 10
|
||||
|
||||
static void format_display(struct strbuf *display, char code,
|
||||
const char *summary, const char *error,
|
||||
const char *remote, const char *local)
|
||||
{
|
||||
strbuf_addf(display, "%c %-*s ", code, TRANSPORT_SUMMARY(summary));
|
||||
strbuf_addf(display, "%-*s -> %s", REFCOL_WIDTH, remote, local);
|
||||
if (error)
|
||||
strbuf_addf(display, " (%s)", error);
|
||||
}
|
||||
|
||||
static int update_local_ref(struct ref *ref,
|
||||
const char *remote,
|
||||
const struct ref *remote_ref,
|
||||
@ -467,9 +477,8 @@ static int update_local_ref(struct ref *ref,
|
||||
|
||||
if (!oidcmp(&ref->old_oid, &ref->new_oid)) {
|
||||
if (verbosity > 0)
|
||||
strbuf_addf(display, "= %-*s %-*s -> %s",
|
||||
TRANSPORT_SUMMARY(_("[up to date]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref);
|
||||
format_display(display, '=', _("[up to date]"), NULL,
|
||||
remote, pretty_ref);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -481,10 +490,9 @@ static int update_local_ref(struct ref *ref,
|
||||
* If this is the head, and it's not okay to update
|
||||
* the head, and the old value of the head isn't empty...
|
||||
*/
|
||||
strbuf_addf(display,
|
||||
_("! %-*s %-*s -> %s (can't fetch in current branch)"),
|
||||
TRANSPORT_SUMMARY(_("[rejected]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref);
|
||||
format_display(display, '!', _("[rejected]"),
|
||||
_("can't fetch in current branch"),
|
||||
remote, pretty_ref);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -492,11 +500,9 @@ static int update_local_ref(struct ref *ref,
|
||||
starts_with(ref->name, "refs/tags/")) {
|
||||
int r;
|
||||
r = s_update_ref("updating tag", ref, 0);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s%s",
|
||||
r ? '!' : '-',
|
||||
TRANSPORT_SUMMARY(_("[tag update]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _(" (unable to update local ref)") : "");
|
||||
format_display(display, r ? '!' : '-', _("[tag update]"),
|
||||
r ? _("unable to update local ref") : NULL,
|
||||
remote, pretty_ref);
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -527,11 +533,9 @@ static int update_local_ref(struct ref *ref,
|
||||
(recurse_submodules != RECURSE_SUBMODULES_ON))
|
||||
check_for_new_submodule_commits(ref->new_oid.hash);
|
||||
r = s_update_ref(msg, ref, 0);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s%s",
|
||||
r ? '!' : '*',
|
||||
TRANSPORT_SUMMARY(what),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _(" (unable to update local ref)") : "");
|
||||
format_display(display, r ? '!' : '*', what,
|
||||
r ? _("unable to update local ref") : NULL,
|
||||
remote, pretty_ref);
|
||||
return r;
|
||||
}
|
||||
|
||||
@ -545,11 +549,9 @@ static int update_local_ref(struct ref *ref,
|
||||
(recurse_submodules != RECURSE_SUBMODULES_ON))
|
||||
check_for_new_submodule_commits(ref->new_oid.hash);
|
||||
r = s_update_ref("fast-forward", ref, 1);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s%s",
|
||||
r ? '!' : ' ',
|
||||
TRANSPORT_SUMMARY_WIDTH, quickref.buf,
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _(" (unable to update local ref)") : "");
|
||||
format_display(display, r ? '!' : ' ', quickref.buf,
|
||||
r ? _("unable to update local ref") : NULL,
|
||||
remote, pretty_ref);
|
||||
strbuf_release(&quickref);
|
||||
return r;
|
||||
} else if (force || ref->force) {
|
||||
@ -562,18 +564,14 @@ static int update_local_ref(struct ref *ref,
|
||||
(recurse_submodules != RECURSE_SUBMODULES_ON))
|
||||
check_for_new_submodule_commits(ref->new_oid.hash);
|
||||
r = s_update_ref("forced-update", ref, 1);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s (%s)",
|
||||
r ? '!' : '+',
|
||||
TRANSPORT_SUMMARY_WIDTH, quickref.buf,
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _("unable to update local ref") : _("forced update"));
|
||||
format_display(display, r ? '!' : '+', quickref.buf,
|
||||
r ? _("unable to update local ref") : _("forced update"),
|
||||
remote, pretty_ref);
|
||||
strbuf_release(&quickref);
|
||||
return r;
|
||||
} else {
|
||||
strbuf_addf(display, "! %-*s %-*s -> %s %s",
|
||||
TRANSPORT_SUMMARY(_("[rejected]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
_("(non-fast-forward)"));
|
||||
format_display(display, '!', _("[rejected]"), _("non-fast-forward"),
|
||||
remote, pretty_ref);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@ -714,11 +712,10 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
|
||||
rc |= update_local_ref(ref, what, rm, ¬e);
|
||||
free(ref);
|
||||
} else
|
||||
strbuf_addf(¬e, "* %-*s %-*s -> FETCH_HEAD",
|
||||
TRANSPORT_SUMMARY_WIDTH,
|
||||
*kind ? kind : "branch",
|
||||
REFCOL_WIDTH,
|
||||
*what ? what : "HEAD");
|
||||
format_display(¬e, '*',
|
||||
*kind ? kind : "branch", NULL,
|
||||
*what ? what : "HEAD",
|
||||
"FETCH_HEAD");
|
||||
if (note.len) {
|
||||
if (verbosity >= 0 && !shown_url) {
|
||||
fprintf(stderr, _("From %.*s\n"),
|
||||
@ -812,13 +809,15 @@ static int prune_refs(struct refspec *refs, int ref_count, struct ref *ref_map,
|
||||
|
||||
if (verbosity >= 0) {
|
||||
for (ref = stale_refs; ref; ref = ref->next) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
if (!shown_url) {
|
||||
fprintf(stderr, _("From %.*s\n"), url_len, url);
|
||||
shown_url = 1;
|
||||
}
|
||||
fprintf(stderr, " x %-*s %-*s -> %s\n",
|
||||
TRANSPORT_SUMMARY(_("[deleted]")),
|
||||
REFCOL_WIDTH, _("(none)"), prettify_refname(ref->name));
|
||||
format_display(&sb, 'x', _("[deleted]"), NULL,
|
||||
_("(none)"), prettify_refname(ref->name));
|
||||
fprintf(stderr, " %s\n",sb.buf);
|
||||
strbuf_release(&sb);
|
||||
warn_dangling_symref(stderr, dangling_msg, ref->name);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user