SVNgetModifiedFiles mit Revisions möglich

git-svn-id: https://vimsuite.svn.sourceforge.net/svnroot/vimsuite/trunk@190 eb2d0018-73a3-4aeb-bfe9-1def61c9ec69
This commit is contained in:
alterdepp 2010-06-10 14:51:15 +00:00
parent 7e260a1c57
commit ae7f34ccf3

View File

@ -173,28 +173,48 @@ function s:SVNadd(filename)
echo output echo output
endfunction endfunction
"----------------------------- "--------------------------------
function SVNgetModifiedFiles() function SVNgetModifiedFiles(...)
"----------------------------- "--------------------------------
let files = [] let files = []
let expression = g:svn . ' status' if a:0 > 0
let r1 = a:1
if a:0 > 1
let r2 = a:2
if str2nr(r1) > str2nr(r2)
let r = r2
let r2 = r1
let r1 = r
endif
else
let r2 = 'HEAD'
endif
let expression = g:svn . ' log --verbose --revision ' . r1 . ':' . r2
let re = '^\s\+\([AMR]\)\s\+\S*/\(src/\S*\)\(\s\+.*\)\?'
else
let expression = g:svn . ' status'
let re = '^\([AMR]\)......\s*\(\S*\)'
endif
let output = system(expression) let output = system(expression)
let lines = split(output, '\n') let lines = split(output, '\n')
for line in lines for line in lines
let file = substitute(line, '^\([AMR]\)......\s*\(\S*\)', '\2', '') let file = substitute(line, re, '\2', '')
if file == line if file == line
continue continue
endif endif
call add(files, file) call add(files, file)
endfor endfor
for file in files
endfor
return files return files
endfunction endfunction
"------------------------------- "------------------------------------
function SVNgrepModified(regexp) function SVNgrepModified(regexp, ...)
"------------------------------- "------------------------------------
let files = SVNgetModifiedFiles() execute 'let files = SVNgetModifiedFiles(' . join(a:000, ',') . ')'
let command = 'vimgrep /'.a:regexp.'/g ' . join(files, ' ') let command = 'vimgrep /'.a:regexp.'/g ' . join(files, ' ')
echo command
execute command execute command
endfunction endfunction