Merge branch 'ph/stash-rerere'
"git stash" internally used "git merge-recursive" backend, which did not trigger "rerere" upon conflicts unlike other mergy operations. * ph/stash-rerere: stash: invoke rerere in case of conflict test: git-stash conflict sets up rerere
This commit is contained in:
commit
799beac153
@ -469,6 +469,7 @@ apply_stash () {
|
||||
else
|
||||
# Merge conflict; keep the exit status from merge-recursive
|
||||
status=$?
|
||||
git rerere
|
||||
if test -n "$INDEX_OPTION"
|
||||
then
|
||||
gettextln "Index was not unstashed." >&2
|
||||
|
@ -55,6 +55,16 @@ test_expect_success 'setup' '
|
||||
git rm file12 &&
|
||||
git commit -m "branch1 changes" &&
|
||||
|
||||
git checkout -b stash1 master &&
|
||||
echo stash1 change file11 >file11 &&
|
||||
git add file11 &&
|
||||
git commit -m "stash1 changes" &&
|
||||
|
||||
git checkout -b stash2 master &&
|
||||
echo stash2 change file11 >file11 &&
|
||||
git add file11 &&
|
||||
git commit -m "stash2 changes" &&
|
||||
|
||||
git checkout master &&
|
||||
git submodule update -N &&
|
||||
echo master updated >file1 &&
|
||||
@ -193,7 +203,35 @@ test_expect_success 'mergetool skips resolved paths when rerere is active' '
|
||||
git reset --hard
|
||||
'
|
||||
|
||||
test_expect_success 'conflicted stash sets up rerere' '
|
||||
git config rerere.enabled true &&
|
||||
git checkout stash1 &&
|
||||
echo "Conflicting stash content" >file11 &&
|
||||
git stash &&
|
||||
|
||||
git checkout --detach stash2 &&
|
||||
test_must_fail git stash apply &&
|
||||
|
||||
test -n "$(git ls-files -u)" &&
|
||||
conflicts="$(git rerere remaining)" &&
|
||||
test "$conflicts" = "file11" &&
|
||||
output="$(git mergetool --no-prompt)" &&
|
||||
test "$output" != "No files need merging" &&
|
||||
|
||||
git commit -am "save the stash resolution" &&
|
||||
|
||||
git reset --hard stash2 &&
|
||||
test_must_fail git stash apply &&
|
||||
|
||||
test -n "$(git ls-files -u)" &&
|
||||
conflicts="$(git rerere remaining)" &&
|
||||
test -z "$conflicts" &&
|
||||
output="$(git mergetool --no-prompt)" &&
|
||||
test "$output" = "No files need merging"
|
||||
'
|
||||
|
||||
test_expect_success 'mergetool takes partial path' '
|
||||
git reset --hard
|
||||
git config rerere.enabled false &&
|
||||
git checkout -b test12 branch1 &&
|
||||
git submodule update -N &&
|
||||
|
Loading…
Reference in New Issue
Block a user