bash prompt: print unique detached HEAD abbreviated object name
When describing a detached HEAD according to the $GIT_PS1_DESCRIBE environment variable fails, __git_ps1() runs 'cut -c1-7 .git/HEAD' to show the 7 hexdigits abbreviated commit object name in the prompt. Obviously, this neither respects core.abbrev nor produces a unique object name. Fix this by using 'git rev-parse --short HEAD' instead and adjust the corresponding test to use non-standard number of hexdigits. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>maint
							parent
							
								
									868dc1acec
								
							
						
					
					
						commit
						e8f21caf94
					
				|  | @ -392,7 +392,7 @@ __git_ps1 () | |||
| 					git describe --tags --exact-match HEAD ;; | ||||
| 				esac 2>/dev/null)" || | ||||
|  | ||||
| 				b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." || | ||||
| 				b="$(git rev-parse --short HEAD 2>/dev/null)..." || | ||||
| 				b="unknown" | ||||
| 				b="($b)" | ||||
| 			} | ||||
|  |  | |||
|  | @ -50,7 +50,8 @@ test_expect_success SYMLINKS 'prompt - branch name - symlink symref' ' | |||
| ' | ||||
|  | ||||
| test_expect_success 'prompt - detached head' ' | ||||
| 	printf " ((%s...))" $(git log -1 --format="%h" b1^) >expected && | ||||
| 	printf " ((%s...))" $(git log -1 --format="%h" --abbrev=13 b1^) >expected && | ||||
| 	test_config core.abbrev 13 && | ||||
| 	git checkout b1^ && | ||||
| 	test_when_finished "git checkout master" && | ||||
| 	__git_ps1 >"$actual" && | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 SZEDER Gábor
						SZEDER Gábor