Merge branch 'ph/stash-rerere' into maint-1.7.11
* ph/stash-rerere: stash: invoke rerere in case of conflict test: git-stash conflict sets up rerere
This commit is contained in:
		@ -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 &&
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user