Junio C Hamano <gitster@xxxxxxxxx> writes: >> + /* >> + * When sorting by name, we should put "detached" head lines, >> + * which are all the lines in parenthesis, before all others. >> + * This usually is automatic, since "(" is before "refs/" and >> + * "remotes/", but this does not hold for zh_CN, which uses >> + * full-width parenthesis, so make the ordering explicit. >> + */ >> + if (a_detached != (b->kind & FILTER_REFS_DETACHED_HEAD)) >> + cmp = a_detached ? -1 : 1; > > So, comparing a detached and an undetached ones, the detached side > always sorts lower. Good. And ... > >> + else >> + cmp = cmp_fn(va->s, vb->s); > > ... otherwise we compare the string using the given function. > > Sounds sensible. Will queue. Stepping back a bit, why are we even allowing the surrounding () pair to be futzed by the translators? IOW, shouldn't our code more like this from the beginning, with or without Chinese translation? With a bit more work, we may even be able to lose "make sure this matches the one in wt-status.c" comment as losing the leading '(' would take us one step closer to have an identical string here as we have in wt-status.c ref-filter.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ref-filter.c b/ref-filter.c index 8500671bc6..7e4705fcb2 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1459,20 +1459,22 @@ char *get_head_description(void) strbuf_addf(&desc, _("(no branch, bisect started on %s)"), state.branch); else if (state.detached_from) { + strbuf_addch(&desc, '('); if (state.detached_at) /* * TRANSLATORS: make sure this matches "HEAD * detached at " in wt-status.c */ - strbuf_addf(&desc, _("(HEAD detached at %s)"), - state.detached_from); + strbuf_addf(&desc, _("HEAD detached at %s"), + state.detached_from); else /* * TRANSLATORS: make sure this matches "HEAD * detached from " in wt-status.c */ - strbuf_addf(&desc, _("(HEAD detached from %s)"), + strbuf_addf(&desc, _("HEAD detached from %s"), state.detached_from); + strbuf_addch(&desc, ')'); } else strbuf_addstr(&desc, _("(no branch)"));