Copied from devel branch of minpac
This commit is contained in:
parent
a1a4f08691
commit
33cb99a27c
64
plug.vim
64
plug.vim
|
@ -116,35 +116,28 @@ let s:TYPE = {
|
||||||
let s:loaded = get(s:, 'loaded', {})
|
let s:loaded = get(s:, 'loaded', {})
|
||||||
let s:triggers = get(s:, 'triggers', {})
|
let s:triggers = get(s:, 'triggers', {})
|
||||||
|
|
||||||
function! s:isroot(dir) abort
|
function! s:isabsolute(dir) abort
|
||||||
if a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
|
return a:dir =~# '^/' || (has('win32') && a:dir =~? '^\%(\\\|[A-Z]:\)')
|
||||||
return v:true
|
|
||||||
endif
|
|
||||||
return v:false
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_gitdir(dir) abort
|
function! s:get_gitdir(dir) abort
|
||||||
let l:gitdir = a:dir . '/.git'
|
let l:gitdir = a:dir . '/.git'
|
||||||
if isdirectory(l:gitdir)
|
if isdirectory(l:gitdir)
|
||||||
return l:gitdir
|
return l:gitdir
|
||||||
elseif filereadable(l:gitdir)
|
endif
|
||||||
try
|
try
|
||||||
let l:line = readfile(l:gitdir)[0]
|
let l:line = readfile(l:gitdir)[0]
|
||||||
catch
|
|
||||||
return ''
|
|
||||||
endtry
|
|
||||||
if l:line =~# '^gitdir: '
|
if l:line =~# '^gitdir: '
|
||||||
let l:dir = l:line[8:]
|
let l:gitdir = l:line[8:]
|
||||||
if s:isroot(l:dir)
|
if !s:isabsolute(l:gitdir)
|
||||||
let l:gitdir = l:dir
|
let l:gitdir = a:dir . '/' . l:gitdir
|
||||||
else
|
|
||||||
let l:gitdir = a:dir . '/' . l:dir
|
|
||||||
endif
|
endif
|
||||||
if isdirectory(l:gitdir)
|
if isdirectory(l:gitdir)
|
||||||
return l:gitdir
|
return l:gitdir
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
catch
|
||||||
|
endtry
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
@ -183,43 +176,37 @@ function! s:git_get_remote_origin_url(dir) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:git_get_revision(dir) abort
|
function! s:git_get_revision(dir) abort
|
||||||
let gitdir = s:get_gitdir(a:dir)
|
let l:gitdir = s:get_gitdir(a:dir)
|
||||||
if gitdir ==# ''
|
if l:gitdir ==# ''
|
||||||
return v:null
|
return v:null
|
||||||
endif
|
endif
|
||||||
try
|
try
|
||||||
let line = readfile(gitdir . '/HEAD')[0]
|
let l:line = readfile(l:gitdir . '/HEAD')[0]
|
||||||
if line =~# '^ref: '
|
if l:line =~# '^ref: '
|
||||||
let ref = line[5:]
|
let l:ref = l:line[5:]
|
||||||
if filereadable(gitdir . '/' . ref)
|
if filereadable(l:gitdir . '/' . l:ref)
|
||||||
let rev = readfile(gitdir . '/' . ref)[0]
|
return readfile(l:gitdir . '/' . l:ref)[0]
|
||||||
else
|
endif
|
||||||
let rev = v:null
|
for l:line in readfile(l:gitdir . '/packed-refs')
|
||||||
for line in readfile(gitdir . '/packed-refs')
|
if l:line =~# ' ' . l:ref
|
||||||
if line =~# ' ' . ref
|
return substitute(l:line, '^\([0-9a-f]*\) ', '\1', '')
|
||||||
let rev = substitute(line, '^\([0-9a-f]*\) ', '\1', '')
|
|
||||||
break
|
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
else
|
|
||||||
let rev = line
|
|
||||||
endif
|
|
||||||
return rev
|
|
||||||
catch
|
catch
|
||||||
return v:null
|
|
||||||
endtry
|
endtry
|
||||||
|
return v:null
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:git_get_branch(dir) abort
|
function! s:git_get_branch(dir) abort
|
||||||
let gitdir = s:get_gitdir(a:dir)
|
let l:gitdir = s:get_gitdir(a:dir)
|
||||||
if gitdir ==# ''
|
if l:gitdir ==# ''
|
||||||
return v:null
|
return v:null
|
||||||
endif
|
endif
|
||||||
try
|
try
|
||||||
let line = readfile(gitdir . '/HEAD')[0]
|
let l:line = readfile(l:gitdir . '/HEAD')[0]
|
||||||
if line =~# '^ref: refs/heads/'
|
if l:line =~# '^ref: refs/heads/'
|
||||||
return line[16:]
|
return l:line[16:]
|
||||||
endif
|
endif
|
||||||
return ''
|
return ''
|
||||||
catch
|
catch
|
||||||
|
@ -2238,7 +2225,6 @@ function! s:git_validate(spec, check_branch)
|
||||||
let err = ''
|
let err = ''
|
||||||
if isdirectory(a:spec.dir)
|
if isdirectory(a:spec.dir)
|
||||||
let result = [s:git_get_branch(a:spec.dir), s:git_get_remote_origin_url(a:spec.dir)]
|
let result = [s:git_get_branch(a:spec.dir), s:git_get_remote_origin_url(a:spec.dir)]
|
||||||
echomsg string(result)
|
|
||||||
let remote = result[-1]
|
let remote = result[-1]
|
||||||
if !s:compare_git_uri(remote, a:spec.uri)
|
if !s:compare_git_uri(remote, a:spec.uri)
|
||||||
let err = join(['Invalid URI: '.remote,
|
let err = join(['Invalid URI: '.remote,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user