init: provide useful advice about init.defaultBranch
To give ample warning for users wishing to override Git's the fall-back for an unconfigured `init.defaultBranch` (in case we decide to change it in a future Git version), let's introduce some advice that is shown upon `git init` when that value is not set. Note: two test cases in Git's test suite want to verify that the `stderr` output of `git init` is empty. It is now necessary to suppress the advice, we now do that via the `init.defaultBranch` setting. While not strictly necessary, we also set this to `false` in `test_create_repo()`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
cc0f13c57d
commit
675704c74d
18
refs.c
18
refs.c
|
@ -562,6 +562,19 @@ void expand_ref_prefix(struct strvec *prefixes, const char *prefix)
|
||||||
strvec_pushf(prefixes, *p, len, prefix);
|
strvec_pushf(prefixes, *p, len, prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
char *repo_default_branch_name(struct repository *r, int quiet)
|
||||||
{
|
{
|
||||||
const char *config_key = "init.defaultbranch";
|
const char *config_key = "init.defaultbranch";
|
||||||
|
@ -574,8 +587,11 @@ char *repo_default_branch_name(struct repository *r, int quiet)
|
||||||
else if (repo_config_get_string(r, config_key, &ret) < 0)
|
else if (repo_config_get_string(r, config_key, &ret) < 0)
|
||||||
die(_("could not retrieve `%s`"), config_display_key);
|
die(_("could not retrieve `%s`"), config_display_key);
|
||||||
|
|
||||||
if (!ret)
|
if (!ret) {
|
||||||
ret = xstrdup("master");
|
ret = xstrdup("master");
|
||||||
|
if (!quiet)
|
||||||
|
advise(_(default_branch_name_advice), ret);
|
||||||
|
}
|
||||||
|
|
||||||
full_ref = xstrfmt("refs/heads/%s", ret);
|
full_ref = xstrfmt("refs/heads/%s", ret);
|
||||||
if (check_refname_format(full_ref, 0))
|
if (check_refname_format(full_ref, 0))
|
||||||
|
|
|
@ -163,7 +163,7 @@ test_expect_success 'reinit' '
|
||||||
(
|
(
|
||||||
mkdir again &&
|
mkdir again &&
|
||||||
cd again &&
|
cd again &&
|
||||||
git init >out1 2>err1 &&
|
git -c init.defaultBranch=initial init >out1 2>err1 &&
|
||||||
git init >out2 2>err2
|
git init >out2 2>err2
|
||||||
) &&
|
) &&
|
||||||
test_i18ngrep "Initialized empty" again/out1 &&
|
test_i18ngrep "Initialized empty" again/out1 &&
|
||||||
|
@ -558,6 +558,13 @@ test_expect_success 'overridden default initial branch name (config)' '
|
||||||
grep nmb actual
|
grep nmb actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'advice on unconfigured init.defaultBranch' '
|
||||||
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git -c color.advice=always \
|
||||||
|
init unconfigured-default-branch-name 2>err &&
|
||||||
|
test_decode_color <err >decoded &&
|
||||||
|
test_i18ngrep "<YELLOW>hint: " decoded
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'overridden default main branch name (env)' '
|
test_expect_success 'overridden default main branch name (env)' '
|
||||||
test_config_global init.defaultBranch nmb &&
|
test_config_global init.defaultBranch nmb &&
|
||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&
|
||||||
|
|
|
@ -79,7 +79,7 @@ setup_repo () {
|
||||||
name=$1 worktreecfg=$2 gitfile=$3 barecfg=$4 &&
|
name=$1 worktreecfg=$2 gitfile=$3 barecfg=$4 &&
|
||||||
sane_unset GIT_DIR GIT_WORK_TREE &&
|
sane_unset GIT_DIR GIT_WORK_TREE &&
|
||||||
|
|
||||||
git init "$name" &&
|
git -c init.defaultBranch=initial init "$name" &&
|
||||||
maybe_config "$name/.git/config" core.worktree "$worktreecfg" &&
|
maybe_config "$name/.git/config" core.worktree "$worktreecfg" &&
|
||||||
maybe_config "$name/.git/config" core.bare "$barecfg" &&
|
maybe_config "$name/.git/config" core.bare "$barecfg" &&
|
||||||
mkdir -p "$name/sub/sub" &&
|
mkdir -p "$name/sub/sub" &&
|
||||||
|
|
|
@ -1202,7 +1202,9 @@ test_create_repo () {
|
||||||
mkdir -p "$repo"
|
mkdir -p "$repo"
|
||||||
(
|
(
|
||||||
cd "$repo" || error "Cannot setup test environment"
|
cd "$repo" || error "Cannot setup test environment"
|
||||||
"${GIT_TEST_INSTALLED:-$GIT_EXEC_PATH}/git$X" init \
|
"${GIT_TEST_INSTALLED:-$GIT_EXEC_PATH}/git$X" -c \
|
||||||
|
init.defaultBranch="${GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME-master}" \
|
||||||
|
init \
|
||||||
"--template=$GIT_BUILD_DIR/templates/blt/" >&3 2>&4 ||
|
"--template=$GIT_BUILD_DIR/templates/blt/" >&3 2>&4 ||
|
||||||
error "cannot run git init -- have you built things yet?"
|
error "cannot run git init -- have you built things yet?"
|
||||||
mv .git/hooks .git/hooks-disabled
|
mv .git/hooks .git/hooks-disabled
|
||||||
|
|
Loading…
Reference in New Issue