Some checks failed
		
		
	
	Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
				
			Detach Plugins / check (GitHub.vim) (push) Has been cancelled
				
			Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
				
			Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
				
			Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
				
			Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
				
			Detach Plugins / check (git.vim) (push) Has been cancelled
				
			Detach Plugins / check (iedit.vim) (push) Has been cancelled
				
			Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
				
			Detach Plugins / check (vim-chat) (push) Has been cancelled
				
			Detach Plugins / check (vim-cheat) (push) Has been cancelled
				
			Detach Plugins / check (vim-todo) (push) Has been cancelled
				
			Detach Plugins / check (xmake.vim) (push) Has been cancelled
				
			test / Linux (nvim, nightly) (push) Has been cancelled
				
			test / Linux (nvim, v0.3.8) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.4) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.1) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.052) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.629) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
				
			test / Linux (vim, nightly) (push) Has been cancelled
				
			test / Linux (vim, v8.0.0184) (push) Has been cancelled
				
			test / Linux (vim, v8.0.1453) (push) Has been cancelled
				
			test / Linux (vim, v8.1.2269) (push) Has been cancelled
				
			test / Linux (vim, v8.2.2434) (push) Has been cancelled
				
			test / Linux (vim, v8.2.3995) (push) Has been cancelled
				
			test / Windows (nvim, nightly) (push) Has been cancelled
				
			test / Windows (nvim, v0.3.8) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.4) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.1) (push) Has been cancelled
				
			test / Windows (vim, nightly) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1185) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1689) (push) Has been cancelled
				
			test / Windows (vim, v8.0.0027) (push) Has been cancelled
				
			test / Windows (vim, v8.0.1453) (push) Has been cancelled
				
			test / Windows (vim, v8.1.2269) (push) Has been cancelled
				
			test / Windows (vim, v8.2.2434) (push) Has been cancelled
				
			test / Windows (vim, v8.2.3995) (push) Has been cancelled
				
			docker / docker (push) Has been cancelled
				
			mirror / check (coding) (push) Has been cancelled
				
			mirror / check (gitee) (push) Has been cancelled
				
			mirror / check (gitlab) (push) Has been cancelled
				
			
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
""
 | 
						|
" @section git-cherry-pick, cherry-pick
 | 
						|
" @parentsection commands
 | 
						|
" This command is to cherry pick commit from other branch.
 | 
						|
" >
 | 
						|
"   :Git cherry-pick <HashA> <HashB>
 | 
						|
" <
 | 
						|
 | 
						|
let s:JOB = SpaceVim#api#import('job')
 | 
						|
 | 
						|
function! git#cherry_pick#run(args) abort
 | 
						|
  if len(a:args) == 0
 | 
						|
    finish
 | 
						|
  else
 | 
						|
    let cmd = ['git', 'cherry-pick'] + a:args
 | 
						|
  endif
 | 
						|
  call git#logger#debug('git-cherry-pick cmd:' . string(cmd))
 | 
						|
  let s:conflict_files = []
 | 
						|
  call s:JOB.start(cmd,
 | 
						|
        \ {
 | 
						|
        \ 'on_stderr' : function('s:on_stderr'),
 | 
						|
        \ 'on_stdout' : function('s:on_stdout'),
 | 
						|
        \ 'on_exit' : function('s:on_exit'),
 | 
						|
        \ }
 | 
						|
        \ )
 | 
						|
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:on_exit(id, data, event) abort
 | 
						|
  call git#logger#debug('git-cherry-pick exit data:' . string(a:data))
 | 
						|
  if a:data ==# 0
 | 
						|
    echo 'cherry-pick done!'
 | 
						|
  else
 | 
						|
    if s:list_conflict_files()
 | 
						|
      echo 'you need to resolve all conflicts'
 | 
						|
    else
 | 
						|
      echo 'cherry-pick failed!'
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:on_stdout(id, data, event) abort
 | 
						|
  for data in a:data
 | 
						|
    call git#logger#debug('git-cherry-pick stdout:' . data)
 | 
						|
    if data =~# '^CONFLICT'
 | 
						|
      " CONFLICT (content): Merge conflict in test.txt
 | 
						|
      let file = data[38:]
 | 
						|
      call add(s:conflict_files, file)
 | 
						|
    endif
 | 
						|
  endfor
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:on_stderr(id, data, event) abort
 | 
						|
  for data in a:data
 | 
						|
    call git#logger#debug('git-cherry-pick stderr:' . data)
 | 
						|
  endfor
 | 
						|
  " stderr should not be added to commit buffer
 | 
						|
  " let s:lines += a:data
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:list_conflict_files() abort
 | 
						|
  if !empty(s:conflict_files)
 | 
						|
    let rst = []
 | 
						|
    for file in s:conflict_files
 | 
						|
      call add(rst, {
 | 
						|
            \ 'filename' : fnamemodify(file, ':p'),
 | 
						|
            \ })
 | 
						|
    endfor
 | 
						|
    if len(rst) >= 1
 | 
						|
      call setqflist([], 'r', {'title': ' ' . len(rst) . ' items',
 | 
						|
            \ 'items' : rst
 | 
						|
            \ })
 | 
						|
      botright copen
 | 
						|
      return 1
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
endfunction
 | 
						|
 | 
						|
" usage: git cherry-pick [<options>] [<commit>...]
 | 
						|
" or: git cherry-pick --abort
 | 
						|
" or: git cherry-pick --continue
 | 
						|
"
 | 
						|
 | 
						|
 | 
						|
function! s:args_with_two() abort
 | 
						|
  return join([
 | 
						|
        \ '--no-commit',
 | 
						|
        \ '--continue',
 | 
						|
        \ '--abort',
 | 
						|
        \ '--quit',
 | 
						|
        \ ], "\n")
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:args_with_one() abort
 | 
						|
  return join([
 | 
						|
        \ '-x',
 | 
						|
        \ ], "\n")
 | 
						|
 | 
						|
endfunction
 | 
						|
 | 
						|
function! git#cherry_pick#complete(ArgLead, CmdLine, CursorPos) abort
 | 
						|
  if a:ArgLead =~# '^--'
 | 
						|
    return s:args_with_two()
 | 
						|
  elseif a:ArgLead =~# '^-'
 | 
						|
    return s:args_with_one()
 | 
						|
  endif
 | 
						|
 | 
						|
  return join(s:unmerged_branchs(), "\n")
 | 
						|
 | 
						|
endfunction
 | 
						|
 | 
						|
function! s:unmerged_branchs() abort
 | 
						|
  return map(systemlist('git branch --no-merged'), 'trim(v:val)')
 | 
						|
endfunction
 | 
						|
 | 
						|
 |