Edit index file when no work tree present

Life gets simpler if this function never fails.
This commit is contained in:
Tim Pope
2018-08-02 18:22:19 -04:00
parent caee67c748
commit a615172b14

View File

@@ -329,14 +329,12 @@ function! s:repo_bare() dict abort
endif endif
endfunction endfunction
function! s:repo_translate(spec, ...) dict abort function! s:repo_translate(object, ...) dict abort
let rev = substitute(a:spec, '//\+', '/', 'g') let rev = substitute(a:object, '[:/]\zs\.\%(/\+\|$\)', '', 'g')
let rev = substitute(rev, '[:/]\zs\.\%(/\|$\)', '', 'g')
let dir = self.git_dir let dir = self.git_dir
let tree = s:Tree(dir) let tree = s:Tree(dir)
if rev ==# '.' let base = len(tree) ? tree : 'fugitive://' . dir . '//0'
let f = empty(tree) ? dir : tree if rev =~# '^/\=\.git$' && empty(tree)
elseif rev =~# '^/\=\.git$' && empty(tree)
let f = dir let f = dir
elseif rev =~# '^/\=\.git/' elseif rev =~# '^/\=\.git/'
let f = s:sub(rev, '^/=\.git', '') let f = s:sub(rev, '^/=\.git', '')
@@ -346,10 +344,10 @@ function! s:repo_translate(spec, ...) dict abort
else else
let f = dir . f let f = dir . f
endif endif
elseif empty(rev) || rev ==# '/.' elseif rev ==# '^/\=\.$'
return self.tree() return base
elseif rev =~# '^\.\=/' elseif rev =~# '^\.\=\%(/\|$\)'
let f = self.tree(substitute(rev, '^\.\=/', '', '')) let f = base . substitute(rev, '^\.', '', '')
elseif rev =~# '^:[0-3]:/\@!' elseif rev =~# '^:[0-3]:/\@!'
let f = 'fugitive://' . dir . '//' . rev[1] . '/' . rev[3:-1] let f = 'fugitive://' . dir . '//' . rev[1] . '/' . rev[3:-1]
elseif rev ==# ':' elseif rev ==# ':'
@@ -377,7 +375,7 @@ function! s:repo_translate(spec, ...) dict abort
if len(commit) if len(commit)
let f = 'fugitive://' . dir . '//' . commit . file let f = 'fugitive://' . dir . '//' . commit . file
else else
let f = self.tree(rev) let f = base . '/' . rev
endif endif
endif endif
endif endif