• Show log

    Commit

  • Hash : 32def5af
    Author : Russell Belfer
    Date : 2012-10-24T17:37:07

    Fix checkout behavior when its hands are tied
    
    So, @nulltoken created a failing test case for checkout that
    proved to be particularly daunting.  If checkout is given only
    a very limited strategy mask (e.g. just GIT_CHECKOUT_CREATE_MISSING)
    then it is possible for typechange/rename modifications to leave it
    unable to complete the request.  That's okay, but the existing code
    did not have enough information not to generate an error (at least
    for tree/blob conflicts).
    
    This led me to a significant reorganization of the code to handle
    the failing case, but it has three benefits:
    
    1. The test case is handled correctly (I think)
    2. The new code should actually be much faster than the old code
       since I decided to make checkout aware of diff list internals.
    3. The progress value accuracy is hugely increased since I added
       a fourth pass which calculates exactly what work needs to be
       done before doing anything.