Merge branch 'jk/maint-stash-oob'
* jk/maint-stash-oob: stash: fix false positive in the invalid ref test. stash: fix accidental apply of non-existent stashes Conflicts: t/t3903-stash.shmaint
						commit
						fcbf164fcb
					
				
							
								
								
									
										12
									
								
								git-stash.sh
								
								
								
								
							
							
						
						
									
										12
									
								
								git-stash.sh
								
								
								
								
							|  | @ -264,7 +264,7 @@ parse_flags_and_rev() | ||||||
| 	b_tree= | 	b_tree= | ||||||
| 	i_tree= | 	i_tree= | ||||||
|  |  | ||||||
| 	REV=$(git rev-parse --no-flags --symbolic "$@" 2>/dev/null) | 	REV=$(git rev-parse --no-flags --symbolic "$@") || exit 1 | ||||||
|  |  | ||||||
| 	FLAGS= | 	FLAGS= | ||||||
| 	for opt | 	for opt | ||||||
|  | @ -310,16 +310,6 @@ parse_flags_and_rev() | ||||||
| 	IS_STASH_LIKE=t && | 	IS_STASH_LIKE=t && | ||||||
| 	test "$ref_stash" = "$(git rev-parse --symbolic-full-name "${REV%@*}")" && | 	test "$ref_stash" = "$(git rev-parse --symbolic-full-name "${REV%@*}")" && | ||||||
| 	IS_STASH_REF=t | 	IS_STASH_REF=t | ||||||
|  |  | ||||||
| 	if test "${REV}" != "${REV%{*\}}" |  | ||||||
| 	then |  | ||||||
| 		# maintainers: it would be better if git rev-parse indicated |  | ||||||
| 		# this condition with a non-zero status code but as of 1.7.2.1 it |  | ||||||
| 		# it did not. So, we use non-empty stderr output as a proxy for the |  | ||||||
| 		# condition of interest. |  | ||||||
| 		test -z "$(git rev-parse "$REV" 2>&1 >/dev/null)" || die "$REV does not exist in the stash log" |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| is_stash_like() | is_stash_like() | ||||||
|  |  | ||||||
|  | @ -37,6 +37,12 @@ test_expect_success 'parents of stash' ' | ||||||
| 	test_cmp output expect | 	test_cmp output expect | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'applying bogus stash does nothing' ' | ||||||
|  | 	test_must_fail git stash apply stash@{1} && | ||||||
|  | 	echo 1 >expect && | ||||||
|  | 	test_cmp expect file | ||||||
|  | ' | ||||||
|  |  | ||||||
| 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 && | 	git add other-file && | ||||||
|  | @ -549,11 +555,11 @@ test_expect_success 'invalid ref of the form stash@{n}, n >= N' ' | ||||||
| 	echo bar6 > file2 && | 	echo bar6 > file2 && | ||||||
| 	git add file2 && | 	git add file2 && | ||||||
| 	git stash && | 	git stash && | ||||||
| 	test_must_fail git drop stash@{1} && | 	test_must_fail git stash drop stash@{1} && | ||||||
| 	test_must_fail git pop stash@{1} && | 	test_must_fail git stash pop stash@{1} && | ||||||
| 	test_must_fail git apply stash@{1} && | 	test_must_fail git stash apply stash@{1} && | ||||||
| 	test_must_fail git show stash@{1} && | 	test_must_fail git stash show stash@{1} && | ||||||
| 	test_must_fail git branch tmp stash@{1} && | 	test_must_fail git stash branch tmp stash@{1} && | ||||||
| 	git stash drop | 	git stash drop | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano