From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Felipe Contreras <felipe.contreras@gmail.com>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v4 0/4] Add helpful advice about init.defaultBranch
Date: Thu, 10 Dec 2020 21:58:32 +0000 [thread overview]
Message-ID: <pull.921.v4.git.git.1607637517.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.921.v3.git.git.1606230450.gitgitgadget@gmail.com>
It is our designated intention
[https://sfconservancy.org/news/2020/jun/23/gitbranchname/] to "to explore
changing the name of the first branch created automatically for new
repositories away from ‘master’". Further, we promised that we "will
minimize disruption for Git's users and will include appropriate deprecation
periods".
To that end, we first clarify git init's documentation (a lightly edited
version of Junio's patch
[https://lore.kernel.org/git/xmqqd00a36wc.fsf@gitster.c.googlers.com]), and
then introduce a message giving advice to users running git init that the
fall-back for init.defaultBranch is subject to change, and how to override
Git's fall-back manually.
The beauty of this patch series, if I may say so, is that it does not commit
us to any concrete plan, but opens the door for all options regarding the
default branch name.
Changes since v3:
* Kicked out advice.defaultBranchName again. The advice can now only be
suppressed by setting init.defaultBranch.
Changes since v2:
* git branch -m <initial> <renamed> now works, too
* The config setting advice.defaultBranchName was introduced to allow
suppressing this warning specifically
* The advice now first talks about the current default branch name, then
how to suppress the advice, and only then explains how to override the
default branch name (and that that will also prevent the message from
being shown)
Changes since v1:
* Grammar fix
* Reworded advice and commit messages
* test_create_repo already respected GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME,
but now does so more obviously
* Allowed git branch -m <name> to rename unborn branches, so that the
advice actually works
Johannes Schindelin (4):
init: document `init.defaultBranch` better
branch -m: allow renaming a yet-unborn branch
get_default_branch_name(): prepare for showing some advice
init: provide useful advice about init.defaultBranch
Documentation/git-init.txt | 11 +++++++----
builtin/branch.c | 4 +++-
builtin/clone.c | 2 +-
builtin/init-db.c | 8 +++++---
refs.c | 24 ++++++++++++++++++++----
refs.h | 4 ++--
remote.c | 5 +++--
t/t0001-init.sh | 17 ++++++++++++++++-
t/t1510-repo-setup.sh | 2 +-
t/test-lib-functions.sh | 4 +++-
10 files changed, 61 insertions(+), 20 deletions(-)
base-commit: faefdd61ec7c7f6f3c8c9907891465ac9a2a1475
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-921%2Fdscho%2Finit.defaultBranch-advice-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-921/dscho/init.defaultBranch-advice-v4
Pull-Request: https://github.com/git/git/pull/921
Range-diff vs v3:
1: 483e4903491 = 1: 483e4903491 init: document `init.defaultBranch` better
2: 6cbd6692c6a = 2: 6cbd6692c6a branch -m: allow renaming a yet-unborn branch
3: 5fc15f7b9ad = 3: 5fc15f7b9ad get_default_branch_name(): prepare for showing some advice
4: 87c93068771 ! 4: 2f21c505d56 init: provide useful advice about init.defaultBranch
@@ Commit message
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 using the newly-added `advice.defaultBranchName` setting.
- While not strictly necessary, we also set this to `false` in
+ 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>
- ## advice.c ##
-@@ advice.c: static struct {
- [ADVICE_AM_WORK_DIR] = { "amWorkDir", 1 },
- [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName", 1 },
- [ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge", 1 },
-+ [ADVICE_DEFAULT_BRANCH_NAME] = { "defaultBranchName", 1 },
- [ADVICE_DETACHED_HEAD] = { "detachedHead", 1 },
- [ADVICE_FETCH_SHOW_FORCED_UPDATES] = { "fetchShowForcedUpdates", 1 },
- [ADVICE_GRAFT_FILE_DEPRECATED] = { "graftFileDeprecated", 1 },
-
- ## advice.h ##
-@@ advice.h: extern int advice_add_empty_pathspec;
- ADVICE_AM_WORK_DIR,
- ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
- ADVICE_COMMIT_BEFORE_MERGE,
-+ ADVICE_DEFAULT_BRANCH_NAME,
- ADVICE_DETACHED_HEAD,
- ADVICE_FETCH_SHOW_FORCED_UPDATES,
- ADVICE_GRAFT_FILE_DEPRECATED,
-
## refs.c ##
-@@
- #include "strvec.h"
- #include "repository.h"
- #include "sigchain.h"
-+#include "advice.h"
-
- /*
- * List of all available backends
@@ refs.c: void expand_ref_prefix(struct strvec *prefixes, const char *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 suppress this warning, run:\n"
-+"\n"
-+"\tgit config --global advice.defaultBranchName false\n"
-+"\n"
-+"Alternatively, you can configure the initial branch name to use in all\n"
-+"of your new repositories, which will also suppress this warning:\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"
@@ refs.c: char *repo_default_branch_name(struct repository *r, int quiet)
- if (!ret)
+ if (!ret) {
ret = xstrdup("master");
-+ if (!quiet && advice_enabled(ADVICE_DEFAULT_BRANCH_NAME))
++ if (!quiet)
+ advise(_(default_branch_name_advice), ret);
+ }
@@ t/t0001-init.sh: test_expect_success 'reinit' '
mkdir again &&
cd again &&
- git init >out1 2>err1 &&
-+ git -c advice.defaultBranchName=false init >out1 2>err1 &&
++ git -c init.defaultBranch=initial init >out1 2>err1 &&
git init >out2 2>err2
) &&
test_i18ngrep "Initialized empty" again/out1 &&
@@ t/t1510-repo-setup.sh: setup_repo () {
sane_unset GIT_DIR GIT_WORK_TREE &&
- git init "$name" &&
-+ git -c advice.defaultBranchName=false init "$name" &&
++ git -c init.defaultBranch=initial init "$name" &&
maybe_config "$name/.git/config" core.worktree "$worktreecfg" &&
maybe_config "$name/.git/config" core.bare "$barecfg" &&
mkdir -p "$name/sub/sub" &&
@@ t/test-lib-functions.sh: test_create_repo () {
(
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 advice.defaultBranchName=false 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 ||
error "cannot run git init -- have you built things yet?"
mv .git/hooks .git/hooks-disabled
--
gitgitgadget
next prev parent reply other threads:[~2020-12-10 22:57 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-22 23:23 [PATCH 0/3] Add helpful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-11-22 23:23 ` [PATCH 1/3] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-22 23:40 ` Junio C Hamano
2020-11-23 12:07 ` Johannes Schindelin
2020-11-22 23:23 ` [PATCH 2/3] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-22 23:23 ` [PATCH 3/3] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-11-22 23:53 ` Junio C Hamano
2020-11-23 2:07 ` Junio C Hamano
2020-11-23 12:28 ` Johannes Schindelin
2020-11-23 18:40 ` Junio C Hamano
2020-11-23 20:46 ` Johannes Schindelin
2020-11-23 21:28 ` Junio C Hamano
2020-11-23 12:26 ` Johannes Schindelin
2020-11-23 12:49 ` Philip Oakley
2020-11-23 20:47 ` Johannes Schindelin
2020-11-23 23:20 ` [PATCH v2 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-11-23 23:20 ` [PATCH v2 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-23 23:20 ` [PATCH v2 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-11-23 23:45 ` Junio C Hamano
2020-11-24 5:47 ` Johannes Schindelin
2020-11-24 20:14 ` Junio C Hamano
2020-11-23 23:20 ` [PATCH v2 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-23 23:20 ` [PATCH v2 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-11-23 23:53 ` Junio C Hamano
2020-11-24 5:57 ` Johannes Schindelin
2020-11-24 20:53 ` Junio C Hamano
2020-12-09 14:47 ` Johannes Schindelin
2020-12-09 22:15 ` Junio C Hamano
2020-12-10 12:12 ` Johannes Schindelin
2020-12-10 23:32 ` Junio C Hamano
2020-12-10 0:40 ` Felipe Contreras
2020-11-24 15:07 ` [PATCH v3 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-11-24 15:07 ` [PATCH v3 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-24 15:07 ` [PATCH v3 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-11-24 15:07 ` [PATCH v3 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-24 15:07 ` [PATCH v3 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-12-10 21:58 ` Johannes Schindelin via GitGitGadget [this message]
2020-12-10 21:58 ` [PATCH v4 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-12-11 0:24 ` Felipe Contreras
2020-12-11 5:47 ` Junio C Hamano
2020-12-11 6:26 ` Felipe Contreras
2020-12-11 5:59 ` Junio C Hamano
2020-12-10 21:58 ` [PATCH v4 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-12-10 21:58 ` [PATCH v4 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-12-10 21:58 ` [PATCH v4 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-12-11 0:15 ` Felipe Contreras
2020-12-11 1:22 ` Junio C Hamano
2020-12-11 0:47 ` Johannes Schindelin
2020-12-11 2:00 ` Felipe Contreras
2020-12-11 11:36 ` [PATCH v5 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-12-11 11:36 ` [PATCH v5 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-12-11 11:36 ` [PATCH v5 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-12-11 11:36 ` [PATCH v5 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-12-11 11:36 ` [PATCH v5 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2021-02-02 21:24 ` SZEDER Gábor
2021-02-02 22:25 ` Junio C Hamano
2021-02-03 5:20 ` SZEDER Gábor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.921.v4.git.git.1607637517.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).