Skip to content
  • Johan Herland's avatar
    fast-import: Fix incorrect fanout level when modifying existing notes refs · 18386857
    Johan Herland authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    This fixes the bug uncovered by the tests added in the previous two patches.
    
    When an existing notes ref was loaded into the fast-import machinery, the
    num_notes counter associated with that ref remained == 0, even though the
    true number of notes in the loaded ref was higher. This caused a fanout
    level of 0 to be used, although the actual fanout of the tree could be > 0.
    Manipulating the notes tree at an incorrect fanout level causes removals to
    silently fail, and modifications of existing notes to instead produce an
    additional note (leaving the old object in place at a different fanout level).
    
    This patch fixes the bug by explicitly counting the number of notes in the
    notes tree whenever it looks like the num_notes counter could be wrong (when
    num_notes == 0). There may be false positives (i.e. triggering the counting
    when the notes tree is truly empty), but in those cases, the counting should
    not take long.
    
    Signed-off-by: default avatarJohan Herland <johan@herland.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    18386857