Hello Yngve, > Le 18 mai 2020 à 05:20, Yngve N. Pettersen <yngve@xxxxxxxxxxx> a écrit : > > Hello all, > > A while back I reported an issue to the Windows Git project <https://github.com/git-for-windows/git/issues/2218> that I observed in Git for Windows 2.21. > > The error message "Server does not allow request for unadvertised object" is reported when a commit updating a submodule pointer points to a commit that does not exist in the repository for that submodule, even if later commits in the branch points to a commit that do exist in the submodule repo. > > This circumstance can easily occur if a developer (e.g) > > * interactively rebases a branch "foo" in the submodule (e.g to integrate commits from another branch before a larger rebase) > * commits the resulting submodule pointer "A" in the branch to the parent repo > * then do further rebasing in the submodule, e.g to move up on top of the "bar" branch > * commits that pointer "B" to the parent repo > * forgets to squash the history in the parent repo > * pushes the updated submodule "foo" branch to the online repo. (NOTE: "B" is pushed, not "A") > * pushes the parent module branch to its online repo > > When the parent repo is pulled by another developer, or an autobuild system, the fetch operation fails with the message "Server does not allow request for unadvertised object". A second fetch will complete successfully. > > IMO this kind of check should only happen if a commit with pointer to a missing submodule is actively checked out. At most the above message should be a warning, not a fatal error. I think that's a good idea. Another thing that I find confusing with this message is that it can be taken to mean that the server does not support fetching "unadvertised objects", i.e. `uploadpack.allow{Tip,Reachable,Any}SHA1InWant` is false, when in fact the object is simply inexistent... Philippe.