Re: 2.37.2 can't "git pull" but 2.18.0 can

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx)


On Wed, Sep 7, 2022 at 8:59 AM Johannes Schindelin
<Johannes.Schindelin@xxxxxx> wrote:
>
> Hi Lana,
>
> as per usual, replies inline.
>
> On Tue, 6 Sep 2022, Lana Deere wrote:
>
> > 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,4
> > > 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@xxxxxxxxx
> > 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/master
>
> At 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,
> Johannes
>
> > 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@xxxxxxxxx)
> >
> > On Fri, Sep 2, 2022 at 4:16 PM brian m. carlson
> > <sandals@xxxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > On 2022-09-02 at 19:27:55, Lana Deere wrote:
> > > > 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
> >



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux