From patchwork Tue Mar 25 00:51:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Tobler X-Patchwork-Id: 14027986 Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BE9D0537E9 for ; Tue, 25 Mar 2025 00:55:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864136; cv=none; b=Xt2imqhr1+DiteLcYlmNi9OeAfUG/AQfYJLeccMD39u6VdhI4QD3l5EnKbhCxmbZj/NAhtC7NpDHcfS8hXm81AEWrYbZFtzYvla5aahxUnAjB406U4iUxq8/rHPu3BLG7dEj8YIe1eokcsTGVt5Mp1CKF2QOgg0nb4nHhvBjvOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864136; c=relaxed/simple; bh=2eJ5BNzH7tcDLGBs/snwtQo8y1maOrZY1ER0CmgvYsU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XKqfBPhkmoXEqefgEyzUm8DKnhCDt3D2URlnZS/t6oC+SeBMy2JzbPw3g8UWY9t5KbCuG0DvQikP4Bo0fZrEZiWMq0sGkeOTRjdyHkkxhp93I59YVbYNvNb6i68GWsEXAOYroyjGBfeF1gwlW6K8rQKuF8tVCi47c7yc3R8PD58= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nsHygbUJ; arc=none smtp.client-ip=209.85.210.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nsHygbUJ" Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-72c16e658f4so982376a34.1 for ; Mon, 24 Mar 2025 17:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742864133; x=1743468933; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eSbO26uzvg2PRdA73hjAzjaq9HGkRU+Bx+FlwdjiTlI=; b=nsHygbUJ0aPIIFY6IweSQVZyKUK9aYbe/AjDpl7EktGDUENsTTXYGaLy0Ahdl2Ss06 a0ADqO/ptyGh5TvZI+PH8iqdGHYDQa5dJrOyoxc+PlTxZF2SzcNhqkKzxISq9NBOv2B+ +DF6TGR5lA0vpKYFaEzAuWXUw+VXYxkYVjfDzL6E0gSRI/umDiZq+Ij5Kkrb3CUN+BPr V+gXeYV0oHCbpVvLhiQj46pb3XZi3ZbvMKDSesOWUiE91+HC4egcW6KZieqHhHjBOCNt NNaQ8GTfvUJp40I9PeoZ7uoq8mVeP6NeHOmwoGWV8InsZ3co86cjXhpjgEgmWZ2RL7SL Ulhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742864133; x=1743468933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eSbO26uzvg2PRdA73hjAzjaq9HGkRU+Bx+FlwdjiTlI=; b=Y7iqiOFtzAwE5j/rJp+agVueWavS7/I1DKbv3sM23Rqrl8NjPL45v6jnyp64Gwi1+S 5fFf0utrJ6LRpi0xLTarhRy6mv46rRDRAgJxNupXCfCyLLghuMCPXWmE4lwPLrR+hSa4 HjYohAwOmhhBTLLuz6L7WytOJsV3LNEr3rbIgCS2waAyU8srGOMFP9wiYFhcg2Gk1Zfn 0n7Te9m5azVs29h6xm8JuLY5ecbtv/Sm35y1cmpO/Ni3OMRk82X0Toa0TmDQ6r/oxiJP 4jZgCRcSiSUyVqUjGqeI2i2/y+dneHH5QEptirEc0Ft1/KilvwltyLTly8eV2CWa1vVK SNtw== X-Gm-Message-State: AOJu0YziLPyXo/Bwcgz+R8l35tHtwWbbf3Xqh/GeW4YpXB8B1enpUujH CtrhryMAsT5hqkrk+qpX1csZ76AL0erO5NUzFp/bvhMl/UIefaH36NJIPA== X-Gm-Gg: ASbGncu+dyaT3t92sIDeMGMkdUkahtw9+sLSt23o7syn9UnIbQscVRUCW/1TEdVlqnG zbO1YzA6puORRAJZnkczt+KRyutFg1DoY+zpRF/qAk7wVvuC3qmWUxMRbJ+Tzk5BpHlnPd6sYew yA9rZejdK9eYg+LfHkQGgvkBoskgS0j/bunPL820G9yPus0yS3bP8l/aCw13snhoCOpy+A0JE+8 LHjQTyzROJti3iCtJvakcwjvWzH/SK2zsfdXYqgD9MDimNzO1al/MiBO8/gekHlvXRl4GIqTyHU LtTpEAX0rN5Mjscws/RO0ISRbSv5JiXG6mTajEYqMuzZ0X5JPBWW X-Google-Smtp-Source: AGHT+IHOLnMeCfxdYkwIYs0cIrjzGUu+39X5haWbyP7Dx37cd89gSZyy1yHq8FXZgcyqgCBHkOvWKw== X-Received: by 2002:a05:6830:3c05:b0:72b:87bd:ad5b with SMTP id 46e09a7af769-72c0ae5061bmr9975028a34.4.1742864132880; Mon, 24 Mar 2025 17:55:32 -0700 (PDT) Received: from denethor.localdomain ([136.50.74.45]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-72c0ac7bbafsm1735316a34.65.2025.03.24.17.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 17:55:32 -0700 (PDT) From: Justin Tobler To: git@vger.kernel.org Cc: ps@pks.im, phillip.wood123@gmail.com, alan@norbauer.com, Justin Tobler Subject: [PATCH v3 1/3] remote: allow `guess_remote_head()` to suppress advice Date: Mon, 24 Mar 2025 19:51:46 -0500 Message-ID: <20250325005148.1771502-2-jltobler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250325005148.1771502-1-jltobler@gmail.com> References: <20250321231639.180762-1-jltobler@gmail.com> <20250325005148.1771502-1-jltobler@gmail.com> Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The `repo_default_branch_name()` invoked through `guess_remote_head()` is configured to always display the default branch advice message. Adapt `guess_remote_head()` to accept flags and convert the `all` parameter to a flag. Add the `REMOTE_GUESS_HEAD_QUIET` flag to to enable suppression of advice messages. Call sites are updated accordingly. Signed-off-by: Justin Tobler --- builtin/fetch.c | 2 +- builtin/remote.c | 2 +- remote.c | 10 ++++++---- remote.h | 11 +++++++---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/builtin/fetch.c b/builtin/fetch.c index 95fd0018b9..763314bfcb 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1638,7 +1638,7 @@ static int set_head(const struct ref *remote_refs, struct remote *remote) get_fetch_map(remote_refs, &refspec, &fetch_map_tail, 0); matches = guess_remote_head(find_ref_by_name(remote_refs, "HEAD"), - fetch_map, 1); + fetch_map, REMOTE_GUESS_HEAD_ALL); for (ref = matches; ref; ref = ref->next) { string_list_append(&heads, strip_refshead(ref->name)); } diff --git a/builtin/remote.c b/builtin/remote.c index 1b7aad8838..d2aeb5ba1f 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -511,7 +511,7 @@ static int get_head_names(const struct ref *remote_refs, struct ref_states *stat get_fetch_map(remote_refs, &refspec, &fetch_map_tail, 0); matches = guess_remote_head(find_ref_by_name(remote_refs, "HEAD"), - fetch_map, 1); + fetch_map, REMOTE_GUESS_HEAD_ALL); for (ref = matches; ref; ref = ref->next) string_list_append(&states->heads, abbrev_branch(ref->name)); diff --git a/remote.c b/remote.c index e609cf5c56..1db88beaf3 100644 --- a/remote.c +++ b/remote.c @@ -2297,7 +2297,7 @@ struct ref *get_local_heads(void) struct ref *guess_remote_head(const struct ref *head, const struct ref *refs, - int all) + unsigned flags) { const struct ref *r; struct ref *list = NULL; @@ -2315,8 +2315,10 @@ struct ref *guess_remote_head(const struct ref *head, return copy_ref(find_ref_by_name(refs, head->symref)); /* If a remote branch exists with the default branch name, let's use it. */ - if (!all) { - char *default_branch = repo_default_branch_name(the_repository, 0); + if (!(flags & REMOTE_GUESS_HEAD_ALL)) { + char *default_branch = + repo_default_branch_name(the_repository, + flags & REMOTE_GUESS_HEAD_QUIET); char *ref = xstrfmt("refs/heads/%s", default_branch); r = find_ref_by_name(refs, ref); @@ -2339,7 +2341,7 @@ struct ref *guess_remote_head(const struct ref *head, oideq(&r->old_oid, &head->old_oid)) { *tail = copy_ref(r); tail = &((*tail)->next); - if (!all) + if (!(flags & REMOTE_GUESS_HEAD_ALL)) break; } } diff --git a/remote.h b/remote.h index 6be5031f64..7e4943ae3a 100644 --- a/remote.h +++ b/remote.h @@ -387,15 +387,18 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb, int show_divergence_advice); struct ref *get_local_heads(void); + /* * Find refs from a list which are likely to be pointed to by the given HEAD - * ref. If 'all' is false, returns the most likely ref; otherwise, returns a - * list of all candidate refs. If no match is found (or 'head' is NULL), - * returns NULL. All returns are newly allocated and should be freed. + * ref. If REMOTE_GUESS_HEAD_ALL is set, return a list of all candidate refs; + * otherwise, return the most likely ref. If no match is found (or 'head' is + * NULL), returns NULL. All returns are newly allocated and should be freed. */ +#define REMOTE_GUESS_HEAD_ALL (1 << 0) +#define REMOTE_GUESS_HEAD_QUIET (1 << 1) struct ref *guess_remote_head(const struct ref *head, const struct ref *refs, - int all); + unsigned flags); /* Return refs which no longer exist on remote */ struct ref *get_stale_heads(struct refspec *rs, struct ref *fetch_map); From patchwork Tue Mar 25 00:51:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Tobler X-Patchwork-Id: 14027987 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 66E8978F4C for ; Tue, 25 Mar 2025 00:55:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864136; cv=none; b=IhNJKV+prkKjcpCnQQmK6D16NuEeg7rwPCDTP1N1vzBL+BZNMZXXkb8+U0zp+IB3fBMtZg/I0m75r2IaIJZqdgN5qFpID4zOmQR0pWAQ5acnuWSOA3TBXKUzHKGV5/34LxURTxfTrwDomzU7HW0J94D5GMTyMXnLgyrkhM2N7yc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864136; c=relaxed/simple; bh=/tfQeOtBXIyGyXb1XrI2zC6hkryc020zrhKm9KnxEZE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ar5gQw+v3HnzU9I7YPT5D9tOFcXfC0XPG9UOvXmAJ4wL6HRJOjKo1/i6zOhfQQCTOyzc/KGes6fJ9af3vOLeIYl/1XTwAxJ/UxBD3JIGZtGp+GplKdWBcC8+1ZEsg7jQCHs8RjnyxCL0ssQyeCNiU74Mr0jnQhlksaZPHaFOkfA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TAYBqrvr; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TAYBqrvr" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-72c1818c394so1397668a34.2 for ; Mon, 24 Mar 2025 17:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742864134; x=1743468934; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=b+yJb7o+0zYIr9IgJwgGYZgZIYw/ZrypCB+KVBv9PU4=; b=TAYBqrvrLuFiJQQuZJowCqjLDY1K02s7cBRMe5OWbIqDUGS+qAnY3XO0qIt99sr+nf 4HV7JgXaGprqLNURda5zpbTrp6N0eprxjocAdh2rzdIaLyiPVXa6Sf1BgUEjafqmIyAH qAlia+ZU3wdtj/g+2qmLty2ZXt6uwp3GuT/VPKz+gWrD4qmS10KyVT/Nt1jkeyQbm6go 4nt6jgE8B3wmyk+xOnhJ/pc06GGaEXOkzzJ77U0/BChYaXtA32/FxPqnu2TtpnGIduDk SP5YIkRlZzQS9HEdx9NFUvV200LVxcXDBtJhPJR7R/ZVlyry4Zdwm3hvBUxevTtoPvr8 soYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742864134; x=1743468934; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b+yJb7o+0zYIr9IgJwgGYZgZIYw/ZrypCB+KVBv9PU4=; b=h0mVxtRquuQ+zXbjTKvoEwytMRF7aXrssE2jXIHxGa+juGgXdFT+OPU8NXcyiXOUrs aT+IVL57sLIYbOyMkTpP0uClGyRb0B40d+aGoTtlICpiYWOpiM4JkbM1s3n8mp6E1qb+ iL2ChTB+9YbG3/4HLz5TADZasEmV/C8EVAYEwyxpf1XqTqmW47Tf7UYvTS7W+wlbIrnG kr7ntOfbXC0t1R3GXyxCrCqvY/X6aCdmFS+a8zk+yChLMI2kHaLaunJUAc6soNdNKAhR R8kRc69mpr9VTp30KiGjFCtFn7dti9yZFv32rj+TvaTsbxLE6r6S5yoOoCDOCPBrqw+P A/Jw== X-Gm-Message-State: AOJu0YzXxiQDHj4upX/MK6UvEVp9uvMjJy5HGao5jltW+C29LakKa6db fQCUuW3FE/awPfxFCC+Ph7FK17PEQfItJGR7Ftr7rUiFvMjyggM2/5LfsQ== X-Gm-Gg: ASbGncvMMMEPSK+85MeGAEPmdCcs8UwQx01ZYJk7eYEUTxMdVPvE8ohr9qVtC/uzf2h J1LXYsPuCrv/i33OLWoXAetq5z2LyMP5LgWdmNuZHNy0Vc18PYJO5rz+UnZhiVYk+a2Fqva5ngE +wuR8b4QD6J4rnzLZ3o4zcZD8Gd8vS1o8m5qOSHyUNhDnWJobmijcisUQmlgmzpTsKjxxqv8ql5 jWmrRzhcEv66patLDr4yL32j6xU0o0e1+uG5ivUQHh1cqbGIv7tz1FLlbZLKtQdNR43gjTXPNdW LzFSOLNN7Uj9KTxMmHpDy0aTVqEBUnBplT0dipLdMMJbd3curr9Q X-Google-Smtp-Source: AGHT+IEAi3GUEUW9wpS9NpjTiHCaozR1WsIMioo1tccfTSkVZtgNIso7kCwtJoaZvD/NGcwWYD512Q== X-Received: by 2002:a05:6830:6805:b0:72a:449e:2b6e with SMTP id 46e09a7af769-72c0ae43d98mr9701663a34.5.1742864133656; Mon, 24 Mar 2025 17:55:33 -0700 (PDT) Received: from denethor.localdomain ([136.50.74.45]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-72c0ac7bbafsm1735316a34.65.2025.03.24.17.55.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 17:55:33 -0700 (PDT) From: Justin Tobler To: git@vger.kernel.org Cc: ps@pks.im, phillip.wood123@gmail.com, alan@norbauer.com, Justin Tobler Subject: [PATCH v3 2/3] builtin/clone: suppress unexpected default branch advice Date: Mon, 24 Mar 2025 19:51:47 -0500 Message-ID: <20250325005148.1771502-3-jltobler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250325005148.1771502-1-jltobler@gmail.com> References: <20250321231639.180762-1-jltobler@gmail.com> <20250325005148.1771502-1-jltobler@gmail.com> Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In 199f44cb2ead (builtin/clone: allow remote helpers to detect repo, 2024-02-27), clones started partially initializing the refdb before executing the remote helpers by creating a HEAD file and "refs/" directory. This has resulted in some scenarios where git-clone(1) now prints the default branch name advice message where it previously did not. A side-effect of the HEAD file already existing, is that computation of the default branch name is handled later in execution. This matters because prior to 97abaab5f6 (refs: drop `git_default_branch_name()`, 2024-05-17), the default branch value would be computed during its first execution and cached. Subsequent invocations would simply return the cached value. Since the next `git_default_branch_name()` call site, which is invoked through `guess_remote_head()`, is not configured to suppress the advice message, computing the default branch name results in the advice message being printed. Configure `guess_remote_head()` to suppress the advice message, restoring the previous behavior. Signed-off-by: Justin Tobler --- builtin/clone.c | 7 +++++-- t/t5607-clone-bundle.sh | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/builtin/clone.c b/builtin/clone.c index f14229abf4..baa76f88c3 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -450,7 +450,9 @@ static struct ref *wanted_peer_refs(struct clone_opts *opts, if (head) tail_link_ref(head, &tail); if (option_single_branch) - refs = to_free = guess_remote_head(head, refs, 0); + refs = to_free = + guess_remote_head(head, refs, + REMOTE_GUESS_HEAD_QUIET); } else if (option_single_branch) { local_refs = NULL; tail = &local_refs; @@ -1523,7 +1525,8 @@ int cmd_clone(int argc, } remote_head = find_ref_by_name(refs, "HEAD"); - remote_head_points_at = guess_remote_head(remote_head, mapped_refs, 0); + remote_head_points_at = guess_remote_head(remote_head, mapped_refs, + REMOTE_GUESS_HEAD_QUIET); if (option_branch) { our_head_points_at = find_remote_branch(mapped_refs, option_branch); diff --git a/t/t5607-clone-bundle.sh b/t/t5607-clone-bundle.sh index 82e3621ec5..d709bea753 100755 --- a/t/t5607-clone-bundle.sh +++ b/t/t5607-clone-bundle.sh @@ -211,4 +211,16 @@ test_expect_success 'git bundle v3 rejects unknown capabilities' ' test_grep "unknown capability .unknown=silly." output ' +test_expect_success 'cloning bundle suppresses default branch name advice' ' + test_when_finished "rm -rf bundle-repo clone-repo" && + + git init bundle-repo && + git -C bundle-repo commit --allow-empty -m init && + git -C bundle-repo bundle create repo.bundle --all && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \ + git clone --single-branch bundle-repo/repo.bundle clone-repo 2>err && + + test_grep ! "hint: " err +' + test_done From patchwork Tue Mar 25 00:51:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Tobler X-Patchwork-Id: 14027988 Received: from mail-oa1-f53.google.com (mail-oa1-f53.google.com [209.85.160.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E27B18635D for ; Tue, 25 Mar 2025 00:55:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864137; cv=none; b=useXE2GTD9xUTfQNtHndZoBI+0x7NRPWP2jFUg5S7aDTe6qf1XmNDipzinZTUkQ3IBp5JZ2dN6aUw1MziGQVl9R4WHXqzkzLXSNkDWROwfcK67SX9LfbfwGblcPjcjVigy5ZAvZloWJV+nJMvvSm4xJTa+XocubVBpvE5TTXIiA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742864137; c=relaxed/simple; bh=OhuuvLAzXfBUJtmzxuRYIifux1MuRkp64l+jJcffW0Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dpUXcDuPsC5FZHR/GK3jmdG2prCPZKr7fZc2UmwPkq4EX+vEHIZ0hzR8UmsQ5Tz/ZdGM8QVy5YkvmTBXsmyYrDsffgcHq9ZiVSEECyfUceIszglSeTmPaCKG/8SvV2BBgttrzYIRhz67qZdLF74qbf7chb3VuXRjhTReurcWMHo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=T47a/xkX; arc=none smtp.client-ip=209.85.160.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T47a/xkX" Received: by mail-oa1-f53.google.com with SMTP id 586e51a60fabf-2c7e5fb8c38so895197fac.1 for ; Mon, 24 Mar 2025 17:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742864134; x=1743468934; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yd3oltE/uxbCecctEkRNByk8f5NSGLoeHxJ8n7hm3Ew=; b=T47a/xkXVEAa49o8kkCePpyeF17izEXHpTmTgZx3Pb1AzvLgQcCnmDNZnM8GhCMCVW 5Hj0uY2QtfquZj/IzLTRtrpd6jN8Akaa8/eK4qQM/4CFWYCqGRLjmcqQOHPnLMX73hJj J27oIkwoclkoW28zTm8DcNWsX/9dmITEfo7He5t4a4WEBU58/A9A/7HMbFCH9jqpB0En vaBaBJUfuVetD66Cp/Ajtu4WDMEJ4Cw+MzUsznmEE06lpTAaIAXyUgcbphVerIBCPIHO Wz3T6WLg5O9Y4rm1txyGohk1Ox3oeysjonp/4SBPIC7rUPSk1fwnZKZcrO2wq95SZBC2 XKwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742864134; x=1743468934; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yd3oltE/uxbCecctEkRNByk8f5NSGLoeHxJ8n7hm3Ew=; b=rf5/XxcGhph7Vm1iHTwb6M3iYJ8k0lrSByBCkBFEzzgkr45HXO/2I4G+XsBVzrxwq4 6naHzkmOHdh5kGzm00QVOSEwzCL0zrnn+2vpq64d64ofw8E7Cb5wPqAEQXmhytXXnmsq depgqD687zNluRjCvAVZaT873GSAlBEGlk1FR987bcdUK5rEk9i2ZEmhw9rnwvGkSL8U yax47a8TYgyc2cisXfe9CvXJjdNDVm7icsm2/agoUezZHAjLKN/ybkM9OLU96ZpHdcuU bD7Af84jk/oY+3wpGeWFWbCDxfJJUPI8Byr7sge3nzHBaKkdlgnkuwnT8RdIj0WVMqHJ 5xvw== X-Gm-Message-State: AOJu0YxpHHbT/GdtJ5G6IO5g6mEDFWb85YRq2kx6lvMqgkxabK32ZmUI +L3hzUAHVPmqIJ7LEQYm5zcZq7CNLD2JKIr7hucStKbnDixZ+4UX/XL0ng== X-Gm-Gg: ASbGncv4ETo5LoPNzk7qO+gc7LrXjMxhFaUI0Xjp2lVMnktsB/JFWz6KP75ZVworZJb jsyAYrQF+V1ZLGxUYx+SLsYlBFjYx1xjQDBNenW/VsUK9fuaJ5VPJnLSbQ2fgbQFEWED0qCQ7JT 8An11F8EQHUg94pHEYzhoFqxFlzERPVI8lZk6MrVRAIirnlh9SCFmJ9aTBaSzSZg/j3zFoo8f2G wc2eA3b2lhJ+b69MYI2FEchMtUjtkOx3KQ60KzX//iJX/aEXImhf9ecvVd24vFSNV4Frg0D5IoE l0Wdk4BbIdhTEpBgWLOqgHxEvPv48FpSPx4dC/6Ov5Ecbo8dcgcD X-Google-Smtp-Source: AGHT+IFpCrjLuPQ4DW7l/ab/7Wsmq51VgwAn5EbY3owu1qOfsJiRRik6hLgSuMapP+tHWkFb0kFQVA== X-Received: by 2002:a05:6871:1c2:b0:29d:c832:7ef6 with SMTP id 586e51a60fabf-2c78051a29bmr8995475fac.39.1742864134309; Mon, 24 Mar 2025 17:55:34 -0700 (PDT) Received: from denethor.localdomain ([136.50.74.45]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-72c0ac7bbafsm1735316a34.65.2025.03.24.17.55.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 17:55:33 -0700 (PDT) From: Justin Tobler To: git@vger.kernel.org Cc: ps@pks.im, phillip.wood123@gmail.com, alan@norbauer.com, Justin Tobler Subject: [PATCH v3 3/3] advice: allow disabling default branch name advice Date: Mon, 24 Mar 2025 19:51:48 -0500 Message-ID: <20250325005148.1771502-4-jltobler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250325005148.1771502-1-jltobler@gmail.com> References: <20250321231639.180762-1-jltobler@gmail.com> <20250325005148.1771502-1-jltobler@gmail.com> Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The default branch name advice message is displayed when `repo_default_branch_name()` is invoked and the `init.defaultBranch` config is not set. In this scenario, the advice message is always shown even if the `--no-advice` option is used. Adapt `repo_default_branch_name()` to allow the default branch name advice message to be disabled with the `--no-advice` option and corresponding configuration. Signed-off-by: Justin Tobler --- advice.c | 1 + advice.h | 1 + refs.c | 3 ++- t/t0001-init.sh | 8 ++++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/advice.c b/advice.c index 1df43b7536..e5f0ff8449 100644 --- a/advice.c +++ b/advice.c @@ -51,6 +51,7 @@ static struct { [ADVICE_AM_WORK_DIR] = { "amWorkDir" }, [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName" }, [ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge" }, + [ADVICE_DEFAULT_BRANCH_NAME] = { "defaultBranchName" }, [ADVICE_DETACHED_HEAD] = { "detachedHead" }, [ADVICE_DIVERGING] = { "diverging" }, [ADVICE_FETCH_SET_HEAD_WARN] = { "fetchRemoteHEADWarn" }, diff --git a/advice.h b/advice.h index d233cfc693..727dcecf4a 100644 --- a/advice.h +++ b/advice.h @@ -18,6 +18,7 @@ enum advice_type { ADVICE_AM_WORK_DIR, ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME, ADVICE_COMMIT_BEFORE_MERGE, + ADVICE_DEFAULT_BRANCH_NAME, ADVICE_DETACHED_HEAD, ADVICE_DIVERGING, ADVICE_FETCH_SET_HEAD_WARN, diff --git a/refs.c b/refs.c index 118465271d..bf9a40d6af 100644 --- a/refs.c +++ b/refs.c @@ -664,7 +664,8 @@ char *repo_default_branch_name(struct repository *r, int quiet) if (!ret) { ret = xstrdup("master"); if (!quiet) - advise(_(default_branch_name_advice), ret); + advise_if_enabled(ADVICE_DEFAULT_BRANCH_NAME, + _(default_branch_name_advice), ret); } full_ref = xstrfmt("refs/heads/%s", ret); diff --git a/t/t0001-init.sh b/t/t0001-init.sh index c49d9e0d38..f11a40811f 100755 --- a/t/t0001-init.sh +++ b/t/t0001-init.sh @@ -830,6 +830,14 @@ test_expect_success 'advice on unconfigured init.defaultBranch' ' test_grep "hint: " decoded ' +test_expect_success 'advice on unconfigured init.defaultBranch disabled' ' + test_when_finished "rm -rf no-advice" && + + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \ + git -c advice.defaultBranchName=false init no-advice 2>err && + test_grep ! "hint: " err +' + 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 &&