Thank you, Justin and Elijah. I really appreciate you digging in. > On Mar 19, 2025, at 6:40 PM, Justin Tobler <jltobler@xxxxxxxxx> wrote: > > On 25/03/19 07:45AM, Elijah Newren wrote: >>> On Wed, Mar 19, 2025 at 2:59 AM <alan@xxxxxxxxxxxx> wrote: >>> >>> Thank you for filling out a Git bug report! >>> Please answer the following questions to help us understand your issue. >>> >>> What did you do before the bug happened? (Steps to reproduce your issue) >>> `GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=/dev/null GIT_CONFIG_NOSYSTEM=0 GIT_ADVICE=0 git clone --quiet /Volumes/sourcecode/npm-packages/packages/repository-tools/node_modules/.cache/@altano/repository-tools/2078b9db1d71a4f4a5422e25a7016c75/git.bundle .` >>> >>> What did you expect to happen? (Expected behavior) >>> I would expect the clone to happen without any hints because I provided both `GIT_ADVICE=0` _and_ `--quiet` to the command. Both should suppress the hint. >>> >>> What happened instead? (Actual behavior) >>> I received the "hint: Using 'master' as the name for the initial branch. This default branch name" on stderr, which caused my tests to fail (I am using git programmatically in a test). >>> >>> What's different between what you expected and what actually happened? >>> The hint on stderr was displayed. >>> >>> Anything else you want to add: >>> This behavior is NOT observed on git v2.44.0 and is observed on git v2.48.1. So the bug started occurring somewhere in between those versions. I can find the exact version the bug was introduced manually with some effort if that would be helpful. >> >> Bisects to 199f44cb2ead (builtin/clone: allow remote helpers to detect >> repo, 2024-02-27); cc'ing its author. > > It looks like prior to 199f44cb2ead (builtin/clone: allow remote helpers > to detect repo, 2024-02-27), the default branch name advice message > would never be printed when cloning from a bundle regardless of whether > `--quiet` option was set. This particual advice message also doesn't > respect `GIT_ADVICE` either. So something about the change has made the > message start printing when it previously did not. > > Digging a bit further, this change started partially initializing the > refdb with a HEAD file which had a side-effect of changing the location > where the first `git_default_branch_name()` was invoked. This matters > because `git_default_branch_name()` only computes the default branch > name once and uses a cached value for subsequent invocations. > > Previously, `create_reference_database()` was the first > `git_default_branch_name()` call site and was configured to always > suppress the advice message. Due to the refdb being partially > initialized with a HEAD file, `create_reference_database()` stopped > invoking `git_default_branch_name()` altogether and the default branch > name computation was defferred to a subsequent potential call site > `guess_remote_head()`. At this location, `git_default_branch_name()` is > configured to not suppress advice messages. > > Also, `guess_remote_head()` only invokes `git_default_branch_name()` in > cases where the transport is unable to figure out the remote HEAD and > must guess. This explains why the advice message gets printed for bundle > clones, but not all clones. > > One option to fix this would be to adapt `guess_remote_head()` to > support configuring the underlying `git_default_branch_name()`, which > has since been renamed to `repo_default_branch_name()`, to be quiet and > suppress the advice message. The call site in clone could then be > updated accordingly. > > I'll submit a patch that does this. > > -Justin