Where I work, we use Microsoft's Team Foundation Server Source Control. It's not very good at merging, but other than that it's a good tool.
Unlike some other source control tools, in TFS a "get" downloads the latest version of a file, a "checkout" lets you edit a file. Basically all a checkout does is make the file not readonly, but you have to do it or else TFS wont let you check the file in when you're done.
Because of this, if you're using Vim to do your work, when you first open a file and try to go into edit mode Vim will warn you that the file is readonly. This reminds you that you need to check it out. It would be very annoying if you had to switch over to the command line (or VS!) to check it out just so you could start editing. So don't do that! Just add this to your vimrc:
" setup TFS integration
function! Tfcheckout()
exe '!tf checkout "' expand('%:p') '"'
endfunction
command! Tfcheckout :call Tfcheckout()
function! Tfcheckin()
exe '!tf checkin "' expand('%:p') '"'
endfunction
command! Tfcheckin :call Tfcheckin()
function! Tfcheckout()
exe '!tf checkout "' expand('%:p') '"'
endfunction
command! Tfcheckout :call Tfcheckout()
function! Tfcheckin()
exe '!tf checkin "' expand('%:p') '"'
endfunction
command! Tfcheckin :call Tfcheckin()
The "expand" part will expand to the current file with it's full path included (Note: you have to use the execute command instead of running the ! command directly or else you'll have problems with parenthesis not being properly escaped in your file path).
Now you can simply type :Tfcheckout, and the file will be checked out. When you're all done type :Tfcheckin and the TFS checkin dialog will open, allowing you to enter a comment, checkin any other files, associate the checkin with a TFS work item, etc.
I have added the following to your code. It requires Team Foundation Power Tools for the history command, and checking comments are truncated, but it still is handy:
ReplyDeletefunction! TFhistory()
if bufnr("TFhistory") >0
exe "sb TFhistory"
else
exe "split TFhistory"
endif
setlocal noswapfile
set buftype=nofile
setlocal modifiable
silent! exe 'r!tfpt history "#"'
setlocal nomodified
normal 1G
wincmd J
endfunction
command! TFhistory :call TFhistory()
Hello, as i can't acces tf by the cmd used the following vimrc:
ReplyDeletecolorscheme slate
function! TFcheckout()
exe '!""C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" checkout "'expand('%:p')'""'
endfunction
command! TFcheckout :call TFcheckout()
function! TFcheckin()
exe '!""C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" checkout "'expand('%:p')'""'
endfunction
command! TFcheckin :call TFcheckin()
function! TFhistory()
if bufnr("TFhistory") >0
exe "sb TFhistory"
else
exe "split TFhistory"
endif
setlocal noswapfile
set buftype=nofile
setlocal modifiable
silent! exe 'r!""C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe" history "#""'
setlocal nomodified
normal 1G
wincmd J
endfunction
command! TFhistory :call TFhistory()
There's a full vim script to do this now:
ReplyDeletehttp://www.vim.org/scripts/script.php?script_id=3808
When you open a file in visual studio it checks out the file when you modify it.
ReplyDeleteTo do something along those lines I added this to my _vimrc:
au BufReadPre * if &readonly | call Tfcheckout() | endif
This worked for me:
ReplyDeletennoremap to :execute "!tf checkout " . expand('%:p')