diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-09-03 15:54:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-09-03 15:54:12 -0700 |
commit | 799beac15391004778186503bf198783960a82a3 (patch) | |
tree | 5afcd08f04bf24fca4db44bdfbff4f9e2182abb0 | |
parent | 19801d6a2768b9ce056da4635a287885d08940cb (diff) | |
parent | 743bf6d8b07f0c5717bf5c37b8b50ae9de619c83 (diff) | |
download | git-799beac15391004778186503bf198783960a82a3.tar.gz git-799beac15391004778186503bf198783960a82a3.tar.xz |
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
-rwxr-xr-x | git-stash.sh | 1 | ||||
-rwxr-xr-x | t/t7610-mergetool.sh | 38 |
2 files changed, 39 insertions, 0 deletions
diff --git a/git-stash.sh b/git-stash.sh index 4e2c7f833..bbefdf642 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -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 diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh index f5e16fc7d..6fa0c7050 100755 --- a/t/t7610-mergetool.sh +++ b/t/t7610-mergetool.sh @@ -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 && |