From: Junio C Hamano Date: Mon, 19 Dec 2016 22:45:31 +0000 (-0800) Subject: Merge branch 'nd/for-each-ref-ignore-case' X-Git-Tag: v2.12.0-rc0~139 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/73e494f86239b7edcf44f4c185c997b05c0e763b?hp=-c Merge branch 'nd/for-each-ref-ignore-case' "git branch --list" and friends learned "--ignore-case" option to optionally sort branches and tags case insensitively. * nd/for-each-ref-ignore-case: tag, branch, for-each-ref: add --ignore-case for sorting and filtering --- 73e494f86239b7edcf44f4c185c997b05c0e763b diff --combined builtin/branch.c index 475707528a,36e0a21af5..9d30f55b0b --- a/builtin/branch.c +++ b/builtin/branch.c @@@ -512,15 -512,6 +512,6 @@@ static void print_ref_list(struct ref_f if (filter->verbose) maxwidth = calc_maxwidth(&array, strlen(remote_prefix)); - /* - * If no sorting parameter is given then we default to sorting - * by 'refname'. This would give us an alphabetically sorted - * array with the 'HEAD' ref at the beginning followed by - * local branches 'refs/heads/...' and finally remote-tacking - * branches 'refs/remotes/...'. - */ - if (!sorting) - sorting = ref_default_sorting(); ref_array_sort(sorting, &array); for (i = 0; i < array.nr; i++) @@@ -531,7 -522,7 +522,7 @@@ static void reject_rebase_or_bisect_branch(const char *target) { - struct worktree **worktrees = get_worktrees(); + struct worktree **worktrees = get_worktrees(0); int i; for (i = 0; worktrees[i]; i++) { @@@ -645,6 -636,7 +636,7 @@@ int cmd_branch(int argc, const char **a const char *new_upstream = NULL; enum branch_track track; struct ref_filter filter; + int icase = 0; static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; struct option options[] = { @@@ -686,6 -678,7 +678,7 @@@ OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"), N_("print only branches of the object"), 0, parse_opt_object_name }, + OPT_BOOL('i', "ignore-case", &icase, N_("sorting and filtering are case insensitive")), OPT_END(), }; @@@ -723,6 -716,8 +716,8 @@@ if (filter.abbrev == -1) filter.abbrev = DEFAULT_ABBREV; + filter.ignore_case = icase; + finalize_colopts(&colopts, -1); if (filter.verbose) { if (explicitly_enable_column(colopts)) @@@ -744,6 -739,16 +739,16 @@@ if ((filter.kind & FILTER_REFS_BRANCHES) && filter.detached) filter.kind |= FILTER_REFS_DETACHED_HEAD; filter.name_patterns = argv; + /* + * If no sorting parameter is given then we default to sorting + * by 'refname'. This would give us an alphabetically sorted + * array with the 'HEAD' ref at the beginning followed by + * local branches 'refs/heads/...' and finally remote-tacking + * branches 'refs/remotes/...'. + */ + if (!sorting) + sorting = ref_default_sorting(); + sorting->ignore_case = icase; print_ref_list(&filter, sorting); print_columns(&output, colopts, NULL); string_list_clear(&output, 0);