Commit 6eac70fa authored by karthik nayak's avatar karthik nayak Committed by Junio C Hamano

ref-filter: allow porcelain to translate messages in the output

Introduce setup_ref_filter_porcelain_msg() so that the messages used in
the atom %(upstream:track) can be translated if needed. By default, keep
the messages untranslated, which is the right behavior for plumbing
commands. This is needed as we port branch.c to use ref-filter's
printing API's.
Written-by: Matthieu Moy's avatarMatthieu Moy <>
Mentored-by: Christian Couder's avatarChristian Couder <>
Mentored-by: Matthieu Moy's avatarMatthieu Moy <>
Signed-off-by: karthik nayak's avatarKarthik Nayak <>
Signed-off-by: default avatarJunio C Hamano <>
parent 1a34728e
......@@ -16,6 +16,27 @@
#include "trailer.h"
#include "wt-status.h"
static struct ref_msg {
const char *gone;
const char *ahead;
const char *behind;
const char *ahead_behind;
} msgs = {
/* Untranslated plumbing messages: */
"ahead %d",
"behind %d",
"ahead %d, behind %d"
void setup_ref_filter_porcelain_msg(void)
msgs.gone = _("gone");
msgs.ahead = _("ahead %d");
msgs.behind = _("behind %d");
msgs.ahead_behind = _("ahead %d, behind %d");
typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type;
......@@ -1181,15 +1202,15 @@ static void fill_remote_ref_details(struct used_atom *atom, const char *refname,
else if (atom->u.remote_ref.option == RR_TRACK) {
if (stat_tracking_info(branch, &num_ours,
&num_theirs, NULL)) {
*s = xstrdup("gone");
*s = xstrdup(msgs.gone);
} else if (!num_ours && !num_theirs)
*s = "";
else if (!num_ours)
*s = xstrfmt("behind %d", num_theirs);
*s = xstrfmt(msgs.behind, num_theirs);
else if (!num_theirs)
*s = xstrfmt("ahead %d", num_ours);
*s = xstrfmt(msgs.ahead, num_ours);
*s = xstrfmt("ahead %d, behind %d",
*s = xstrfmt(msgs.ahead_behind,
num_ours, num_theirs);
if (!atom->u.remote_ref.nobracket && *s[0]) {
const char *to_free = *s;
......@@ -113,5 +113,7 @@ struct ref_sorting *ref_default_sorting(void);
int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset);
/* Get the current HEAD's description */
char *get_head_description(void);
/* Set up translated strings in the output. */
void setup_ref_filter_porcelain_msg(void);
#endif /* REF_FILTER_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment