• Show log

    Commit

  • Hash : 5f959dca
    Author : John Fultz
    Date : 2016-12-29T19:26:50

    Fix handling of GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH flag.
    
    git_checkout_tree() sets up its working directory iterator to respect the
    pathlist if GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH is present, which is great.
    What's not so great is that this iterator is then used side-by-side with
    an iterator created by git_checkout_iterator(), which did not set up its
    pathlist appropriately (although the iterator mirrors all other iterator
    options).
    
    This could cause git_checkout_tree() to delete working tree files which
    were not specified in the pathlist when GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH
    was used, as the unsynchronized iterators causes git_checkout_tree() to think
    that files have been deleted between the two trees.  Oops.
    
    And added a test which fails without this fix (specifically, the final check
    for "testrepo/README" to still be present fails).