motiejus/dotfiles

Unnamed repository; edit this file 'description' to name the repository.
git clone https://git.jakstys.lt/motiejus/dotfiles.git
Log | Tree | Refs | README | LICENSE

commit 67e9756c35bf1e2f8384c166eac6b0d0ecf16640 (tree)
parent ae2005adbbd656772a2ec4155747e1c6cef24ab2
Author: Tim Pope <code@tpope.net>
Date:   Sun, 19 Aug 2018 16:52:58 -0400

Support .git/.. to refer to work tree

Diffstat:
Mautoload/fugitive.vim | 22++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/autoload/fugitive.vim b/autoload/fugitive.vim @@ -521,18 +521,24 @@ function! fugitive#Route(object, ...) abort return fnamemodify(len(file) ? file : a:object, ':p') endif endif - let rev = a:object + let rev = s:Slash(a:object) let tree = s:Tree(dir) let base = len(tree) ? tree : 'fugitive://' . dir . '//0' - if rev =~# '^\%(\./\)\=\.git$' && empty(tree) - let f = dir - elseif rev =~# '^\%(\./\)\=\.git/' - let f = substitute(rev, '\C^\%(\./\)\=\.git', '', '') + if rev ==# '.git' + let f = len(tree) ? tree . '/.git' : dir + elseif rev =~# '^\.git/' + let f = substitute(rev, '^\.git', '', '') let cdir = fugitive#CommonDir(dir) - if cdir !=# dir && (f =~# '^/\%(config\|info\|hooks\|objects\|refs\|worktrees\)' || !filereadable(f) && filereadable(cdir . f)) - let f = cdir . f + if f =~# '^/\.\./\.\.\%(/\|$\)' + let f = simplify(len(tree) ? tree . f[3:-1] : dir . f) + elseif f =~# '^/\.\.\%(/\|$\)' + let f = base . f[3:-1] + elseif cdir !=# dir && ( + \ f =~# '^/\%(config\|hooks\|info\|logs/refs\|objects\|refs\|worktrees\)\%(/\|$\)' || + \ f !~# '^/logs$\|/\w*HEAD$' && getftime(dir . f) < 0 && getftime(cdir . f) >= 0) + let f = simplify(cdir . f) else - let f = dir . f + let f = simplify(dir . f) endif elseif rev ==# ':/' let f = base