mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
branch: support configuring --sort via .gitconfig
Add support for configuring default sort ordering for git branches. Command line option will override this configured value, using the exact same syntax. Signed-off-by: Samuel Maftoul <samuel.maftoul@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
63749b2dea
commit
560ae1c164
|
@ -1039,6 +1039,12 @@ branch.autoSetupRebase::
|
||||||
branch to track another branch.
|
branch to track another branch.
|
||||||
This option defaults to never.
|
This option defaults to never.
|
||||||
|
|
||||||
|
branch.sort::
|
||||||
|
This variable controls the sort ordering of branches when displayed by
|
||||||
|
linkgit:git-branch[1]. Without the "--sort=<value>" option provided, the
|
||||||
|
value of this variable will be used as the default.
|
||||||
|
See linkgit:git-for-each-ref[1] field names for valid values.
|
||||||
|
|
||||||
branch.<name>.remote::
|
branch.<name>.remote::
|
||||||
When on branch <name>, it tells 'git fetch' and 'git push'
|
When on branch <name>, it tells 'git fetch' and 'git push'
|
||||||
which remote to fetch from/push to. The remote to push to
|
which remote to fetch from/push to. The remote to push to
|
||||||
|
|
|
@ -268,10 +268,11 @@ start-point is either a local or remote-tracking branch.
|
||||||
order of the value. You may use the --sort=<key> option
|
order of the value. You may use the --sort=<key> option
|
||||||
multiple times, in which case the last key becomes the primary
|
multiple times, in which case the last key becomes the primary
|
||||||
key. The keys supported are the same as those in `git
|
key. The keys supported are the same as those in `git
|
||||||
for-each-ref`. Sort order defaults to sorting based on the
|
for-each-ref`. Sort order defaults to the value configured for the
|
||||||
|
`branch.sort` variable if exists, or to sorting based on the
|
||||||
full refname (including `refs/...` prefix). This lists
|
full refname (including `refs/...` prefix). This lists
|
||||||
detached HEAD (if present) first, then local branches and
|
detached HEAD (if present) first, then local branches and
|
||||||
finally remote-tracking branches.
|
finally remote-tracking branches. See linkgit:git-config[1].
|
||||||
|
|
||||||
|
|
||||||
--points-at <object>::
|
--points-at <object>::
|
||||||
|
|
|
@ -74,6 +74,14 @@ define_list_config_array(color_branch_slots);
|
||||||
static int git_branch_config(const char *var, const char *value, void *cb)
|
static int git_branch_config(const char *var, const char *value, void *cb)
|
||||||
{
|
{
|
||||||
const char *slot_name;
|
const char *slot_name;
|
||||||
|
struct ref_sorting **sorting_tail = (struct ref_sorting **)cb;
|
||||||
|
|
||||||
|
if (!strcmp(var, "branch.sort")) {
|
||||||
|
if (!value)
|
||||||
|
return config_error_nonbool(var);
|
||||||
|
parse_ref_sorting(sorting_tail, value);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (starts_with(var, "column."))
|
if (starts_with(var, "column."))
|
||||||
return git_column_config(var, value, "branch", &colopts);
|
return git_column_config(var, value, "branch", &colopts);
|
||||||
|
@ -653,7 +661,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||||
usage_with_options(builtin_branch_usage, options);
|
usage_with_options(builtin_branch_usage, options);
|
||||||
|
|
||||||
git_config(git_branch_config, NULL);
|
git_config(git_branch_config, sorting_tail);
|
||||||
|
|
||||||
track = git_branch_track;
|
track = git_branch_track;
|
||||||
|
|
||||||
|
|
|
@ -1305,4 +1305,50 @@ test_expect_success 'tracking with unexpected .fetch refspec' '
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'configured committerdate sort' '
|
||||||
|
git init sort &&
|
||||||
|
(
|
||||||
|
cd sort &&
|
||||||
|
git config branch.sort committerdate &&
|
||||||
|
test_commit initial &&
|
||||||
|
git checkout -b a &&
|
||||||
|
test_commit a &&
|
||||||
|
git checkout -b c &&
|
||||||
|
test_commit c &&
|
||||||
|
git checkout -b b &&
|
||||||
|
test_commit b &&
|
||||||
|
git branch >actual &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
master
|
||||||
|
a
|
||||||
|
c
|
||||||
|
* b
|
||||||
|
EOF
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'option override configured sort' '
|
||||||
|
(
|
||||||
|
cd sort &&
|
||||||
|
git config branch.sort committerdate &&
|
||||||
|
git branch --sort=refname >actual &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
a
|
||||||
|
* b
|
||||||
|
c
|
||||||
|
master
|
||||||
|
EOF
|
||||||
|
test_cmp expect actual
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'invalid sort parameter in configuration' '
|
||||||
|
(
|
||||||
|
cd sort &&
|
||||||
|
git config branch.sort "v:notvalid" &&
|
||||||
|
test_must_fail git branch
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue