bug: submodule update fails to fetch
- From
- Sergei Golubchik <vuvova@gmail.com>
- Date
- Jun 22, 2023, 11:09 UTC
- Message-ID
- <ZJQr0_aC-NlLXDgj@pweza>
Hi,
Sometimes (my local repository has lots of branches) after switching branches
git submodule update --init --recursive
fails with something like
fatal: transport 'file' not allowed fatal: Fetched in submodule path 'wsrep-lib', but it did not contain e238c0d240c2557229b0523a4a032f3cf8b41639. Direct fetching of that commit failed.
the submodule transport is not 'file' (it's https) and the direct fetching of the commit actually works:
cd wsrep-lib git fetch origin e238c0d240c2557229b0523a4a032f3cf8b41639 git checkout e238c0d240c2557229b0523a4a032f3cf8b41639 cd ..
after that
git submodule update --init --recursive
succeeds. This happens deterministically, but depends on the old and new commits in the last checkout. As a workaround we've had to change our CI to do
git submodule foreach --recursive 'git fetch origin $sha1;git checkout --force FETCH_HEAD'
This is the bit from `git bugreport`:
[System Info] git version: git version 2.39.3 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.15.88-gentoo #1 SMP Wed Feb 15 16:42:45 CET 2023 x86_64 compiler info: gnuc: 11.3 libc info: glibc: 2.36 $SHELL (typically, interactive shell): /bin/bash
[Enabled Hooks]
Regards, Sergei