Skip to content
  • Duy Nguyen's avatar
    untracked cache: mark what dirs should be recursed/saved · 26cb0182
    Duy Nguyen authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    If we redo this thing in a functional style, we would have one struct
    untracked_dir as input tree and another as output. The input is used
    for verification. The output is a brand new tree, reflecting current
    worktree.
    
    But that means recreate a lot of dir nodes even if a lot could be
    shared between input and output trees in good cases. So we go with the
    messy but efficient way, combining both input and output trees into
    one. We need a way to know which node in this combined tree belongs to
    the output. This is the purpose of this "recurse" flag.
    
    "valid" bit can't be used for this because it's about data of the node
    except the subdirs. When we invalidate a directory, we want to keep
    cached data of the subdirs intact even though we don't really know
    what subdir still exists (yet). Then we check worktree to see what
    actual subdir remains on disk. Those will have 'recurse' bit set
    again. If cached data for those are still valid, we may be able to
    avoid computing exclude files for them. Those subdirs that are deleted
    will have 'recurse' remained clear and their 'valid' bits do not
    matter.
    
    Signed-off-by: default avatarNguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    26cb0182