bundlespec: drop externalnames flag
Always provide the human readable version of compression and version.
Add the translated wire format name in the new wirecompression and
wireversion fields.
Differential Revision: https://phab.mercurial-scm.org/D3392
revlog: make shortest() take a full binary nodeid (API)
Follow-up to
7b2955624777 (scmutil: make shortesthexnodeidprefix()
take a full binary nodeid, 2018-04-14).
Differential Revision: https://phab.mercurial-scm.org/D3403
lfs: add the 'Authorization' property to the Batch API response, if present
The client copies all of these properties under 'header' to the HTTP Headers of
the subsequent GET or PUT request that it performs. That allows the Basic HTTP
authentication used to authorize the Batch API request to also authorize the
upload/download action.
There's likely further work to do here. There's an 'authenticated' boolean key
in the Batch API response that can be set, and there is an 'LFS-Authenticate'
header that is used instead of 'WWW-Authenticate'[1]. (We likely need to
support both, since some hosting solutions are likely to only respond with the
latter.) In any event, this works with SCM Manager, so there is real world
benefit.
I'm limiting the headers returned to 'Basic', because that's all the lfs spec
calls out. In practice, I've seen gitbucket emit custom header content[2].
[1] https://github.com/git-lfs/git-lfs/blob/master/docs/api/batch.md#response-errors
[2] https://github.com/gitbucket/gitbucket/blob/
35655f33c7713f08515ed640ece0948acd6d6168/src/main/scala/gitbucket/core/servlet/GitRepositoryServlet.scala#L119
lfs: enable the final download count status message
At this point, I think all of the core commands are prefetching, except grep and
verify. Verify will need some special handling, in case the revlogs are
corrupt.
Grep has an issue that still needs to be debugged, but we probably need to give
the behavior some thought too- it would be a shame to have to download
everything in order to search. I think the benefit of having this info for all
commands outweighs extra printing in a command that is arguably not well
behaved in this context anyway.
diff: invoke the file prefetch hook
By invoking it this deep within the command, we pick up both subrepo and hgweb
support, as well as --patch support for commands that implement logopts.
export: invoke the file prefetch hook
cmdutil.exportfile() is only called by shelve, mq and patchbomb. Those are
unlikely to mix with lfs, but it may as well be invoked there for completeness.
scmutil: teach the file prefetch hook to handle multiple commits
The remainder of the commands that need prefetch deal with multiple revisions.
I initially coded this as a separate hook, but then it needed a list of files
to handle `diff` and `grep`, so it didn't seem worth keeping them separate.
Not every matcher will emit bad file messages (some are built from a list of
files that are known to exist). But it seems better to filter this in one place
than to push this on either each caller or each hook implementation.