Skip to content
  • Johan Herland's avatar
    Notes API: prune_notes(): Prune notes that belong to non-existing objects · 00fbe636
    Johan Herland authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When an object is made unreachable by Git, any notes that annotate that object
    are not automagically made unreachable, since all notes are always trivially
    reachable from a notes ref. In order to remove notes for non-existing objects,
    we therefore need to add functionality for traversing the notes tree and
    explicitly removing references to notes that annotate non-reachable objects.
    Thus the notes objects themselves also become unreachable, and are removed
    by a later garbage collect.
    
    prune_notes() performs this traversal (by using for_each_note() internally),
    and removes the notes in question from the notes tree.
    
    Note that the effect of prune_notes() is not persistent unless a subsequent
    call to write_notes_tree() is made.
    
    Signed-off-by: default avatarJohan Herland <johan@herland.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    00fbe636