• Show log

    Commit

  • Hash : 37da3685
    Author : Russell Belfer
    Date : 2014-04-22T21:51:54

    Make checkout match diff for untracked/ignored dir
    
    When diff finds an untracked directory, it emulates Git behavior
    by looking inside the directory to see if there are any untracked
    items inside it. If there are only ignored items inside the dir,
    then diff considers it ignored, even if there is no direct ignore
    rule for it.
    
    Checkout was not copying this behavior - when it found an untracked
    directory, it just treated it as untracked.  Unfortunately, when
    combined with GIT_CHECKOUT_REMOVE_UNTRACKED, this made is seem that
    checkout (and stash, which uses checkout) was removing ignored
    items when you had only asked it to remove untracked ones.
    
    This commit moves the logic for advancing past an untracked dir
    while scanning for non-ignored items into an iterator helper fn,
    and uses that for both diff and checkout.