@@ -740,6 +740,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
if (!sorting)
sorting = ref_default_sorting();
ref_sorting_icase_all(sorting, icase);
+ ref_sorting_detached_head_first_all(sorting, 1);
print_ref_list(&filter, sorting, &format);
print_columns(&output, colopts, NULL);
string_list_clear(&output, 0);
@@ -1536,36 +1536,27 @@ char *get_head_description(void)
struct wt_status_state state;
memset(&state, 0, sizeof(state));
wt_status_get_state(the_repository, &state, 1);
-
- /*
- * The ( character must be hard-coded and not part of a localizable
- * string, since the description is used as a sort key and compared
- * with ref names.
- */
- strbuf_addch(&desc, '(');
if (state.rebase_in_progress ||
state.rebase_interactive_in_progress) {
if (state.branch)
- strbuf_addf(&desc, _("no branch, rebasing %s"),
+ strbuf_addf(&desc, _("(no branch, rebasing %s)"),
state.branch);
else
- strbuf_addf(&desc, _("no branch, rebasing detached HEAD %s"),
+ strbuf_addf(&desc, _("(no branch, rebasing detached HEAD %s)"),
state.detached_from);
} else if (state.bisect_in_progress)
- strbuf_addf(&desc, _("no branch, bisect started on %s"),
+ strbuf_addf(&desc, _("(no branch, bisect started on %s)"),
state.branch);
else if (state.detached_from) {
if (state.detached_at)
- strbuf_addstr(&desc, HEAD_DETACHED_AT);
+ strbuf_addf(&desc, _("(HEAD detached at %s)"),
+ state.detached_from);
else
- strbuf_addstr(&desc, HEAD_DETACHED_FROM);
- strbuf_addstr(&desc, state.detached_from);
- }
- else
- strbuf_addstr(&desc, _("no branch"));
- strbuf_addch(&desc, ')');
+ strbuf_addf(&desc, _("(HEAD detached from %s)"),
+ state.detached_from);
+ } else
+ strbuf_addstr(&desc, _("(no branch)"));
- wt_status_state_free_buffers(&state);
return strbuf_detach(&desc, NULL);
}
@@ -223,8 +223,8 @@ test_expect_success 'git branch `--sort=[-]objectsize` option' '
cat >expect <<-\EOF &&
branch-one
main
- * (HEAD detached from fromtag)
branch-two
+ * (HEAD detached from fromtag)
EOF
git branch --sort=-objectsize >actual &&
test_i18ncmp expect actual
@@ -241,10 +241,10 @@ test_expect_success 'git branch `--sort=[-]type` option' '
test_i18ncmp expect actual &&
cat >expect <<-\EOF &&
- * (HEAD detached from fromtag)
branch-one
branch-two
main
+ * (HEAD detached from fromtag)
EOF
git branch --sort=-type >actual &&
test_i18ncmp expect actual
@@ -1742,9 +1742,9 @@ static void wt_longstatus_print(struct wt_status *s)
} else if (s->state.detached_from) {
branch_name = s->state.detached_from;
if (s->state.detached_at)
- on_what = HEAD_DETACHED_AT;
+ on_what = _("HEAD detached at ");
else
- on_what = HEAD_DETACHED_FROM;
+ on_what = _("HEAD detached from ");
} else {
branch_name = "";
on_what = _("Not currently on any branch.");
@@ -77,8 +77,6 @@ enum wt_status_format {
STATUS_FORMAT_UNSPECIFIED
};
-#define HEAD_DETACHED_AT _("HEAD detached at ")
-#define HEAD_DETACHED_FROM _("HEAD detached from ")
#define SPARSE_CHECKOUT_DISABLED -1
struct wt_status_state {
Use the new ref_sorting_detached_head_first_all() sorting option in ref-filter.c to revert and amend 28438e84e04 (ref-filter: sort detached HEAD lines firstly, 2019-06-18). In Chinese the fullwidth versions of punctuation like "()" are typically written as (U+FF08 fullwidth left parenthesis), (U+FF09 fullwidth right parenthesis) instead. This form is used in both po/zh_{CN,TW}.po in most cases where "()" is translated in a string. In 28438e84e04 the ability to translate this as part of the "git branch -l" output was removed because we'd like the detached line to appear first at the start of "git branch -l", e.g.: $ git branch -l * (HEAD detached at <hash>) master Let's instead use the new ref_sorting_detached_head_first_all() in branch.c to say that we'd like these sorted before other entries. As seen in the amended tests this made reverse sorting a bit more consistent. Before this we'd sometimes sort this message in the middle, now it's consistently at the beginning or end. Having it at the end doesn't make much sense either, but at least it behaves consistently now. A follow-up commit will make this behavior even better. I'm removing the "TRANSLATORS" comments that were in the old code while I'm at it. Those were added in d4919bb288e (ref-filter: move get_head_description() from branch.c, 2017-01-10). I think it's obvious from context, string and translation memory in typical translation tools that these are the same or similar string. 1. https://en.wikipedia.org/wiki/Chinese_punctuation#Marks_similar_to_European_punctuation Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- builtin/branch.c | 1 + ref-filter.c | 27 +++++++++------------------ t/t3203-branch-output.sh | 4 ++-- wt-status.c | 4 ++-- wt-status.h | 2 -- 5 files changed, 14 insertions(+), 24 deletions(-)