Don't crash when .git/refs/heads/master doesn't exist

This happens after a git gc which moves this into packed-refs. So when
this happens, look in packed-refs. If packed-refs also cannot be found,
just return a made up value instead of crashing.
This commit is contained in:
Magnus Hagander
2017-10-13 11:15:51 +02:00
parent d0cd663459
commit 24d3a5881e

View File

@ -104,8 +104,21 @@ class NavContext(RequestContext):
def _get_gitrev():
# Return the current git revision, that is used for
# cache-busting URLs.
with open('.git/refs/heads/master') as f:
return f.readline()[:8]
try:
with open('.git/refs/heads/master') as f:
return f.readline()[:8]
except IOError:
# A "git gc" will remove the ref and replace it with a packed-refs.
try:
with open('.git/packed-refs') as f:
for l in f.readlines():
if l.endswith("refs/heads/master\n"):
return l[:8]
# Not found in packed-refs. Meh, just make one up.
return 'ffffffff'
except IOError:
# If packed-refs also can't be read, just give up
return 'eeeeeeee'
# Template context processor to add information about the root link and
# the current git revision. git revision is returned as a lazy object so