mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-10 12:33:46 -05:00
Support extensions.worktreeConfig
Resolves: https://github.com/tpope/vim-fugitive/issues/1898
This commit is contained in:
@@ -344,22 +344,32 @@ function! s:Tree(path) abort
|
|||||||
endif
|
endif
|
||||||
if !has_key(s:worktree_for_dir, dir)
|
if !has_key(s:worktree_for_dir, dir)
|
||||||
let s:worktree_for_dir[dir] = ''
|
let s:worktree_for_dir[dir] = ''
|
||||||
|
let ext_wtc_pat = 'v:val =~# "^\\s*worktreeConfig *= *\\%(true\\|yes\\|on\\|1\\) *$"'
|
||||||
let config = s:ReadFile(dir . '/config', 10)
|
let config = s:ReadFile(dir . '/config', 10)
|
||||||
if len(config)
|
if len(config)
|
||||||
let wt_config = filter(copy(config),'v:val =~# "^\\s*worktree *="')
|
let ext_wtc_config = filter(copy(config), ext_wtc_pat)
|
||||||
if len(wt_config) == 1
|
if len(ext_wtc_config) == 1 && filereadable(dir . '/config.worktree')
|
||||||
let worktree = FugitiveVimPath(matchstr(wt_config[0], '= *\zs.*'))
|
let config += s:ReadFile(dir . '/config.worktree', 10)
|
||||||
else
|
|
||||||
call filter(config,'v:val =~# "^\\s*bare *= *true *$"')
|
|
||||||
if empty(config)
|
|
||||||
let s:worktree_for_dir[dir] = 0
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let worktree = fnamemodify(FugitiveVimPath(get(s:ReadFile(dir . '/gitdir', 1), '0', '')), ':h')
|
let worktree = fnamemodify(FugitiveVimPath(get(s:ReadFile(dir . '/gitdir', 1), '0', '')), ':h')
|
||||||
if worktree ==# '.'
|
if worktree ==# '.'
|
||||||
unlet! worktree
|
unlet! worktree
|
||||||
endif
|
endif
|
||||||
|
if len(filter(s:ReadFile(FugitiveCommonDir(dir) . '/config', 10), ext_wtc_pat))
|
||||||
|
let config = s:ReadFile(dir . '/config.worktree', 10)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if len(config)
|
||||||
|
let wt_config = filter(copy(config), 'v:val =~# "^\\s*worktree *="')
|
||||||
|
if len(wt_config)
|
||||||
|
let worktree = FugitiveVimPath(matchstr(wt_config[0], '= *\zs.*'))
|
||||||
|
elseif !exists('worktree')
|
||||||
|
call filter(config,'v:val =~# "^\\s*bare *= *true *$"')
|
||||||
|
if empty(config)
|
||||||
|
let s:worktree_for_dir[dir] = 0
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
if exists('worktree')
|
if exists('worktree')
|
||||||
let s:worktree_for_dir[dir] = s:Slash(resolve(worktree))
|
let s:worktree_for_dir[dir] = s:Slash(resolve(worktree))
|
||||||
|
|||||||
Reference in New Issue
Block a user