Re: 2.37.2 can't "git pull" but 2.18.0 can
From: Lana Deere <hidden>
Date: 2022-09-07 16:01:51
As you guessed, the only line is "not-for-merge". $ cat .git/FETCH_HEAD 4a537c911d9b90f002b682badf9a9121f62622d7 not-for-merge branch 'master' of http://githost:7990/scm/dp/sw What does that mean? .. Lana (lana.deere@gmail.com) On Wed, Sep 7, 2022 at 8:59 AM Johannes Schindelin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Hi Lana, as per usual, replies inline. On Tue, 6 Sep 2022, Lana Deere wrote:quoted
The 'git ls-remote origin' command on both produces about 3600 lines of output which appears to consist of all the branches in our repo. The two outputs are identical according to diff. Both include a single mention of the switch-to-qt5 branch, $ diff /tmp/ls-remote* [no output here] $ grep switch-to-qt5 /tmp/ls-remote.* /tmp/ls-remote.2.18:6a9363081d05c313ba6a6ac59183193f1340bb1f refs/heads/feature/switch-to-qt5 /tmp/ls-remote.2.37:6a9363081d05c313ba6a6ac59183193f1340bb1f refs/heads/feature/switch-to-qt5 The 'git config -l' from both versions is almost the same - two lines have moved around. $ diff /tmp/config* 1,2d0 < filter.lfs.required=true < filter.lfs.clean=git-lfs clean -- %f 4a3,4quoted
filter.lfs.required=true filter.lfs.clean=git-lfs clean -- %f$ cat /tmp/config.2.37 filter.lfs.smudge=git-lfs smudge -- %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true filter.lfs.clean=git-lfs clean -- %f user.name=Lana Deere user.email=lana.deere@gmail.com filter.lfs.clean=git-lfs clean -- %f filter.lfs.smudge=git-lfs smudge -- %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true color.branch=false color.diff=false color.grep=false color.interactive=false color.pager=false color.showbranch=false color.status=false color.ui=false core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true remote.origin.url=http://lana@githost:7990/scm/dp/sw.git remote.origin.fetch=+refs/heads/master:refs/remotes/origin/masterAt first I thought that this would be the root cause: `feature/switch-to-qt5` is not included in the refs to fetch. But then I added a test case for that specific scenario: -- snip --diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh index 081808009b2..6e6ddeb7e63 100755 --- a/t/t5520-pull.sh +++ b/t/t5520-pull.sh@@ -218,6 +218,17 @@ test_expect_success 'fail if upstream branch does not exist' ' test_cmp expect file ' +test_expect_success 'fetch upstream branch even if refspec excludes it' ' + git branch tirili && + git branch tirili2 && + git init -b tirili downstream && + git -C downstream remote add -t tirili origin "file://$(pwd)/.git" && + git -C downstream config branch.tirili.remote origin && + git -C downstream config branch.tirili.merge refs/heads/tirili2 && + git -C downstream pull 2>err && + ! grep "configuration specifies to merge" err +' + test_expect_success 'fail if the index has unresolved entries' ' git checkout -b third second^ && test_when_finished "git checkout -f copy && git branch -D third" && -- snap --And that test case passes! The reason is that we specifically add the ref that needs to be merged to the list of refs to be fetched: https://github.com/git/git/blob/v2.37.2/builtin/fetch.c#L605-L614 Now, clearly it is not quite working as intended in your scenario. The message you pasted is produced by the code in https://github.com/git/git/blob/v2.37.2/builtin/pull.c#L421-L494, which is only entered if there are no entries in `.git/FETCH_HEAD` except `not-for-merge` ones. Lana, would you mind pasting the contents of `.git/FETCH_HEAD` just after a failed `git pull`? Ciao, Johannesquoted
branch.master.remote=origin branch.master.merge=refs/heads/master branch.feature/switch-to-qt5.remote=origin branch.feature/switch-to-qt5.merge=refs/heads/feature/switch-to-qt5 .. Lana (lana.deere@gmail.com) On Fri, Sep 2, 2022 at 4:16 PM brian m. carlson [off-list ref] wrote:quoted
On 2022-09-02 at 19:27:55, Lana Deere wrote:quoted
I'm testing an upgrade to git 2.37.2 from the current version we're using of 2.18.0. When I try to pull in my development tree, 2.37.2 gives me an error but 2.18.0 things all is fine: $ /tools/linux-x86_64/git/2.37.2/bin/git pull Your configuration specifies to merge with the ref 'refs/heads/feature/switch-to-qt5' from the remote, but no such ref was fetched. $ /tools/linux-x86_64/git/2.18.0/bin/git pull From http://githost:7990/scm/dp/sw * branch feature/switch-to-qt5 -> FETCH_HEAD Already up to date. Anyone have any ideas about this? All I could find on google was a suggestion that the "no such ref" message indicates the remote branch was deleted, but that's not the case here.Can you provide the output of `git ls-remote origin` (assuming that's the remote you're using) and `git config -l` (the latter with both versions)? I don't know of any reason why Git 2.37 should be broken in this regard, but I suspect that there's a difference in configuration between the two leading to this. -- brian m. carlson (he/him or they/them) Toronto, Ontario, CA