mirror of
https://github.com/git/git
synced 2024-10-30 14:03:28 +00:00
Merge branch 'jk/stash-require-clean-index' into maint
"git stash pop/apply" forgot to make sure that not just the working tree is clean but also the index is clean. The latter is important as a stash application can conflict and the index will be used for conflict resolution. * jk/stash-require-clean-index: stash: require a clean index to apply t3903: avoid applying onto dirty index t3903: stop hard-coding commit sha1s
This commit is contained in:
commit
cb9ec8e23e
2 changed files with 16 additions and 7 deletions
|
@ -442,6 +442,8 @@ apply_stash () {
|
||||||
assert_stash_like "$@"
|
assert_stash_like "$@"
|
||||||
|
|
||||||
git update-index -q --refresh || die "$(gettext "unable to refresh index")"
|
git update-index -q --refresh || die "$(gettext "unable to refresh index")"
|
||||||
|
git diff-index --cached --quiet --ignore-submodules HEAD -- ||
|
||||||
|
die "$(gettext "Cannot apply stash: Your index contains uncommitted changes.")"
|
||||||
|
|
||||||
# current index state
|
# current index state
|
||||||
c_tree=$(git write-tree) ||
|
c_tree=$(git write-tree) ||
|
||||||
|
|
|
@ -10,6 +10,8 @@ test_description='Test git stash'
|
||||||
test_expect_success 'stash some dirty working directory' '
|
test_expect_success 'stash some dirty working directory' '
|
||||||
echo 1 > file &&
|
echo 1 > file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
|
echo unrelated >other-file &&
|
||||||
|
git add other-file &&
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git commit -m initial &&
|
git commit -m initial &&
|
||||||
echo 2 > file &&
|
echo 2 > file &&
|
||||||
|
@ -43,10 +45,15 @@ test_expect_success 'applying bogus stash does nothing' '
|
||||||
test_cmp expect file
|
test_cmp expect file
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'apply requires a clean index' '
|
||||||
|
test_when_finished "git reset --hard" &&
|
||||||
|
echo changed >other-file &&
|
||||||
|
git add other-file &&
|
||||||
|
test_must_fail git stash apply
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'apply does not need clean working directory' '
|
test_expect_success 'apply does not need clean working directory' '
|
||||||
echo 4 >other-file &&
|
echo 4 >other-file &&
|
||||||
git add other-file &&
|
|
||||||
echo 5 >other-file &&
|
|
||||||
git stash apply &&
|
git stash apply &&
|
||||||
echo 3 >expect &&
|
echo 3 >expect &&
|
||||||
test_cmp expect file
|
test_cmp expect file
|
||||||
|
@ -695,8 +702,8 @@ test_expect_success 'setup stash with index and worktree changes' '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'stash list implies --first-parent -m' '
|
test_expect_success 'stash list implies --first-parent -m' '
|
||||||
cat >expect <<-\EOF &&
|
cat >expect <<-EOF &&
|
||||||
stash@{0}: WIP on master: b27a2bc subdir
|
stash@{0}
|
||||||
|
|
||||||
diff --git a/file b/file
|
diff --git a/file b/file
|
||||||
index 257cc56..d26b33d 100644
|
index 257cc56..d26b33d 100644
|
||||||
|
@ -706,13 +713,13 @@ test_expect_success 'stash list implies --first-parent -m' '
|
||||||
-foo
|
-foo
|
||||||
+working
|
+working
|
||||||
EOF
|
EOF
|
||||||
git stash list -p >actual &&
|
git stash list --format=%gd -p >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'stash list --cc shows combined diff' '
|
test_expect_success 'stash list --cc shows combined diff' '
|
||||||
cat >expect <<-\EOF &&
|
cat >expect <<-\EOF &&
|
||||||
stash@{0}: WIP on master: b27a2bc subdir
|
stash@{0}
|
||||||
|
|
||||||
diff --cc file
|
diff --cc file
|
||||||
index 257cc56,9015a7a..d26b33d
|
index 257cc56,9015a7a..d26b33d
|
||||||
|
@ -723,7 +730,7 @@ test_expect_success 'stash list --cc shows combined diff' '
|
||||||
-index
|
-index
|
||||||
++working
|
++working
|
||||||
EOF
|
EOF
|
||||||
git stash list -p --cc >actual &&
|
git stash list --format=%gd -p --cc >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue