Use FugitiveVimPath() to normalize directories during detection

This commit is contained in:
Tim Pope
2019-08-19 09:01:05 -04:00
parent fd7b5d8a1e
commit 2b6199594a
2 changed files with 8 additions and 8 deletions

View File

@@ -275,11 +275,11 @@ function! fugitive#CommonDir(dir) abort
if getfsize(a:dir . '/HEAD') < 10 if getfsize(a:dir . '/HEAD') < 10
let s:commondirs[a:dir] = '' let s:commondirs[a:dir] = ''
elseif filereadable(a:dir . '/commondir') elseif filereadable(a:dir . '/commondir')
let dir = get(readfile(a:dir . '/commondir', 1), 0, '') let cdir = get(readfile(a:dir . '/commondir', 1), 0, '')
if dir =~# '^/\|^\a:/' if cdir =~# '^/\|^\a:/'
let s:commondirs[a:dir] = dir let s:commondirs[a:dir] = s:Slash(FugitiveVimPath(cdir))
else else
let s:commondirs[a:dir] = simplify(a:dir . '/' . dir) let s:commondirs[a:dir] = simplify(a:dir . '/' . cdir)
endif endif
else else
let s:commondirs[a:dir] = a:dir let s:commondirs[a:dir] = a:dir

View File

@@ -124,10 +124,10 @@ function! s:Tree(path) abort
let config = readfile(config_file,'',10) let config = readfile(config_file,'',10)
call filter(config,'v:val =~# "^\\s*worktree *="') call filter(config,'v:val =~# "^\\s*worktree *="')
if len(config) == 1 if len(config) == 1
let worktree = matchstr(config[0], '= *\zs.*') let worktree = s:Slash(FugitiveVimPath(matchstr(config[0], '= *\zs.*')))
endif endif
elseif filereadable(dir . '/gitdir') elseif filereadable(dir . '/gitdir')
let worktree = fnamemodify(readfile(dir . '/gitdir')[0], ':h') let worktree = s:Slash(fnamemodify(FugitiveVimPath(readfile(dir . '/gitdir')[0]), ':h'))
if worktree ==# '.' if worktree ==# '.'
unlet! worktree unlet! worktree
endif endif
@@ -162,7 +162,7 @@ function! FugitiveExtractGitDir(path) abort
silent! exe (haslocaldir() ? 'lcd' : exists(':tcd') && haslocaldir(-1) ? 'tcd' : 'cd') '.' silent! exe (haslocaldir() ? 'lcd' : exists(':tcd') && haslocaldir(-1) ? 'tcd' : 'cd') '.'
endif endif
let previous = "" let previous = ""
let env_git_dir = len($GIT_DIR) ? s:Slash(simplify(fnamemodify($GIT_DIR, ':p:s?[\/]$??'))) : '' let env_git_dir = len($GIT_DIR) ? s:Slash(simplify(fnamemodify(FugitiveVimPath($GIT_DIR), ':p:s?[\/]$??'))) : ''
call s:Tree(env_git_dir) call s:Tree(env_git_dir)
while root !=# previous while root !=# previous
if root =~# '\v^//%([^/]+/?)?$' if root =~# '\v^//%([^/]+/?)?$'
@@ -184,7 +184,7 @@ function! FugitiveExtractGitDir(path) abort
return resolve(dir) return resolve(dir)
elseif type !=# '' && filereadable(dir) elseif type !=# '' && filereadable(dir)
let line = get(readfile(dir, '', 1), 0, '') let line = get(readfile(dir, '', 1), 0, '')
let file_dir = matchstr(line, '^gitdir: \zs.*') let file_dir = s:Slash(FugitiveVimPath(matchstr(line, '^gitdir: \zs.*')))
if file_dir !~# '^/\|^\a:' && FugitiveIsGitDir(root . '/' . file_dir) if file_dir !~# '^/\|^\a:' && FugitiveIsGitDir(root . '/' . file_dir)
return simplify(root . '/' . file_dir) return simplify(root . '/' . file_dir)
elseif len(file_dir) && FugitiveIsGitDir(file_dir) elseif len(file_dir) && FugitiveIsGitDir(file_dir)