Skip to content

Git 2.21.0 prints error message "Server does not allow request for unadvertised object" #2218

Closed
@YngveNPettersen

Description

@YngveNPettersen
  • [ x] I was not able to find an open or closed issue matching what I'm seeing

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

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:

  1. 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.

  2. 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)

  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions