Skip to content

Commit

Permalink
Merge branch 'ph/stash-rerere' into maint-1.7.11
Browse files Browse the repository at this point in the history
* ph/stash-rerere:
  stash: invoke rerere in case of conflict
  test: git-stash conflict sets up rerere
  • Loading branch information
gitster committed Sep 11, 2012
2 parents 91feb38 + 743bf6d commit ef92392
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
1 change: 1 addition & 0 deletions git-stash.sh
Expand Up @@ -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
Expand Down
38 changes: 38 additions & 0 deletions t/t7610-mergetool.sh
Expand Up @@ -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 &&
Expand Down Expand Up @@ -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 &&
Expand Down

0 comments on commit ef92392

Please sign in to comment.