summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/refs.c b/refs.c
index fa01153151..13dc2c3291 100644
--- a/refs.c
+++ b/refs.c
@@ -562,17 +562,36 @@ void expand_ref_prefix(struct strvec *prefixes, const char *prefix)
strvec_pushf(prefixes, *p, len, prefix);
}
-char *repo_default_branch_name(struct repository *r)
+static const char default_branch_name_advice[] = N_(
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+);
+
+char *repo_default_branch_name(struct repository *r, int quiet)
{
const char *config_key = "init.defaultbranch";
const char *config_display_key = "init.defaultBranch";
char *ret = NULL, *full_ref;
+ const char *env = getenv("GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME");
- if (repo_config_get_string(r, config_key, &ret) < 0)
+ if (env && *env)
+ ret = xstrdup(env);
+ else if (repo_config_get_string(r, config_key, &ret) < 0)
die(_("could not retrieve `%s`"), config_display_key);
- if (!ret)
+ if (!ret) {
ret = xstrdup("master");
+ if (!quiet)
+ advise(_(default_branch_name_advice), ret);
+ }
full_ref = xstrfmt("refs/heads/%s", ret);
if (check_refname_format(full_ref, 0))
@@ -582,12 +601,12 @@ char *repo_default_branch_name(struct repository *r)
return ret;
}
-const char *git_default_branch_name(void)
+const char *git_default_branch_name(int quiet)
{
static char *ret;
if (!ret)
- ret = repo_default_branch_name(the_repository);
+ ret = repo_default_branch_name(the_repository, quiet);
return ret;
}