There does seem to be a bug in the following situation (I'm using the nightly build 2.1.0.201209142322):
- Modify a file
- Stash the modification
- Modify the same file in a conflicting way
- Stage and commit
- Apply Stashed Changes
Expected: conflict that needs resolution
Found: the committed change is simply replaced with the stash contents.
What it seems to be doing is putting the index back to the pre-commit state for the file in question, effectively undoing the commit, and only then applying the stash. Thus no conflict.
The problem is specific to committed changes. If the conflicting change is staged but not committed, Apply Stashed Changes correctly creates a conflict for the user to resolve.
If the conflicting change is unstaged, Apply Stashed Changes does the right thing functionally (ie nothing) but doesn't inform the user that the operation isn't valid. Looks like maybe a dialog is shown but it disappears instantly
Nothing has happened since. It's a pretty significant problem, can't really use "Apply Stashed Changes" at all unless you're sure in advance that there's no conflict.