• Jonathan Tan's avatar
    introduce fetch-object: fetch one promisor object · 88e2f9ed
    Jonathan Tan authored
    Introduce fetch-object, providing the ability to fetch one object from a
    promisor remote.
    
    This uses fetch-pack. To do this, the transport mechanism has been
    updated with 2 flags, "from-promisor" to indicate that the resulting
    pack comes from a promisor remote (and thus should be annotated as such
    by index-pack), and "no-dependents" to indicate that only the objects
    themselves need to be fetched (but fetching additional objects is
    nevertheless safe).
    
    Whenever "no-dependents" is used, fetch-pack will refrain from using any
    object flags, because it is most likely invoked as part of a dynamic
    object fetch by another Git command (which may itself use object flags).
    An alternative to this is to leave fetch-pack alone, and instead update
    the allocation of flags so that fetch-pack's flags never overlap with
    any others, but this will end up shrinking the number of flags available
    to nearly every other Git command (that is, every Git command that
    accesses objects), so the approach in this commit was used instead.
    
    This will be tested in a subsequent commit.
    Signed-off-by: default avatarJonathan Tan <jonathantanmy@google.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    88e2f9ed
fetch-object.c 661 Bytes