History Report a problem
Article Edit this page Discussion

Call TortoiseSVN commands from within Vim

From Vim Tips Wiki

(Redirected from VimTip1491)
Jump to: navigation, search

Tip 1491 Previous TipNext Tip

Created: January 26, 2007 Complexity: basic Author: Rex Kerr Minimum version: 5.7 Karma: 18/8 Imported from: Tip#1491


Tortoise SVN is the best Subversion GUI available. That said, it would be nice if you could launch the various commands from within Vim so that you don't have to go back to Explorer to get the context menu. Here are some mappings that work on the current buffer.

" Save the current buffer and execute the Tortoise SVN interface's diff program
map <silent> ,tdiff :w<CR>:silent !"C:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:diff /path:"%" /notempfile /closeonend"<CR>

" Save the current buffer and execute the Tortoise SVN interface's log
map <silent> ,tlog :w<CR>:silent !"C:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:log /path:"%" /notempfile /closeonend"<CR>

" Save the current buffer and execute the Tortoise SVN interface's revision graph
map <silent> ,trevs :w<CR>:silent !"C:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:revisiongraph epath:"%" /notempfile /closeonend"<CR>

" Save the current buffer and execute the Tortoise SVN interface's blame program
map <silent> ,tblame :call TortoiseBlame()<CR>

function! TortoiseBlame()
  " Save the buffer
  silent execute(':w')
  " Now run Tortoise to get the blame dialog to display
  let filename = expand("%")
  let linenum = line(".")
  silent execute('!C:\Progra~1\TortoiseSVN\bin\TortoiseProc.exe /command:blame /path:"' . filename . '" /line:' . linenum . ' /notempfile /closeonend')
endfunction

Others can be added very simply by using these as a template. The command line options are documented at http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html

[edit] Comments

I use Vim from within bash on Windows XP and had to switch the path's to be more cygwin compliant. I also switched some of the double quotes to single quotes. Everything works great except that it takes forever to build my revision graph. Here's my slight changes. I also used a different mapping than above, but that just a preference of mine:

" Save current buffer and diff the file using Tortoise SVN
map <unique> <silent> <leader>td :w<CR>:silent !'/C/Program Files/TortoiseSVN/bin/TortoiseProc.exe' /command:diff /path:'%' /notempfile /closeonend<CR>

" Save current buffer and launch Tortoise SVN's revision graph
map <unique> <silent> <leader>tr :w<CR>:silent!'/C/Program Files/TortoiseSVN/bin/TortoiseProc.exe' /command:revisiongraph epath:'%' /notempfile /closeonend<CR>

" Save the current buffer and execute the Tortoise SVN interface's blame program
map <unique> <leader>tb :call TortoiseBlame()<CR>

" Save the current buffer and execute the Tortoise SVN interface's log
map <unique> <silent> <leader>tl :w<CR>:silent !'/c/Program Files/TortoiseSVN/bin/TortoiseProc.exe' /command:log /path:'%' /notempfile /closeonend<CR>

function! TortoiseBlame()
  " Save the buffer
  silent execute(':w')
  " Now run Tortoise to get the blame dialog to display
  let filename = expand("%")
  let linenum = line(".")
  execute('!/C/Progra~1/TortoiseSVN/bin/TortoiseProc.exe /command:blame /path:' . filename . ' /line:' . linenum . ' /notempfile /closeonend')
endfunction

And for those who want to use Vim from Tortoise:

Go to tortoisesvn, settings

Diff viewer : gvim -d %base %mine

Merge Tool : gvim -c":tabnew %merged" -d  %theirs %mine


Rate this article:

Share this article:

Hubs Highlights International Sites Wikia messages
Entertainment
Gaming
Cartoons & Comics
Science Fiction
Hobbies
Sports
See all...
Grand Theft Auto
Pushing Daisies
Legend of Zelda Wiki
Terminator Wiki
Everquest II Wiki
Astronomy Wiki
German
Spanish
Chinese
Japanese
More...
Wikia is hiring for several open positions


Vote for featured Wikia!

Send this article to a friend
"Call TortoiseSVN commands from within Vim"
 
 
Hi!

I thought you'd like this page from Wikia!

http://vim.wikia.com

Come check it out!
Send confirmation