stash: require a clean index to apply
commited178ef13a26136d86ff4e33bb7b1afb5033f908
authorJeff King <peff@peff.net>
Wed, 22 Apr 2015 19:31:02 +0000 (22 15:31 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Apr 2015 20:38:58 +0000 (22 13:38 -0700)
tree9f938feddf21fa4a73cfa243d46ecb54639176c0
parent88bab59c5bf8de2a1577c3134f4dff1e225409e2
stash: require a clean index to apply

If you have staged contents in your index and run "stash
apply", we may hit a conflict and put new entries into the
index. Recovering to your original state is difficult at
that point, because tools like "git reset --keep" will blow
away anything staged.  We can make this safer by refusing to
apply when there are staged changes.

It's possible we could provide better tooling here, as "git
stash apply" should be writing only conflicts to the index
(so we know that any stage-0 entries are potentially
precious). But it is the odd duck; most "mergy" commands
will update the index for cleanly merged entries, and it is
not worth updating our tooling to support this use case
which is unlikely to be of interest (besides which, we would
still need to block a dirty index for "stash apply --index",
since that case _would_ be ambiguous).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-stash.sh
t/t3903-stash.sh