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 ;; | 					git describe --tags --exact-match HEAD ;; | ||||||
| 				esac 2>/dev/null)" || | 				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="unknown" | ||||||
| 				b="($b)" | 				b="($b)" | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -50,7 +50,8 @@ test_expect_success SYMLINKS 'prompt - branch name - symlink symref' ' | ||||||
| ' | ' | ||||||
|  |  | ||||||
| test_expect_success 'prompt - detached head' ' | 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^ && | 	git checkout b1^ && | ||||||
| 	test_when_finished "git checkout master" && | 	test_when_finished "git checkout master" && | ||||||
| 	__git_ps1 >"$actual" && | 	__git_ps1 >"$actual" && | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 SZEDER Gábor
						SZEDER Gábor