mirror of
https://github.com/junegunn/vim-plug.git
synced 2024-12-19 02:25:35 -07:00
git_validate: better error with checkout being ahead/diverged (#546)
This commit is contained in:
parent
b9022d9046
commit
1540764563
19
plug.vim
19
plug.vim
@ -2013,10 +2013,21 @@ function! s:git_validate(spec, check_branch)
|
||||
\ branch, a:spec.branch)
|
||||
endif
|
||||
if empty(err)
|
||||
let commits = len(s:lines(s:system(printf('git rev-list origin/%s..HEAD', a:spec.branch), a:spec.dir)))
|
||||
if !v:shell_error && commits
|
||||
let err = join([printf('Diverged from origin/%s by %d commit(s).', a:spec.branch, commits),
|
||||
\ 'Reinstall after PlugClean.'], "\n")
|
||||
let [ahead, behind] = split(s:lastline(s:system(printf(
|
||||
\ 'git rev-list --count --left-right HEAD...origin/%s',
|
||||
\ a:spec.branch), a:spec.dir)), '\t')
|
||||
if !v:shell_error && ahead
|
||||
if behind
|
||||
" Only mention PlugClean if diverged, otherwise it's likely to be
|
||||
" pushable (and probably not that messed up).
|
||||
let err = printf(
|
||||
\ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
|
||||
\ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', a:spec.branch, ahead, behind)
|
||||
else
|
||||
let err = printf("Ahead of origin/%s by %d commit(s).\n"
|
||||
\ .'Cannot update until local changes are pushed.',
|
||||
\ a:spec.branch, ahead)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
@ -212,7 +212,7 @@ Expect:
|
||||
[==]
|
||||
x seoul256.vim:
|
||||
|
||||
Execute (Corrected the URI but diverged from master):
|
||||
Execute (Corrected the URI but ahead of upstream):
|
||||
call plug#begin()
|
||||
Plug 'junegunn/seoul256.vim'
|
||||
Plug 'file:///tmp/vim-plug-test/jg/vim-emoji'
|
||||
@ -223,8 +223,8 @@ Execute (Corrected the URI but diverged from master):
|
||||
call PlugStatusSorted()
|
||||
|
||||
Expect:
|
||||
Diverged from origin/master by 3 commit(s).
|
||||
Reinstall after PlugClean.
|
||||
Ahead of origin/master by 3 commit(s).
|
||||
Cannot update until local changes are pushed.
|
||||
- vim-emoji: OK
|
||||
Finished. 1 error(s).
|
||||
[==]
|
||||
@ -237,11 +237,44 @@ Expect:
|
||||
# q
|
||||
# PGdd
|
||||
|
||||
Execute (PlugClean! to remove seoul256.vim):
|
||||
Execute (PlugClean! keeps seoul256.vim):
|
||||
PlugClean!
|
||||
" Three removed, emoji left
|
||||
AssertEqual 'Removed 3 directories.', getline(4)
|
||||
AssertExpect '^\~ ', 3
|
||||
" Two removed, emoji and seoul256 left
|
||||
AssertEqual 'Removed 2 directories.', getline(4)
|
||||
AssertExpect '^\~ ', 2
|
||||
AssertExpect 'Diverged', 0
|
||||
Assert !empty(globpath(&rtp, 'colors/seoul256.vim'))
|
||||
Assert !empty(globpath(&rtp, 'autoload/emoji.vim'))
|
||||
q
|
||||
|
||||
Execute (Make seoul256 to be diverged):
|
||||
call plug#begin()
|
||||
Plug 'junegunn/seoul256.vim'
|
||||
Plug 'file:///tmp/vim-plug-test/jg/vim-emoji'
|
||||
call plug#end()
|
||||
call system(printf(join([
|
||||
\ 'cd "%s"',
|
||||
\ 'git fetch --unshallow',
|
||||
\ 'git reset "@{u}~1"',
|
||||
\ 'git commit --allow-empty -m "diverged1"',
|
||||
\ 'git commit --allow-empty -m "diverged2"'], ' && '),
|
||||
\ g:plugs['seoul256.vim'].dir))
|
||||
Assert empty(v:shell_error), 'Got shell error: '.v:shell_error
|
||||
call PlugStatusSorted()
|
||||
|
||||
Expect:
|
||||
Backup local changes and run PlugClean and PlugUpdate to reinstall it.
|
||||
Diverged from origin/master (2 commit(s) ahead and 1 commit(s) behind!
|
||||
- vim-emoji: OK
|
||||
Finished. 1 error(s).
|
||||
[==]
|
||||
x seoul256.vim:
|
||||
|
||||
Execute (PlugClean! removes seoul256.vim):
|
||||
PlugClean!
|
||||
" One removed, emoji left
|
||||
AssertEqual 'Removed 1 directories.', getline(4)
|
||||
AssertExpect '^\~ ', 1
|
||||
AssertExpect 'Diverged', 1
|
||||
Assert empty(globpath(&rtp, 'colors/seoul256.vim'))
|
||||
Assert !empty(globpath(&rtp, 'autoload/emoji.vim'))
|
||||
|
Loading…
Reference in New Issue
Block a user