On 05/09/2024 23:24, Han Jiang wrote:
A way to get into the state is `git remote set-branches <remote>`
(followed by zero <branch>es), which removes `remote.server.fetch`
configuration variable.
Oh, I wonder if that is a feature or a bug? I see we don't sanity check
the branch name either so we'll happily create refspecs containing any
old rubbish. I'll send a patch series that fixes the original bug and
checks the branch names later this week.
Best Wishes
Phillip
After that, `git remote set-branches <remote>
<branch>…` does not work. (But `git remote set-branches --add` can be
used to get out of the corrupted state.)
Shortened version of the example:
git remote add server git@xxxxxxxxxxx
git config list --local
git remote set-branches server
git config list --local
git remote set-branches server branch1 branch2
git config list --local
On Thu, Sep 5, 2024 at 9:07 PM Phillip Wood <phillip.wood123@xxxxxxxxx> wrote:
On 03/09/2024 11:37, Han Jiang 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)
It is always helpful to show how to reproduce a bug but please try and
aim for a minimal reproduction recipe. It is much easier to follow if
you show which output lines come from which command. In this case one
can reproduce the issue with
$ git remote add test git@xxxxxxxxxxx
$ git config --get-all remote.test.fetch
+refs/heads/*:refs/remotes/test/*
$ git config --unset-all remote.test.fetch
$ git config --get-all remote.test.fetch
$ git remote set-branches test main topic
$ git config --get-all remote.test.fetch
I haven't looked into what causes this. I wonder how likely users are to
be affected - how did you get into a state where there was no fetch
refspec set for your remote?
Best Wishes
Phillip
cd '/'; cd '/'; rm --force --recursive -- './test_git'; mkdir "$_"; cd "$_";
mkdir --parents -- './server' './client';
git -C './client' init './repo'
git -C './client/repo' remote --verbose
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote add server 'file://'"$(realpath
'./server/repo.git')"
git -C './client/repo' remote --verbose
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches server branch1 branch2
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches --add server branch3 branch4
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches --add server branch3 branch4
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches server
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches server branch1 branch2
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches --add server branch3 branch4
git -C './client/repo' config list --local --show-scope --show-origin
git -C './client/repo' remote set-branches --add server branch3 branch4
git -C './client/repo' config list --local --show-scope --show-origin
What did you expect to happen? (Expected behavior)
(local config has branch1 and branch2:)
remote.server.fetch=+refs/heads/branch1:refs/remotes/server/branch1
remote.server.fetch=+refs/heads/branch2:refs/remotes/server/branch2
remote.server.fetch=+refs/heads/branch3:refs/remotes/server/branch3
remote.server.fetch=+refs/heads/branch4:refs/remotes/server/branch4
remote.server.fetch=+refs/heads/branch3:refs/remotes/server/branch3
remote.server.fetch=+refs/heads/branch4:refs/remotes/server/branch4
What happened instead? (Actual behavior)
(local config does not have branch1 and branch2:)
remote.server.fetch=+refs/heads/branch3:refs/remotes/server/branch3
remote.server.fetch=+refs/heads/branch4:refs/remotes/server/branch4
remote.server.fetch=+refs/heads/branch3:refs/remotes/server/branch3
remote.server.fetch=+refs/heads/branch4:refs/remotes/server/branch4
What's different between what you expected and what actually happened?
Anything else you want to add:
Please review the rest of the bug report below.
You can delete any lines you don't wish to share.
[System Info]
git version:
git version 2.46.0.windows.1
cpu: x86_64
built from commit: 2e6a859ffc0471f60f79c1256f766042b0d5d17d
sizeof-long: 4
sizeof-size_t: 8
shell-path: D:/git-sdk-64-build-installers/usr/bin/sh
feature: fsmonitor--daemon
libcurl: 8.9.0
OpenSSL: OpenSSL 3.2.2 4 Jun 2024
zlib: 1.3.1
uname: Windows 10.0 22631
compiler info: gnuc: 14.1
libc info: no libc information available
$SHELL (typically, interactive shell): C:\Program Files\Git\usr\bin\bash.exe
[Enabled Hooks]
not run from a git repository - no hooks to show