samuel.maftoul@xxxxxxxxx writes: > From: Samuel Maftoul <samuel.maftoul@xxxxxxxxx> > > Add support for configuring default sort ordering for git branches. Command > line option will override this configured value, using the exact same > syntax. Using the exact same syntax as ...? > Signed-off-by: Samuel Maftoul <samuel.maftoul@xxxxxxxxx> > --- > Documentation/config.txt | 6 +++++ > Documentation/git-branch.txt | 5 ++-- > builtin/branch.c | 10 +++++++- > t/t3200-branch.sh | 46 ++++++++++++++++++++++++++++++++++++ > 4 files changed, 64 insertions(+), 3 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index fd8d27e76..7f7a50123 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -1039,6 +1039,12 @@ branch.autoSetupRebase:: > branch to track another branch. > 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. OK, the answer to the above question is "same syntax as used for the value of the `branch.sort` configuration variable". > diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt > index 1072ca0eb..9767b2b48 100644 > --- a/Documentation/git-branch.txt > +++ b/Documentation/git-branch.txt > @@ -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 > multiple times, in which case the last key becomes the primary > 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 > detached HEAD (if present) first, then local branches and > - finally remote-tracking branches. > + finally remote-tracking branches. See linkgit:git-config[1]. OK. > diff --git a/builtin/branch.c b/builtin/branch.c > index 4fc55c350..bbd006aab 100644 > --- a/builtin/branch.c > +++ b/builtin/branch.c > @@ -74,6 +74,14 @@ define_list_config_array(color_branch_slots); > static int git_branch_config(const char *var, const char *value, void *cb) > { > 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; > + } Hmph. It is unfortunate that "don't feed me NULL" check is not in parse_ref_sorting() but is in parse_opt_ref_sorting(). But that is a separate low-hanging fruit. The code we see here is correct. Will queue. Thanks.