Merge branch 'nd/fetch-status-alignment'
The status report from "git fetch", when messages like 'up-to-date' are translated, did not align the branch names well. * nd/fetch-status-alignment: fetch: align per-ref summary report in UTF-8 locales
This commit is contained in:
commit
d71abd99f8
@ -256,9 +256,8 @@ static int update_local_ref(struct ref *ref,
|
||||
if (!hashcmp(ref->old_sha1, ref->new_sha1)) {
|
||||
if (verbosity > 0)
|
||||
strbuf_addf(display, "= %-*s %-*s -> %s",
|
||||
TRANSPORT_SUMMARY_WIDTH,
|
||||
_("[up to date]"), REFCOL_WIDTH,
|
||||
remote, pretty_ref);
|
||||
TRANSPORT_SUMMARY(_("[up to date]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -272,7 +271,7 @@ static int update_local_ref(struct ref *ref,
|
||||
*/
|
||||
strbuf_addf(display,
|
||||
_("! %-*s %-*s -> %s (can't fetch in current branch)"),
|
||||
TRANSPORT_SUMMARY_WIDTH, _("[rejected]"),
|
||||
TRANSPORT_SUMMARY(_("[rejected]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref);
|
||||
return 1;
|
||||
}
|
||||
@ -283,7 +282,7 @@ static int update_local_ref(struct ref *ref,
|
||||
r = s_update_ref("updating tag", ref, 0);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s%s",
|
||||
r ? '!' : '-',
|
||||
TRANSPORT_SUMMARY_WIDTH, _("[tag update]"),
|
||||
TRANSPORT_SUMMARY(_("[tag update]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _(" (unable to update local ref)") : "");
|
||||
return r;
|
||||
@ -318,7 +317,7 @@ static int update_local_ref(struct ref *ref,
|
||||
r = s_update_ref(msg, ref, 0);
|
||||
strbuf_addf(display, "%c %-*s %-*s -> %s%s",
|
||||
r ? '!' : '*',
|
||||
TRANSPORT_SUMMARY_WIDTH, what,
|
||||
TRANSPORT_SUMMARY(what),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
r ? _(" (unable to update local ref)") : "");
|
||||
return r;
|
||||
@ -358,7 +357,7 @@ static int update_local_ref(struct ref *ref,
|
||||
return r;
|
||||
} else {
|
||||
strbuf_addf(display, "! %-*s %-*s -> %s %s",
|
||||
TRANSPORT_SUMMARY_WIDTH, _("[rejected]"),
|
||||
TRANSPORT_SUMMARY(_("[rejected]")),
|
||||
REFCOL_WIDTH, remote, pretty_ref,
|
||||
_("(non-fast-forward)"));
|
||||
return 1;
|
||||
@ -555,7 +554,7 @@ static int prune_refs(struct refspec *refs, int ref_count, struct ref *ref_map)
|
||||
result |= delete_ref(ref->name, NULL, 0);
|
||||
if (verbosity >= 0) {
|
||||
fprintf(stderr, " x %-*s %-*s -> %s\n",
|
||||
TRANSPORT_SUMMARY_WIDTH, _("[deleted]"),
|
||||
TRANSPORT_SUMMARY(_("[deleted]")),
|
||||
REFCOL_WIDTH, _("(none)"), prettify_refname(ref->name));
|
||||
warn_dangling_symref(stderr, dangling_msg, ref->name);
|
||||
}
|
||||
|
15
gettext.c
15
gettext.c
@ -4,6 +4,8 @@
|
||||
|
||||
#include "git-compat-util.h"
|
||||
#include "gettext.h"
|
||||
#include "strbuf.h"
|
||||
#include "utf8.h"
|
||||
|
||||
#ifndef NO_GETTEXT
|
||||
# include <locale.h>
|
||||
@ -27,10 +29,9 @@ int use_gettext_poison(void)
|
||||
#endif
|
||||
|
||||
#ifndef NO_GETTEXT
|
||||
static const char *charset;
|
||||
static void init_gettext_charset(const char *domain)
|
||||
{
|
||||
const char *charset;
|
||||
|
||||
/*
|
||||
This trick arranges for messages to be emitted in the user's
|
||||
requested encoding, but avoids setting LC_CTYPE from the
|
||||
@ -128,4 +129,14 @@ void git_setup_gettext(void)
|
||||
init_gettext_charset("git");
|
||||
textdomain("git");
|
||||
}
|
||||
|
||||
/* return the number of columns of string 's' in current locale */
|
||||
int gettext_width(const char *s)
|
||||
{
|
||||
static int is_utf8 = -1;
|
||||
if (is_utf8 == -1)
|
||||
is_utf8 = !strcmp(charset, "UTF-8");
|
||||
|
||||
return is_utf8 ? utf8_strwidth(s) : strlen(s);
|
||||
}
|
||||
#endif
|
||||
|
@ -30,10 +30,15 @@
|
||||
|
||||
#ifndef NO_GETTEXT
|
||||
extern void git_setup_gettext(void);
|
||||
extern int gettext_width(const char *s);
|
||||
#else
|
||||
static inline void git_setup_gettext(void)
|
||||
{
|
||||
}
|
||||
static inline int gettext_width(const char *s)
|
||||
{
|
||||
return strlen(s);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GETTEXT_POISON
|
||||
|
@ -106,6 +106,7 @@ struct transport {
|
||||
#define TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND 256
|
||||
|
||||
#define TRANSPORT_SUMMARY_WIDTH (2 * DEFAULT_ABBREV + 3)
|
||||
#define TRANSPORT_SUMMARY(x) (int)(TRANSPORT_SUMMARY_WIDTH + strlen(x) - gettext_width(x)), (x)
|
||||
|
||||
/* Returns a transport suitable for the url */
|
||||
struct transport *transport_get(struct remote *, const char *);
|
||||
|
Loading…
Reference in New Issue
Block a user