Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Stash apply requires clean index #5501

Open
@wmertens

Description

@wmertens

Reproduction steps

try to apply a stash when index is dirty. This is specifically prevented by

if ((error = ensure_clean_index(repo, repo_index)) < 0)
which was added in #3259

However, git allows this:

3066 $ git init
Initialized empty Git repository in /home/wmertens/testgit/.git/
3067 $ touch bar
3071 $ git commit  -a -m 'hi'
[master (root-commit) b37d552] hi
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
3082 $ echo hi  > foo
3084 $ git add foo
3088 $ git stash
Saved working directory and index state WIP on master: b37d552 hi
3089 $ echo boom  > foo
3091 $ git add foo
3093 $ git stash apply
CONFLICT (add/add): Merge conflict in foo
Auto-merging foo
3094 $ git status
On branch master
Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both added:      foo
3095 $ cat foo
<<<<<<< Updated upstream
boom
=======
hi
>>>>>>> Stashed changes

IMHO libgit should behave like git, and the clean check should not be done.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions