Skip to content
  • Jonathan Tan's avatar
    rev-list: support termination at promisor objects · df11e196
    Jonathan Tan authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Teach rev-list to support termination of an object traversal at any
    object from a promisor remote (whether one that the local repo also has,
    or one that the local repo knows about because it has another promisor
    object that references it).
    
    This will be used subsequently in gc and in the connectivity check used
    by fetch.
    
    For efficiency, if an object is referenced by a promisor object, and is
    in the local repo only as a non-promisor object, object traversal will
    not stop there. This is to avoid building the list of promisor object
    references.
    
    (In list-objects.c, the case where obj is NULL in process_blob() and
    process_tree() do not need to be changed because those happen only when
    there is a conflict between the expected type and the existing object.
    If the object doesn't exist, an object will be synthesized, which is
    fine.)
    
    Signed-off-by: default avatarJonathan Tan <jonathantanmy@google.com>
    Signed-off-by: default avatarJeff Hostetler <jeffhost@microsoft.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    df11e196