Skip to content
  • Jeff King's avatar
    Revert "stash: require a clean index to apply" · 19376104
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    This reverts commit ed178ef1.
    
    That commit was an attempt to improve the safety of applying
    a stash, because the application process may create
    conflicted index entries, after which it is hard to restore
    the original index state.
    
    Unfortunately, this hurts some common workflows around "git
    stash -k", like:
    
        git add -p       ;# (1) stage set of proposed changes
        git stash -k     ;# (2) get rid of everything else
        make test        ;# (3) make sure proposal is reasonable
        git stash apply  ;# (4) restore original working tree
    
    If you "git commit" between steps (3) and (4), then this
    just works. However, if these steps are part of a pre-commit
    hook, you don't have that opportunity (you have to restore
    the original state regardless of whether the tests passed or
    failed).
    
    It's possible that we could provide better tools for this
    sort of workflow. In particular, even before ed178ef1, it
    could fail with a conflict if there were conflicting hunks
    in the working tree and index (since the "stash -k" puts the
    index version into the working tree, and we then attempt to
    apply the differences between HEAD and the old working tree
    on top of that). But the fact remains that people have been
    using it happily for a while, and the safety provided by
    ed178ef1
    
     is simply not that great. Let's revert it for now.
    In the long run, people can work on improving stash for this
    sort of workflow, but the safety tradeoff is not worth it in
    the meantime.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    19376104