Skip to content

Commit

Permalink
fix git commit.
Browse files Browse the repository at this point in the history
add svn commit.
  • Loading branch information
hrsh7th committed Oct 5, 2012
1 parent ac45d34 commit 8dff805
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 26 deletions.
46 changes: 30 additions & 16 deletions autoload/vcs/git/commit.vim
@@ -1,9 +1,16 @@
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim


" TODO: refactor.

let s:files = [] let s:files = []


function! vcs#git#commit#do(args) function! vcs#git#commit#do(args)
if !empty(s:files)
echomsg 'you should finish previous commitment.'
return
endif

let s:files = type(a:args) == type([]) ? a:args : [a:args] let s:files = type(a:args) == type([]) ? a:args : [a:args]
call system(join(['git', 'commit', '--include', join(vcs#escape(s:files), ' ')], ' ')) call system(join(['git', 'commit', '--include', join(vcs#escape(s:files), ' ')], ' '))
call vcs#execute(['tabedit', '.git/COMMIT_EDITMSG']) call vcs#execute(['tabedit', '.git/COMMIT_EDITMSG'])
Expand All @@ -21,22 +28,29 @@ function! s:commit()
let root = vcs#vcs('root', s:files) let root = vcs#vcs('root', s:files)
let save = getcwd() let save = getcwd()


call vcs#execute(['cd', root]) let yesno = input('commit? (y/n): ')
try if yesno == 'y'
let lines = substitute(vcs#system([ call vcs#execute(['cd', root])
\ 'git', try
\ 'commit', let lines = substitute(vcs#system([
\ '--include', \ 'git',
\ '-F', \ 'commit',
\ '.git/COMMIT_EDITMSG', \ '--include',
\ join(vcs#escape(s:files), ' ') \ '-F',
\ ]), '\r', '', 'g') \ '.git/COMMIT_EDITMSG',
for line in split(lines, "\n") \ join(vcs#escape(s:files), ' ')
echomsg line . "\n" \ ]), '\r', '', 'g')
endfor
catch echomsg ' '
endtry for line in split(lines, "\n")
call vcs#execute(['cd', save]) echomsg line
endfor
catch
endtry
call vcs#execute(['cd', save])
endif

let s:files = []
endfunction endfunction


let &cpo = s:save_cpo let &cpo = s:save_cpo
Expand Down
2 changes: 2 additions & 0 deletions autoload/vcs/svn.vim
Expand Up @@ -2,6 +2,8 @@ let s:save_cpo = &cpo
set cpo&vim set cpo&vim


let g:vcs#svn#log_separator = '------------------------------------------------------------------------' let g:vcs#svn#log_separator = '------------------------------------------------------------------------'
let g:vcs#svn#commit_msgfile= 'svn-commit.tmp'
let g:vcs#svn#commit_ignore = '--This line, and those below, will be ignored--'


let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
Expand Down
73 changes: 63 additions & 10 deletions autoload/vcs/svn/commit.vim
@@ -1,17 +1,70 @@
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim


" TODO: refactor.

let s:files = []

function! vcs#svn#commit#do(args) function! vcs#svn#commit#do(args)
let files = type(a:args) == type([]) ? a:args : [a:args] if !empty(s:files)
" TODO: collect windows. echomsg 'you should finish previous commitment.'
call vcs#execute([ return
\ '!', endif
\ 'svn',
\ '--editor-cmd', let s:files = type(a:args) == type([]) ? a:args : [a:args]
\ 'vim', call s:make_msgfile()
\ 'commit', call vcs#execute(['tabedit', g:vcs#svn#commit_msgfile])
\ join(vcs#escape(files), ' ')
\]) augroup VimUniteVcsSvnCommit
autocmd!
autocmd! BufWinEnter <buffer> setlocal bufhidden=delete nobuflisted noswapfile
autocmd! BufWritePre <buffer> g/^#\|^\s*$/d
autocmd! BufWinLeave <buffer> call s:commit()
augroup END
endfunction

function! s:commit()
let root = vcs#vcs('root', s:files)
let save = getcwd()
call vcs#execute(['cd', root])

let yesno = input('commit? (y/n): ')
if yesno == 'y'
try
let lines = substitute(vcs#system([
\ 'svn',
\ 'commit',
\ '-F',
\ g:vcs#svn#commit_msgfile,
\ join(vcs#escape(s:files), ' ')
\ ]), '\r', '', 'g')

echomsg ' '
for line in split(lines, "\n")
echomsg line
endfor
catch
endtry
endif
if filereadable(g:vcs#svn#commit_msgfile)
call delete(g:vcs#svn#commit_msgfile)
endif
call vcs#execute(['cd', save])

let s:files = []
endfunction

function! s:make_msgfile()
let root = vcs#vcs('root', s:files)
let save = getcwd()

call vcs#execute(['cd', root])
try
let status = map(vcs#vcs('status', s:files), "v:val.status . v:val.path[len(root) + 1:-1]")
call writefile(['', g:vcs#svn#commit_ignore, ''] + status, g:vcs#svn#commit_msgfile)
catch
endtry
call vcs#execute(['cd', save])
endfunction endfunction


let &cpo = s:save_cpo let &cpo = s:save_cpo
Expand Down

0 comments on commit 8dff805

Please sign in to comment.