Skip to content
  • Junio C Hamano's avatar
    diff-index --quiet: learn the "stop feeding the backend early" logic · b4194828
    Junio C Hamano authored
    
    
    A negative return from the unpack callback function usually means unpack
    failed for the entry and signals the unpack_trees() machinery to fail the
    entire merge operation, immediately and there is no other way for the
    callback to tell the machinery to exit early without reporting an error.
    
    This is what we usually want to make a merge all-or-nothing operation, but
    the machinery is also used for diff-index codepath by using a custom
    unpack callback function. And we do sometimes want to exit early without
    failing, namely when we are under --quiet and can short-cut the diff upon
    finding the first difference.
    
    Add "exiting_early" field to unpack_trees_options structure, to signal the
    unpack_trees() machinery that the negative return value is not signaling
    an error but an early return from the unpack_trees() machinery. As this by
    definition hasn't unpacked everything, discard the resulting index just
    like the failure codepath.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    b4194828