Hi Thomas, On Sat, 30 Oct 2021, Thomas Weißschuh wrote: > Introduce command `default-branch` which allows to retrieve the branch > that will be used by git-init. > > Currently this command is equivalent to > git config init.defaultbranch || 'master' > > This however will break if at one point the default branch is changed as > indicated by `default_branch_name_advice` in `refs.c`. I am very sympathetic to the motivation for your patch, I have had to resort to an ugly hack in Git for Windows' script that generates the installer: the script creates a throw-away repository _just_ to determine said branch name. > > By providing this command ahead of time users of git can make their > code forward-compatible. It is probably overkill to introduce a whole new command for just this single purpose. But we do have prior art in Git how to display similar information: `git var -l` will list e.g. `GIT_PAGER`, even if it is not configured explicitly. Something like this should be a good start along those lines: -- snip -- diff --git a/builtin/var.c b/builtin/var.c index 6c6f46b4aea..937c63939d9 100644 --- a/builtin/var.c +++ b/builtin/var.c @@ -5,6 +5,7 @@ */ #include "builtin.h" #include "config.h" +#include "refs.h" static const char var_usage[] = "git var (-l | <variable>)"; @@ -27,6 +28,16 @@ static const char *pager(int flag) return pgm; } +static const char *default_branch(int flag) +{ + const char *name = repo_default_branch_name(the_repository, 1); + + if (!name) + BUG("could not determine the default branch name"); + + return name; +} + struct git_var { const char *name; const char *(*read)(int); @@ -36,6 +47,7 @@ static struct git_var git_vars[] = { { "GIT_AUTHOR_IDENT", git_author_info }, { "GIT_EDITOR", editor }, { "GIT_PAGER", pager }, + { "GIT_DEFAULT_BRANCH", default_branch }, { "", NULL }, }; -- snap -- Thanks, Johannes