From patchwork Thu Dec 10 21:58:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin X-Patchwork-Id: 11966867 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAC12C0018C for ; Thu, 10 Dec 2020 23:14:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 97B4923BE5 for ; Thu, 10 Dec 2020 23:14:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391812AbgLJXN2 (ORCPT ); Thu, 10 Dec 2020 18:13:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44866 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391839AbgLJXNR (ORCPT ); Thu, 10 Dec 2020 18:13:17 -0500 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47035C0611CB for ; Thu, 10 Dec 2020 14:37:17 -0800 (PST) Received: by mail-wm1-x344.google.com with SMTP id a6so6021143wmc.2 for ; Thu, 10 Dec 2020 14:37:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=wgxnSsbC7L9Mc1xpGuOrcn+3CuCN0TyjlWT75S2Kiac=; b=jnhs3at7b6gjTcSeSjPpMq76cgMVqyKNjSIu4e25jVN0EtJovXtYIeSJS/yqjzTKMq neBLv88jXC5XbrBAe1ATBJqHU33mHyxLFangqK3lkCNpnFyOmQMjLyWtGciHVTIOLRXv RYL3WbDaeEoK9KEZylpAZlh/cIYIi6B56NwVM9ccC5/r3hJAoPBgasZCeHvojbIQjQTp 4TaZkSkiMcQJ33zX5LjNsAEyakj/gycwX+6sKiiK74CKI+A057eqd5caFESaTol4cKQU Yzn4xWpxsNfoDG+Tn625pAi3RfKPrwY2fMqNkJpees2rKaAFXIfl3ko7xzC2fRrXaKQ0 CQFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=wgxnSsbC7L9Mc1xpGuOrcn+3CuCN0TyjlWT75S2Kiac=; b=dY2lyXp60i9UdWTLlJv95ReOLK0y72bWKuXgsa5SYyUhmqMObYoHea/WKHYxnRSsLp oVWikbEXwbPRyhn86/1j6q5n399WvK50rsYCB+IGClB+F2aIdoC3vOmPiWGBdHrStOWp 1Ieklqry+4tOjt4N9mivleLv0WBHFdSv0VDqLF8P8Qa8MVGRyMdmaKRJJYAwus/9LUrB kg2SEE2uqNehX1bdYJlLudoGVAavCo3SNCK2/6uEWOmFVisOQ8d0MRrrhMQjb+wKx9Tt ujwjytuCLfSZFO2pmhEKMIFnnRAJe6gFOKIhyTvJYPOsGIQjjHtfmSDpPdEejg8CAW6N 2kNA== X-Gm-Message-State: AOAM533PA9lhMUJ9VVa0YEF/kkMoqm6WJ3TXAw2Q7CCInEGBt9DtyxvG P1yZF01or9/o/qX7cgm9W5gumbtgMhU= X-Google-Smtp-Source: ABdhPJxFalV0NNm2DR4IV0YZOH/kFJBHOA2DsGVMFqKuCanFdyYpoDOXkK19QSibAr9+aF1g/8Paeg== X-Received: by 2002:a1c:bc88:: with SMTP id m130mr10588234wmf.82.1607637519814; Thu, 10 Dec 2020 13:58:39 -0800 (PST) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id d9sm12240237wrc.87.2020.12.10.13.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 13:58:39 -0800 (PST) Message-Id: <483e490349165223a80a0bdf7716c5189560c977.1607637517.git.gitgitgadget@gmail.com> In-Reply-To: References: Date: Thu, 10 Dec 2020 21:58:33 +0000 Subject: [PATCH v4 1/4] init: document `init.defaultBranch` better Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: Johannes Schindelin , Felipe Contreras , Johannes Schindelin , Johannes Schindelin Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin From: Johannes Schindelin Our documentation does not mention any future plan to change 'master' to other value. It is a good idea to document this, though. Initial-patch-by: Junio C Hamano Signed-off-by: Johannes Schindelin --- Documentation/git-init.txt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt index 59ecda6c17d..2b399cb73d7 100644 --- a/Documentation/git-init.txt +++ b/Documentation/git-init.txt @@ -20,8 +20,9 @@ DESCRIPTION This command creates an empty Git repository - basically a `.git` directory with subdirectories for `objects`, `refs/heads`, -`refs/tags`, and template files. An initial `HEAD` file that -references the HEAD of the master branch is also created. +`refs/tags`, and template files. An initial branch without any +commits will be created (see the `--initial-branch` option below +for its name). If the `$GIT_DIR` environment variable is set then it specifies a path to use instead of `./.git` for the base of the repository. @@ -73,8 +74,10 @@ If this is reinitialization, the repository will be moved to the specified path. -b :: --initial-branch=:: -Use the specified name for the initial branch in the newly created repository. -If not specified, fall back to the default name: `master`. +Use the specified name for the initial branch in the newly created +repository. If not specified, fall back to the default name (currently +`master`, but that will be changed in the future; the name can be customized +via the `init.defaultBranch` configuration variable). --shared[=(false|true|umask|group|all|world|everybody|0xxx)]:: From patchwork Thu Dec 10 21:58:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin X-Patchwork-Id: 11966823 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4C02C4361B for ; Thu, 10 Dec 2020 23:03:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 70B4723B85 for ; Thu, 10 Dec 2020 23:03:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388080AbgLJW6d (ORCPT ); Thu, 10 Dec 2020 17:58:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2393601AbgLJWzF (ORCPT ); Thu, 10 Dec 2020 17:55:05 -0500 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7BB6C0611CD for ; Thu, 10 Dec 2020 14:38:48 -0800 (PST) Received: by mail-wm1-x341.google.com with SMTP id d3so6015833wmb.4 for ; Thu, 10 Dec 2020 14:38:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=wMOlFeqr3KyQUvif43DnFXMdTbT099ZsyX8APEFwt4M=; b=Wf3Pw0n+vwAGRQCCOaVtOTOyI5dafsa6shFxDgBbQo81jKdX2QtwWIjsd4UhYANHbr 5SGa3xFg0rGa2nHP7Qj8OQ+e6jw948crrA55eoA455FSYGNnwWPAy0hcMR/rVDe3eIp0 d+dgZg4DuY15N5OulzcqfEr39fzRI7t3G8OQXRlyC7eNi4X3zKvzn1A7rGpX+S5WmE1M A1xwOWdKja4IXbh0Jd02HA80RkcIQRzyp7Cr+CUPKljNfeo4N8IAPC6avPlND34Ngcj0 mKvAA+s63B4STzXRT4ETW/IjZjUnV2XZum5EciTDBxWV3Cf4CIb3GxxZWRIQXKrN4oSx ih5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=wMOlFeqr3KyQUvif43DnFXMdTbT099ZsyX8APEFwt4M=; b=NlHYzd2qMvCn52x3gp0YwdJ9vcgj11dROJXgQDbUUml358AkKmD92w92z4TO7Ony+9 m4lY9beVTNsYO2QgUdi3qfW+Zps9YwST8JJWj8kI04B24FyiIvvEVmCRzh/stLxFsCzJ 26S/UiBC6xQmoFIE96LjfTVYBTnVQ7NqqKK6QnnFj1RR7FklYGSudWHbf+2J8GKB3Y6B UTTIxjzvBulR9TCZZwa5pk9cchdk5ky5bWItJwRoTXzfCK3t34wFKmLh0iJJtuubOBUb hgHhVHFjJAP8po66QyhYl3D8zhpaEyrrKukDUA13b+4JoTVAd1BAKKFGLGJfc+UAWSRC BPgA== X-Gm-Message-State: AOAM531vXGZdOOfAW9/bFCtttqL12LNB1G+Eulmoo4Dpt3C/lDodAC4B RMEBhpEJAgSdQoH1kNijwgbWY67vgUM= X-Google-Smtp-Source: ABdhPJz3d7B1yMlDHP6CIxqxkYKO+yvpedCRaR1i3+v7vW/b1dTvGm2fVWLJKzHmjGz6AntbQ4Oc0g== X-Received: by 2002:a1c:f002:: with SMTP id a2mr10262617wmb.101.1607637520782; Thu, 10 Dec 2020 13:58:40 -0800 (PST) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id p19sm13970854wrg.18.2020.12.10.13.58.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 13:58:40 -0800 (PST) Message-Id: <6cbd6692c6a4d0586e3418225029e70b0001ffb1.1607637517.git.gitgitgadget@gmail.com> In-Reply-To: References: Date: Thu, 10 Dec 2020 21:58:34 +0000 Subject: [PATCH v4 2/4] branch -m: allow renaming a yet-unborn branch Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: Johannes Schindelin , Felipe Contreras , Johannes Schindelin , Johannes Schindelin Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin From: Johannes Schindelin In one of the next commits, we would like to give users some advice regarding the initial branch name, and how to modify it. To that end, it would be good if `git branch -m ` worked in a freshly initialized repository without any commits. Let's make it so. Signed-off-by: Johannes Schindelin --- builtin/branch.c | 4 +++- t/t0001-init.sh | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/builtin/branch.c b/builtin/branch.c index efb30b88206..200da319f1d 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -538,7 +538,9 @@ static void copy_or_rename_branch(const char *oldname, const char *newname, int strbuf_addf(&logmsg, "Branch: renamed %s to %s", oldref.buf, newref.buf); - if (!copy && rename_ref(oldref.buf, newref.buf, logmsg.buf)) + if (!copy && + (!head || strcmp(oldname, head) || !is_null_oid(&head_oid)) && + rename_ref(oldref.buf, newref.buf, logmsg.buf)) die(_("Branch rename failed")); if (copy && copy_existing_ref(oldref.buf, newref.buf, logmsg.buf)) die(_("Branch copy failed")); diff --git a/t/t0001-init.sh b/t/t0001-init.sh index 69a320489fc..bb23e56a165 100755 --- a/t/t0001-init.sh +++ b/t/t0001-init.sh @@ -571,4 +571,12 @@ test_expect_success 'invalid default branch name' ' test_i18ngrep "invalid branch name" err ' +test_expect_success 'branch -m with the initial branch' ' + git init rename-initial && + git -C rename-initial branch -m renamed && + test renamed = $(git -C rename-initial symbolic-ref --short HEAD) && + git -C rename-initial branch -m renamed again && + test again = $(git -C rename-initial symbolic-ref --short HEAD) +' + test_done From patchwork Thu Dec 10 21:58:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin X-Patchwork-Id: 11966881 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DDDE1C4167B for ; Thu, 10 Dec 2020 23:19:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A24F723EB1 for ; Thu, 10 Dec 2020 23:19:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2393065AbgLJXS5 (ORCPT ); Thu, 10 Dec 2020 18:18:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2393103AbgLJXSR (ORCPT ); Thu, 10 Dec 2020 18:18:17 -0500 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4FDBC061257 for ; Thu, 10 Dec 2020 14:35:58 -0800 (PST) Received: by mail-wm1-x342.google.com with SMTP id v14so6020364wml.1 for ; Thu, 10 Dec 2020 14:35:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=dDkyjIFzTnF0UfdJyakAAWfV8URHBiRDEGa+zK2AqPY=; b=d9k82vE9jHzg9yAbfs83pSFEvOWAUtqmNVaxXrM2qzcB3w0yH7llKpyfzv1DY6Ny2W BkQfRKEq/9Ba963yG+fuy7Th4f4vG5gb6mgIkwN9DpRY7IYnMdkJH29qxF8s6gzfojkI tnARpbVuFqKlk3lRk6iLvLyBjL6evffizQSTtW5LMToSZq8jJSGoFovO6JrX3ItcgXlZ hTRd7CGQ0rHhQnh4ixEn2kydG+VytWvn1dCGGtTDqdkKP2B3qgKdsMt92+FEx05eZuWk QxjWInnhjqhRjsCaAua0YINQG6yaT6k7Cg2F4GG2HqJz8FxC3sDq/MugMeKExa13bVgH aLjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=dDkyjIFzTnF0UfdJyakAAWfV8URHBiRDEGa+zK2AqPY=; b=gq5jkomqE3XyuJH37JSZdzHvG57iDFXCk0v4AlW32bC1LnrcWdvs92qYt8uj6kO7QU YLQerZlNxaFsPQLQ12jY5JbBCKP6f8p81lQbERsXFtnC4aYp8bY4JiRiPvSt8zwA+XeF JyRRbqmykYfVzFPabuE/BR6LZrqwBxIZahMyz6e36Pn+vWL8C73OsArzaWo0HP4EPZQ5 e5M3o9IGNiE3TXb0cJPvdPUG1czqbJSRJvin2saB+C+PPCaPdrIBpY1uKUZVm2WN0gR2 Vbf2veZ7GTsDR3TLO8XPyYPYsCdYPs8okX+Q7hv2IYV1LiDu4t7vdfwWhmQnNXZhFY76 19xw== X-Gm-Message-State: AOAM531ZR6ekJsw7k15qyqWk0Sxmj/uz/9PVQxLhnjfJ2CyOvalBi8XP 0d1pGnS85COkoQmcx9+b3g5XFuhsNy0= X-Google-Smtp-Source: ABdhPJwWbMQSpuwsS/80Ys3ehf72y3gUa/CHvay61pyp/LwxloZYg7uW5+sy8V9Ek33QqCxeifMUow== X-Received: by 2002:a1c:bd87:: with SMTP id n129mr10435407wmf.32.1607637521710; Thu, 10 Dec 2020 13:58:41 -0800 (PST) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id a65sm10172982wmc.35.2020.12.10.13.58.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 13:58:41 -0800 (PST) Message-Id: <5fc15f7b9adaf64c2fbfd58f6e96768f5b9d7f8b.1607637517.git.gitgitgadget@gmail.com> In-Reply-To: References: Date: Thu, 10 Dec 2020 21:58:35 +0000 Subject: [PATCH v4 3/4] get_default_branch_name(): prepare for showing some advice Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: Johannes Schindelin , Felipe Contreras , Johannes Schindelin , Johannes Schindelin Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin From: Johannes Schindelin We are about to introduce a message giving users running `git init` some advice about `init.defaultBranch`. This will necessarily be done in `repo_default_branch_name()`. Not all code paths want to show that advice, though. In particular, the `git clone` codepath _specifically_ asks for `init_db()` to be quiet, via the `INIT_DB_QUIET` flag. In preparation for showing users above-mentioned advice, let's change the function signature of `get_default_branch_name()` to accept the parameter `quiet`. Signed-off-by: Johannes Schindelin --- builtin/clone.c | 2 +- builtin/init-db.c | 8 +++++--- refs.c | 6 +++--- refs.h | 4 ++-- remote.c | 5 +++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/builtin/clone.c b/builtin/clone.c index a0841923cfe..64b17840112 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1323,7 +1323,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) remote_head = NULL; option_no_checkout = 1; if (!option_bare) { - const char *branch = git_default_branch_name(); + const char *branch = git_default_branch_name(0); char *ref = xstrfmt("refs/heads/%s", branch); install_branch_config(0, branch, remote_name, ref); diff --git a/builtin/init-db.c b/builtin/init-db.c index 01bc648d416..dcc45bef514 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -202,7 +202,8 @@ void initialize_repository_version(int hash_algo, int reinit) static int create_default_files(const char *template_path, const char *original_git_dir, const char *initial_branch, - const struct repository_format *fmt) + const struct repository_format *fmt, + int quiet) { struct stat st1; struct strbuf buf = STRBUF_INIT; @@ -267,7 +268,7 @@ static int create_default_files(const char *template_path, char *ref; if (!initial_branch) - initial_branch = git_default_branch_name(); + initial_branch = git_default_branch_name(quiet); ref = xstrfmt("refs/heads/%s", initial_branch); if (check_refname_format(ref, 0) < 0) @@ -438,7 +439,8 @@ int init_db(const char *git_dir, const char *real_git_dir, validate_hash_algorithm(&repo_fmt, hash); reinit = create_default_files(template_dir, original_git_dir, - initial_branch, &repo_fmt); + initial_branch, &repo_fmt, + flags & INIT_DB_QUIET); if (reinit && initial_branch) warning(_("re-init: ignored --initial-branch=%s"), initial_branch); diff --git a/refs.c b/refs.c index 392f0bbf68b..8df03122d69 100644 --- a/refs.c +++ b/refs.c @@ -562,7 +562,7 @@ void expand_ref_prefix(struct strvec *prefixes, const char *prefix) strvec_pushf(prefixes, *p, len, prefix); } -char *repo_default_branch_name(struct repository *r) +char *repo_default_branch_name(struct repository *r, int quiet) { const char *config_key = "init.defaultbranch"; const char *config_display_key = "init.defaultBranch"; @@ -585,12 +585,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; } diff --git a/refs.h b/refs.h index 66955181569..ff05d2e9fe2 100644 --- a/refs.h +++ b/refs.h @@ -170,8 +170,8 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **ref); * The return value of `repo_default_branch_name()` is an allocated string. The * return value of `git_default_branch_name()` is a singleton. */ -const char *git_default_branch_name(void); -char *repo_default_branch_name(struct repository *r); +const char *git_default_branch_name(int quiet); +char *repo_default_branch_name(struct repository *r, int quiet); /* * A ref_transaction represents a collection of reference updates that diff --git a/remote.c b/remote.c index 8a6dbbb9030..bdb88d4b7dd 100644 --- a/remote.c +++ b/remote.c @@ -284,7 +284,7 @@ static void read_branches_file(struct remote *remote) if (frag) *(frag++) = '\0'; else - frag = (char *)git_default_branch_name(); + frag = (char *)git_default_branch_name(0); add_url_alias(remote, strbuf_detach(&buf, NULL)); refspec_appendf(&remote->fetch, "refs/heads/%s:refs/heads/%s", @@ -2206,7 +2206,8 @@ struct ref *guess_remote_head(const struct ref *head, /* If a remote branch exists with the default branch name, let's use it. */ if (!all) { - char *ref = xstrfmt("refs/heads/%s", git_default_branch_name()); + char *ref = xstrfmt("refs/heads/%s", + git_default_branch_name(0)); r = find_ref_by_name(refs, ref); free(ref); From patchwork Thu Dec 10 21:58:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Schindelin X-Patchwork-Id: 11966817 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08461C2BBCD for ; Thu, 10 Dec 2020 23:00:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C72F223BA7 for ; Thu, 10 Dec 2020 23:00:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732119AbgLJW6l (ORCPT ); Thu, 10 Dec 2020 17:58:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727271AbgLJWzN (ORCPT ); Thu, 10 Dec 2020 17:55:13 -0500 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89B56C0619D5 for ; Thu, 10 Dec 2020 14:42:15 -0800 (PST) Received: by mail-wm1-x342.google.com with SMTP id q75so6884267wme.2 for ; Thu, 10 Dec 2020 14:42:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=gR3Wi8MHOg1gRLpuWQSqw16pla/znuCkCkhB3wQWEEw=; b=fBMkVQWpPztS+tlzK7RxBLptbDGefe1o38g1RUCEnQwC6gSMGTWlGVTXTHp6f/fR1H o3eaYwr3/LBfQRkTZvKo1jcOutoJ3GVxokDdEdSbKInzFhSOVSnHvQdoaURyNlFy46I6 clqCg+rKU0jUXIIxpXsUlYCQybGjgwTBIk/9pUQX8VXE9JguVodPpDqdDTt9zSUGk1ME hl/GSmLdRY/2U4S/m5Q0tTLVxgU6iD+yjL59teFliYyUCuwEdXZWQ5APwAVSFepbGVaH 1GRpS/9jbFhcfGU3wpF2dCq21WmCr0XGQHBf1P3WJb9da+16C4O5woDyEaB0vc/dOjaO UyHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=gR3Wi8MHOg1gRLpuWQSqw16pla/znuCkCkhB3wQWEEw=; b=JDYqek1g0tWxFJXRO+3T2X++qW5QKszd3knZYHXWFjPhmkhfd78cmBWXl0ZjQBHiIJ xdhIIPkJCJxJUSfQqC8xnZ/53Ted8rijXNs6OaxohcHJtBivUIAdpRRI3TYm6IfAhwc2 RqBmtykQjrePxwCh1oY6+gnfh3QFvRn9nAQIMQb2Ibv2YN5Z7sYpj1qXML4SUTWjW7/v wnCkO70BOBzbJsnKnSYeieY8GW8sJ4z4QRnpUhznRSVmXvN5JhgOHaDUtTsIQhw/uC62 kSUoOzjM4TeLoSDOugCtUIxLehqmEK74A1LadDk05e02yYSPgLu8RX0vfCOqPt7pLXSk WucA== X-Gm-Message-State: AOAM532k4+nq8ItxOvpQDOP12iCdim/h7Qb7oXW1B4rz6MdbcqXCSTLs w+KyBHRvzs6097WyljhaYkMZZMSu4LM= X-Google-Smtp-Source: ABdhPJwisjDuSC08NsYzMrgq/nqzcj4RSV8/rieYXm/GH0O5bCGmdPt8wLbXkrLhWew+ItWrVDxEEA== X-Received: by 2002:a1c:2ec6:: with SMTP id u189mr10526924wmu.31.1607637522638; Thu, 10 Dec 2020 13:58:42 -0800 (PST) Received: from [127.0.0.1] ([13.74.141.28]) by smtp.gmail.com with ESMTPSA id 65sm11229699wri.95.2020.12.10.13.58.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 13:58:42 -0800 (PST) Message-Id: <2f21c505d560132b4563849f955554fc7d79a9cb.1607637517.git.gitgitgadget@gmail.com> In-Reply-To: References: Date: Thu, 10 Dec 2020 21:58:36 +0000 Subject: [PATCH v4 4/4] init: provide useful advice about init.defaultBranch Fcc: Sent MIME-Version: 1.0 To: git@vger.kernel.org Cc: Johannes Schindelin , Felipe Contreras , Johannes Schindelin , Johannes Schindelin Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org From: Johannes Schindelin From: Johannes Schindelin 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 --- refs.c | 18 +++++++++++++++++- t/t0001-init.sh | 9 ++++++++- t/t1510-repo-setup.sh | 2 +- t/test-lib-functions.sh | 4 +++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/refs.c b/refs.c index 8df03122d69..6e047b3d1b4 100644 --- a/refs.c +++ b/refs.c @@ -562,6 +562,19 @@ 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 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 \n" +"\n" +"Common names are 'main', 'trunk' and 'development'. The initial branch\n" +"that was created can be renamed via this command:\n" +"\n" +"\tgit branch -m \n" +); + char *repo_default_branch_name(struct repository *r, int quiet) { 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) 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)) diff --git a/t/t0001-init.sh b/t/t0001-init.sh index bb23e56a165..0803994874f 100755 --- a/t/t0001-init.sh +++ b/t/t0001-init.sh @@ -163,7 +163,7 @@ test_expect_success 'reinit' ' ( mkdir again && cd again && - git init >out1 2>err1 && + git -c init.defaultBranch=initial init >out1 2>err1 && git init >out2 2>err2 ) && test_i18ngrep "Initialized empty" again/out1 && @@ -558,6 +558,13 @@ test_expect_success 'overridden default initial branch name (config)' ' 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 decoded && + test_i18ngrep "hint: " decoded +' + test_expect_success 'overridden default main branch name (env)' ' test_config_global init.defaultBranch nmb && GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env && diff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh index 9974457f561..bbfe05b8e4a 100755 --- a/t/t1510-repo-setup.sh +++ b/t/t1510-repo-setup.sh @@ -79,7 +79,7 @@ setup_repo () { name=$1 worktreecfg=$2 gitfile=$3 barecfg=$4 && 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.bare "$barecfg" && mkdir -p "$name/sub/sub" && diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 59bbf75e832..9910102ae1f 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1202,7 +1202,9 @@ test_create_repo () { mkdir -p "$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 \ + 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