Imported Upstream version 2.30.0
[platform/upstream/git.git] / refs.c
diff --git a/refs.c b/refs.c
index fa01153..13dc2c3 100644 (file)
--- 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;
 }