git-stash.sh: don't default to refs/stash if invalid ref supplied
apply_stash() and show_stash() each call rev-parse with
'--default refs/stash' as an argument. This option causes rev-parse to
operate on refs/stash if it is not able to successfully operate on any
element of the command line. This includes failure to supply a "valid"
revision. This has the effect of causing 'stash apply' and 'stash show'
to operate as if stash@{0} had been supplied when an invalid revision is
supplied.
e.g. 'git stash apply stash@{1}' would fall back to
     'git stash apply stash@{0}'
This patch modifies these two functions so that they avoid using the
--default option of rev-parse.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
			
			
				maint
			
			
		
							parent
							
								
									dc4179f9a7
								
							
						
					
					
						commit
						da65e7c133
					
				
							
								
								
									
										17
									
								
								git-stash.sh
								
								
								
								
							
							
						
						
									
										17
									
								
								git-stash.sh
								
								
								
								
							|  | @ -144,7 +144,14 @@ show_stash () { | ||||||
| 	then | 	then | ||||||
| 		flags=--stat | 		flags=--stat | ||||||
| 	fi | 	fi | ||||||
| 	s=$(git rev-parse --revs-only --no-flags --default $ref_stash "$@") |  | ||||||
|  | 	if test $# = 0 | ||||||
|  | 	then | ||||||
|  | 		set x "$ref_stash@{0}" | ||||||
|  | 		shift | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	s=$(git rev-parse --revs-only --no-flags "$@") | ||||||
|  |  | ||||||
| 	w_commit=$(git rev-parse --verify "$s") && | 	w_commit=$(git rev-parse --verify "$s") && | ||||||
| 	b_commit=$(git rev-parse --verify "$s^") && | 	b_commit=$(git rev-parse --verify "$s^") && | ||||||
|  | @ -163,13 +170,19 @@ apply_stash () { | ||||||
| 		shift | 		shift | ||||||
| 	esac | 	esac | ||||||
|  |  | ||||||
|  | 	if test $# = 0 | ||||||
|  | 	then | ||||||
|  | 		set x "$ref_stash@{0}" | ||||||
|  | 		shift | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	# current index state | 	# current index state | ||||||
| 	c_tree=$(git write-tree) || | 	c_tree=$(git write-tree) || | ||||||
| 		die 'Cannot apply a stash in the middle of a merge' | 		die 'Cannot apply a stash in the middle of a merge' | ||||||
|  |  | ||||||
| 	# stash records the work tree, and is a merge between the | 	# stash records the work tree, and is a merge between the | ||||||
| 	# base commit (first parent) and the index tree (second parent). | 	# base commit (first parent) and the index tree (second parent). | ||||||
| 	s=$(git rev-parse --revs-only --no-flags --default $ref_stash "$@") && | 	s=$(git rev-parse --revs-only --no-flags "$@") && | ||||||
| 	w_tree=$(git rev-parse --verify "$s:") && | 	w_tree=$(git rev-parse --verify "$s:") && | ||||||
| 	b_tree=$(git rev-parse --verify "$s^1:") && | 	b_tree=$(git rev-parse --verify "$s^1:") && | ||||||
| 	i_tree=$(git rev-parse --verify "$s^2:") || | 	i_tree=$(git rev-parse --verify "$s^2:") || | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Brandon Casey
						Brandon Casey