-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
Keeps track of the current commit with a vundle_update tag before perfoming an update and adds all commits pulled in the update to a Changelog accessible via pressing 'u' after BundleInstall! completes.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -204,6 +204,7 @@ func! s:sync(bang, bundle) abort | |
let cmd = substitute(cmd, '^cd ','cd /d ','') " add /d switch to change drives | ||
let cmd = '"'.cmd.'"' " enclose in quotes | ||
endif | ||
call s:add_update_tag(a:bundle) | ||
else | ||
let cmd = 'git clone '.a:bundle.uri.' '.shellescape(a:bundle.path()) | ||
endif | ||
|
@@ -222,13 +223,27 @@ func! s:sync(bang, bundle) abort | |
return 'todate' | ||
end | ||
|
||
call s:add_to_updated_bundle_list(a:bundle) | ||
return 'updated' | ||
endf | ||
|
||
func! s:system(cmd) abort | ||
return system(a:cmd) | ||
endf | ||
|
||
func! s:add_update_tag(bundle) abort | ||
call s:system('cd '.shellescape(a:bundle.path()). | ||
\ ' && git tag -a vundle_update -m "Last Vundle Update" -f') | ||
endfunc | ||
|
||
func! s:add_to_updated_bundle_list(bundle) abort | ||
let current_commit = s:system('cd '.shellescape(a:bundle.path()).' && git rev-list HEAD') | ||
let initial_commit = s:system('cd '.shellescape(a:bundle.path()).' && git rev-list vundle_update') | ||
if (0 == v:shell_error) && (initial_commit != current_commit) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
zolrath
Author
Owner
|
||
call add(g:updated_bundles, a:bundle) | ||
endif | ||
endfunc | ||
|
||
func! s:log(str) abort | ||
let fmt = '%y%m%d %H:%M:%S' | ||
call add(g:vundle_log, '['.strftime(fmt).'] '.a:str) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,6 +33,33 @@ func! s:view_log() | |
wincmd P | wincmd H | ||
endf | ||
|
||
func! s:create_changelog() abort | ||
for bundle in g:updated_bundles | ||
This comment has been minimized.
Sorry, something went wrong.
gmarik
|
||
let updates = system('cd '.shellescape(bundle.path()). | ||
\ ' && git log --pretty=format:"%s %an, %ar" --graph'. | ||
\ ' vundle_update..HEAD') | ||
call add(g:vundle_changelog, '') | ||
call add(g:vundle_changelog, 'Updated Bundle: '.bundle.name) | ||
for update in split(updates, '\n') | ||
let update = substitute(update, '\s\+$', '', '') | ||
call add(g:vundle_changelog, ' '.update) | ||
endfor | ||
endfor | ||
endf | ||
|
||
func! s:view_changelog() | ||
call s:create_changelog() | ||
|
||
if !exists('g:vundle_changelog_file') | ||
let g:vundle_changelog_file = tempname() | ||
endif | ||
|
||
call writefile(g:vundle_changelog, g:vundle_changelog_file) | ||
silent pedit `=g:vundle_changelog_file` | ||
|
||
wincmd P | wincmd H | ||
endf | ||
|
||
func! vundle#scripts#bundle_names(names) | ||
return map(copy(a:names), ' printf("Bundle ' ."'%s'".'", v:val) ') | ||
endf | ||
|
@@ -80,6 +107,7 @@ func! vundle#scripts#view(title, headers, results) | |
|
||
com! -buffer -nargs=0 VundleLog call s:view_log() | ||
|
||
com! -buffer -nargs=0 VundleChangelog call s:view_changelog() | ||
|
||
nnoremap <buffer> q :silent bd!<CR> | ||
nnoremap <buffer> D :exec 'Delete'.getline('.')<CR> | ||
|
@@ -91,6 +119,7 @@ func! vundle#scripts#view(title, headers, results) | |
nnoremap <buffer> I :exec 'InstallAndRequire'.substitute(getline('.'), '^Bundle ', 'Bundle! ', '')<CR> | ||
nnoremap <buffer> l :VundleLog<CR> | ||
nnoremap <buffer> u :VundleChangelog<CR> | ||
nnoremap <buffer> h :h vundle<CR> | ||
nnoremap <buffer> ? :norm h<CR> | ||
|
4 comments
on commit 0956084
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing else I guess.
Let me know what you think!
Thank you!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I implemented the new
and updated
status changes in the newest commit!
If you'd like to look at the previous implementation that iterated over each Bundle looking for updates with the tags I've included both versions in a gist: https://gist.github.com/2409649
As is I would prefer to go with the version that builds an updated_bundle list as we update Bundles so the user has a fluid experience.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please merge latest Vundle and let me know what you think!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As for gist, i'm ok going with updated_bundles as initial version, since we've minimized extra work down to tag creation during installation process...
i don't think the above 3 lines are needed here , as
return 'updated'
(:227) means that there were changes made.You can probably just add it to
g:updated_bundles