Weird conditions handling

Become a programmer, they said. It'll be fun, they said.
This commit is contained in:
Niccolò Maggioni 2016-04-11 23:02:58 +02:00
parent ce16b087c6
commit 14e213bd68
No known key found for this signature in database
GPG key ID: 4874B0C841E33264

View file

@ -62,16 +62,20 @@ function +vi-git-remotebranch() {
function +vi-git-tagname() {
# Only show the tag name if we are not in DETACHED_HEAD state,
# since in that case it would already be displayed in the branch segment
if [[ -z "$(git symbolic-ref HEAD 2>/dev/null)" ]] ; then
local tag
# or if the current branch's HEAD is the same commit as a tag but
# doesn't have the same name
local tag
tag=$(git describe --tags --exact-match HEAD 2>/dev/null)
tag=$(git describe --tags --exact-match HEAD 2>/dev/null)
if [[ -z "$(git symbolic-ref HEAD 2>/dev/null)" || ! -z "${tag}" ]] ; then
head=$(git describe --all)
# Make sure that detached head and tag differ in name
if [[ "${head}" != "${tag}" ]]; then
# Append the tag segment to the branch one
[[ -n "${tag}" ]] && hook_com[branch]+=" $(print_icon 'VCS_TAG_ICON')${tag}"
# Make sure that detached head or checked out name differs from tag name
if [[ "${head}" != "${tag}" ||
"$(git rev-parse --abbrev-ref HEAD)" != "${tag}" &&
"$(git rev-parse --abbrev-ref HEAD)" != "HEAD" &&
"$(git rev-list -n 1 HEAD)" == "$(git rev-list -n 1 ${tag})" ]]; then
# Append the tag segment to the branch one
[[ -n "${tag}" ]] && hook_com[branch]+=" $(print_icon 'VCS_TAG_ICON')${tag}"
fi
fi
}