-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
Git has a new ref backend called reftable
. When that's used, the ref data and reflogs are stored inside a set of binary files and the .git/HEAD
file always contains ref: refs/heads/.invalid
(note that .invalid
is not permitted in a real refname).
As a result, calling FugitiveHead
returns .invalid
, which is not correct. This also causes Airline to reflect the incorrect branch name.
To reproduce this situation, you can set up a repository with Git 2.48 and this shell script:
#!/bin/sh
git init -b dev --ref-format=reftable test-repo
cd test-repo
touch abc.txt
git add abc.txt
git commit -m +
Once inside, you can open Vim with Fugitive enabled and run :call FugitiveHead()
. The correct result is dev
, and the incorrect result is .invalid
.
I suspect you are going to need to actually invoke Git in this case. Perhaps a command like git rev-parse --abbrev-ref HEAD
will be useful.