{"thread":{"id":"62051","subject":"`git remote set-url <remote> <newurl> [<oldurl>]` fails to set first url when multiple urls are selected","startedAt":"2024-09-03T22:48:27Z","lastAt":"2024-09-03T22:48:27Z","messageCount":1,"participants":["Han Jiang"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"502078","messageId":"CANrWfmS3ja=-7PWHESJVYX2YGQbCkX8-xbAgghgoNZZDpwKUoQ@mail.gmail.com","threadId":"62051","inReplyTo":null,"subject":"`git remote set-url <remote> <newurl> [<oldurl>]` fails to set first url when multiple urls are selected","fromName":"Han Jiang","fromEmail":"jhcarl0814@gmail.com","sentAt":"2024-09-03T22:48:15Z","receivedAt":"2024-09-03T22:48:27Z","isPatch":false,"sender":{"key":"jhcarl0814@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5171262?v=4"},"body":"Thank you for filling out a Git bug report!\nPlease answer the following questions to help us understand your issue.\n\nWhat did you do before the bug happened? (Steps to reproduce your issue)\n\ncd '/'; cd '/'; rm --force --recursive -- './test_git'; mkdir \"$_\"; cd \"$_\";\nmkdir --parents -- './server1' './server2' './server3' './server4'\n'./server5' './server6' './client';\ngit -C './client' init './repo'\ngit -C './client/repo' remote --verbose\ngit -C './client/repo' config list --local --show-scope --show-origin\ngit -C './client/repo' remote add server 'file://'\"$(realpath\n'./server1/repo.git')\"\ngit -C './client/repo' config set --local --append 'remote.server.url'\n'file://'\"$(realpath './server2/repo.git')\"\ngit -C './client/repo' config set --local --append\n'remote.server.pushurl' 'file://'\"$(realpath './server3/repo.git')\"\ngit -C './client/repo' config set --local --append\n'remote.server.pushurl' 'file://'\"$(realpath './server4/repo.git')\"\ngit -C './client/repo' config set --local --append\n'url.scheme1://authority1/path1/.insteadOf' 'file://'\"$(realpath\n'./')\"'/'\ngit -C './client/repo' config set --local --append\n'url.scheme2://authority2/path2/.pushInsteadOf' 'file://'\"$(realpath\n'./')\"'/'\ngit -C './client/repo' remote --verbose\ngit -C './client/repo' config list --local --show-scope --show-origin\ngit -C './client/repo' remote get-url server\ngit -C './client/repo' remote get-url --all server\ngit -C './client/repo' remote get-url --push server\ngit -C './client/repo' remote get-url --push --all server\n\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\"\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\" 'server'\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\" 'server2'\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\"\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\" 'server'\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\" 'server4'\ngit -C './client/repo' remote --verbose\ngit -C './client/repo' config list --local --show-scope --show-origin\ngit -C './client/repo' remote get-url server\ngit -C './client/repo' remote get-url --all server\ngit -C './client/repo' remote get-url --push server\ngit -C './client/repo' remote get-url --push --all server\n\nWhat did you expect to happen? (Expected behavior)\n\nhttps://git-scm.com/docs/git-remote says:\nif <oldurl> is given, sets first URL for remote <name> that matches\nregex <oldurl> to <newurl>.\nif no <oldurl> is given, sets first URL to <newurl>.\nso these commands should not fail:\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\"\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\" 'server'\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\"\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\" 'server'\n\nWhat happened instead? (Actual behavior)\n\nthese commands fail:\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\"\ngit -C './client/repo' remote set-url server 'file://'\"$(realpath\n'./server5/repo.git')\" 'server'\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\"\ngit -C './client/repo' remote set-url server --push\n'file://'\"$(realpath './server6/repo.git')\" 'server'\n\nWhat's different between what you expected and what actually happened?\n\nAnything else you want to add:\n\nPlease review the rest of the bug report below.\nYou can delete any lines you don't wish to share.\n\n\n[System Info]\ngit version:\ngit version 2.46.0.windows.1\ncpu: x86_64\nbuilt from commit: 2e6a859ffc0471f60f79c1256f766042b0d5d17d\nsizeof-long: 4\nsizeof-size_t: 8\nshell-path: D:/git-sdk-64-build-installers/usr/bin/sh\nfeature: fsmonitor--daemon\nlibcurl: 8.9.0\nOpenSSL: OpenSSL 3.2.2 4 Jun 2024\nzlib: 1.3.1\nuname: Windows 10.0 22631\ncompiler info: gnuc: 14.1\nlibc info: no libc information available\n$SHELL (typically, interactive shell): C:\\Program Files\\Git\\usr\\bin\\bash.exe\n\n\n[Enabled Hooks]\nnot run from a git repository - no hooks to show\n"}]}