Support bare repositories that don't end in .git

Closes #117 and supports #139.
This commit is contained in:
Tim Pope
2012-03-14 20:16:49 -04:00
parent c67458d189
commit 85639a20fb

View File

@@ -107,6 +107,11 @@ let s:abstract_prototype = {}
" }}}1
" Initialization {{{1
function! s:is_git_dir(path) abort
let path = a:path . '/'
return isdirectory(path.'objects') && isdirectory(path.'refs') && filereadable(path.'HEAD') && filereadable(path.'config')
endfunction
function! s:extract_git_dir(path) abort
let path = s:shellslash(a:path)
if path =~? '^fugitive://.*//'
@@ -115,10 +120,10 @@ function! s:extract_git_dir(path) abort
let fn = fnamemodify(path,':s?[\/]$??')
let ofn = ""
let nfn = fn
while fn !=# ofn && fn !=# '/'
if filereadable(fn . '/.git/HEAD')
while fn !=# ofn
if s:is_git_dir(s:sub(fn,'[\/]$','') . '/.git')
return s:sub(simplify(fnamemodify(fn . '/.git',':p')),'\W$','')
elseif fn =~ '\.git$' && filereadable(fn . '/HEAD')
elseif s:is_git_dir(fn)
return s:sub(simplify(fnamemodify(fn,':p')),'\W$','')
endif
let ofn = fn