Skip to content
  • Shawn O. Pearce's avatar
    Smart fetch over HTTP: client side · 249b2004
    Shawn O. Pearce authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    The git-remote-curl backend detects if the remote server supports
    the git-upload-pack service, and if so, runs git-fetch-pack locally
    in a pipe to generate the want/have commands.
    
    The advertisements from the server that were obtained during the
    discovery are passed into git-fetch-pack before the POST request
    starts, permitting server capability discovery and enablement.
    
    Common objects that are discovered are appended onto the request as
    have lines and are sent again on the next request.  This allows the
    remote side to reinitialize its in-memory list of common objects
    during the next request.
    
    Because all requests are relatively short, below git-remote-curl's
    1 MiB buffer limit, requests will use the standard Content-Length
    header and be valid HTTP/1.0 POST requests.  This makes the fetch
    client more tolerant of proxy servers which don't support HTTP/1.1
    or the chunked transfer encoding.
    
    Signed-off-by: default avatarShawn O. Pearce <spearce@spearce.org>
    CC: Daniel Barkalow <barkalow@iabervon.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    249b2004