Merge remote-tracking branch 'aschrab/gitfile' into develop

This commit is contained in:
Kim Silkebækken 2013-08-20 16:50:48 +02:00
commit 7ec4cb9b26
1 changed files with 12 additions and 13 deletions

View File

@ -19,23 +19,22 @@ def branch_name_from_config_file(directory, config_file):
return m.group(1).decode('utf-8', 'replace')
return raw[:7]
def git_directory(directory):
path = os.path.join(directory, '.git')
if os.path.isfile(path):
with open(path, 'rb') as f:
raw = f.read().partition(b':')[2].strip()
return os.path.abspath(os.path.join(directory, raw))
else:
return path
def get_branch_name(base_dir):
head = os.path.join(base_dir, '.git', 'HEAD')
try:
return _get_branch_name(base_dir, head, branch_name_from_config_file)
except OSError as e:
if getattr(e, 'errno', None) == errno.ENOTDIR or getattr(e, 'winerror', None) == 3:
# We are in a submodule
return '(no branch)'
raise
head = os.path.join(git_directory(base_dir), 'HEAD')
return _get_branch_name(base_dir, head, branch_name_from_config_file)
def do_status(directory, path, func):
if path:
gitd = os.path.join(directory, '.git')
if os.path.isfile(gitd):
with open(gitd, 'rb') as f:
raw = f.read().partition(b':')[2].strip()
gitd = os.path.abspath(os.path.join(directory, raw))
gitd = git_directory(directory)
# We need HEAD as without it using fugitive to commit causes the
# current file's status (and only the current file) to not be updated
# for some reason I cannot be bothered to figure out.