Description
Setup
- Which version of Git for Windows are you using? Is it 32-bit or 64-bit?
git version 2.21.0.windows.1
cpu: x86_64
built from commit: 2481c4cbe949856f270a3ee80c802f5dd89381aa
sizeof-long: 4
sizeof-size_t: 8
- Which version of Windows are you running? Vista, 7, 8, 10? Is it 32-bit or 64-bit?
Win 7 and Win10, both 64-bit
- What options did you set as part of the installation? Or did you choose the
defaults?
Editor Option: VIM
Custom Editor Path:
Path Option: BashOnly
Plink Path: C:\Program Files\PuTTY\plink.exe
SSH Option: Plink
CURL Option: OpenSSL
CRLF Option: CRLFAlways
Bash Terminal Option: MinTTY
Performance Tweaks FSCache: Enabled
Use Credential Manager: Disabled
Enable Symlinks: Disabled
- Any other interesting things about your environment that might be related
to the issue you're seeing?
Lots of submodules
One submodule reference in parent module points to a reference in the submodule that has not been pushed, e.g because it was an intermediate branch while rebasing
Alternatively, reference a commit in an added sub module repository, which have not yet been cloned.
Details
- Which terminal/shell are you running Git from? e.g Bash/CMD/PowerShell/other
Git Bash
- What commands did you run to trigger this issue? If you can provide a
Minimal, Complete, and Verifiable example
this will help us understand the issue.
One of these
git fetch
git pull
- What did you expect to occur after running these commands?
Ordinary git fetch of current module and relevant submodules, optionally doing a pull of the current branch afterwards
- What actually happened instead?
Fetch prints this error message:
error: Server does not allow request for unadvertised object deadbeef....
And exits with an error
- If the problem was occurring with a specific repository, can you provide the
URL to that repository to help us with testing?
Sorry, all URLs are internal
Further details:
I have three main objections about this error message:
-
It is printed (and exits with error) despite the fact the the missing commit is not necessary for the resulting checkout. I do not mind a failed checkout if the actual checkout references a missing commit. And I have git hooks server side that prevent this for our production branch.
-
The error message causes our autobuild buildsystem to fail (just the Windows workers currently, all others are using older git versions). Next build will work, since the missing commit is no longer an issue. If this error was a serious matter, then it should fail every fetch, not just the first (and no, I am not suggesting it should do so)
-
The error message provides absolutely no context. Which repository referenced the missing commit? Which commit in the repository did so? Which submodule reference? What is the URL of the repository that failed to provide the commit?
The most recent instance of this happened when I added a new module to a module set, one which had not yet been cloned (and in many cases was not going to be cloned in that location in the several weeks) by the checkout directory. This will result in builds failing on at least 9 different machines in the next few days.
IMO this error should be changed to a warning.