sponsor Vim development Vim logo Vim Book Ad

vcscommand.vim : CVS/SVN/SVK/git/hg/bzr integration plugin

 script karma  Rating 3636/1480, Downloaded by 66546  Comments, bugs, improvements  Vim wiki

created by
Bob Hiestand
script type
VIM 7 plugin useful for manipulating files controlled by CVS, SVN, SVK, git, bzr, and hg within VIM, including committing changes and performing diffs using the vimdiff system.  Keywords:  bazaar bzr cvs CVS cvscommand git mercurial hg subversion SVN svk vcscommand

The source for this plugin is available in git at git://repo.or.cz/vcscommand .  A web front end is available at http://repo.or.cz/w/vcscommand.git .

Please submit any issues at http://code.google.com/p/vcscommand/
install details
If you are upgrading from the cvscommand.vim script, remove the cvscommand.vim plugin and the cvscommand.txt help file from your system before installing this version.  Also, read the CHANGES.txt file to learn about changes since cvscommand.vim.

For Vim 7:

  Unzip the installation file.
  Move the vcscommand.vim, vcscvs.vim, vcssvn.vim, vcssvk.vim, and vcsgit.vim scripts into your plugin directory.
  Move the vcscommand.txt file into your doc directory and use the ':helptags' command to add it to your help directory (:help add-local-help).

Optionally, you can move the syntax scripts into your syntax directory to get syntax highlighting of annotate result buffers.

For vim 6.x:

Use a previous version of the script (1.76 of cvscommand.zip).  This only supports CVS.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
vcscommand-1.99.47.zip 1.99.47 2013-04-12 7.0 Bob Hiestand Re-enable the executable name quoting previously disabled in 1.99.43.  Please let me know if this causes problems.

Handle ignored files in SVN to avoid errors in GetBufferInfo.

Respect VCSCommandEdit setting of 'edit' in 2-argument VCSVimDiff.
vcscommand-1.99.46.zip 1.99.46 2011-12-06 7.0 Bob Hiestand Fix VCSVimDiff to work with 7.2 and lower again.

Always start a new row of windows when executing a split annotate.
vcscommand-1.99.45.zip 1.99.45 2011-10-19 7.0 Bob Hiestand Identify files under svn 1.7.
Don't check repo status for svn buffer info.
Fix HG :VCSAnnotate in VCSAnnotate buffer.
Handle &sel of 'exclusive' in split annotation.
Use case-insensitive tests for VCS file types.
vcscommand-1.99.44.zip 1.99.44 2011-10-03 7.0 Bob Hiestand Protect against versions of VIM that don't have fnameescape().
Added option 'VCSCommandVCSTypeOveride'
Added option 'VCSCommandVCSTypePreference'
Protect against systems without +mbyte.
Respect fenc when reviewing, annotating, or diffing.
Encode commit messages as &tenc.
vcscommand-1.99.43.zip 1.99.43 2011-06-02 7.0 Bob Hiestand Important:  Don't try to escape executable names for shell execution. This means you'll need to make sure you've escaped special executable names for your particular system correctly.
Respect 'no_plugin_maps'.
fix escaping in VCSCommandChdir
Account for space used by 'number' option when performing split annotate.
Restore cursorbind as part of vimdiff restore.
Handle a difference between &enc and &tenc
Always use [bang] after :normal to avoid user remaps.
Added VCSCommandSetVCSType()

vcscommand-1.99.42.zip 1.99.42 2010-09-03 7.0 Bob Hiestand svnannotate:  handle longer revision numbers

VCSVimDiff:  handle 1 vimdiff session per tab

menu:  Add VCSCommandDisableMenu, VCSCommandMenuRoot, and VCSCommandMenuPriority variables to customize the GUI menu.

vcshg:  correct message for empty commit
vcscommand-1.99.41.zip 1.99.41 2010-08-20 7.0 Bob Hiestand VCSStatus:  fix option pass-through

git:  show correct message for empty commit

all:  fixed scratch buffer naming when buffers are not listed

hg:  Provide a more useful commit info buffer

hg:  show feedback on vcsadd via verbose option
vcscommand-1.99.40.zip 1.99.40 2010-03-30 7.0 Bob Hiestand *  Do not write to bzr log when identifying

*  vcssvn:  Handle newer SVN 'status -vu' format.
vcscommand-1.99.39.zip 1.99.39 2010-03-29 7.0 Bob Hiestand *IMPORTANT for Windows Users*  Please let me know if this change breaks your commit functionality.

*  Removes use of 'shellslash' from the commit process.

* Adds a call to user-defined autocommand VCSBufferCreated after the commit log message buffer is created.
vcscommand-1.99.38.zip 1.99.38 2010-02-19 7.0 Bob Hiestand VCSVimDiff:  Preserve filetype in review buffers.

This fixes a feature broken in 1.99.36.
vcscommand-1.99.37.zip 1.99.37 2010-02-02 7.0 Bob Hiestand filetype of scratch buffers changed to lowercase for consistency.

Syntax files renamed to lowercase.  You will probably want to remove existing syntax files from this plugin before installing this version.
vcscommand-1.99.36.zip 1.99.36 2010-01-29 7.0 Bob Hiestand VCSAnnotate now jumps to the current line in the annotated buffer (if annotating the current revision).

VCSLog for CVS no longer sets the file type to 'rcslog'.  If you use that for syntax coloring, you may want to add something like the following to your vimrc:

au FileType CVSlog set syntax=rcslog
vcscommand-1.99.35.zip 1.99.35 2010-01-26 7.0 Bob Hiestand Fixed hang in MacVim on Snow Leopard (thanks to Adam Lickel).
vcscommand-1.99.34.zip 1.99.34 2010-01-11 7.0 Bob Hiestand vcshg:  Added annotate syntax.
vcscommand.zip 1.99.33 2010-01-08 7.0 Bob Hiestand HG improvements:

Fixed variable assignment bug in GetBufferInfo.
Add username to blame output.
Added split annotate view.
vcscommand.zip 1.99.32 2010-01-07 7.0 Bob Hiestand * Resolve ambiguous file/branch names.
* Work correctly with blanks in 'VCSCommandXXXExec' variable.

vcsbzr:  Add VCSCommandDisableAll kill switch.
vcsbzr:  use annotate split mode.
vcscvs:  Made GetRevision() script-local.
vcshg: Identify hg version control when not in the root of a repository.
gitAnnotate.vim:  match original commits in blame
vcscommand.zip 1.99.31 2009-07-21 7.0 Bob Hiestand Added VCSAnnotate! (and VCSBlame!) (default keybinding <leader>cN) to split the resulting buffer into separate header and content windows.

Included support for bzr and hg (as generously provided by others).

Added syntax file for git annotate buffers.
vcscommand.zip beta30 2009-07-20 7.0 Bob Hiestand vcscvs:  Removed useless (and bug-inspiring) aunmenu.

vcscvs:  Remove extraneous debug message issued by recent cvs.

Fixed typo in sample macro documentation.
vcscommand.zip beta29 2009-02-13 7.0 Bob Hiestand Added 'VCSCommandVCSTypeOverride' variable for explicitly overriding VCS type detection for specific directories.
vcscommand.zip beta28 2008-09-24 7.0 Bob Hiestand Add 'VCSCommandDisableAll' variable to prevent the plugin or any extensions from loading.

vcssvn:  prevent hangs caused by querying the user for input by specifying '--non-interactive' on the appropriate commands.

Use &diffopt to seed the default DiffSplit orientation. (James Vega)
vcscommand.zip beta28 2008-09-24 7.0 Bob Hiestand Add 'VCSCommandDisableAll' variable to prevent the plugin or any extensions from loading.

vcssvn:  prevent hangs caused by querying the user for input by specifying '--non-interactive' on the appropriate commands.

Use &diffopt to seed the default DiffSplit orientation. (James Vega)
vcscommand.zip beta27 2008-08-28 7.0 Bob Hiestand Shortcut / mapping configuration changes:

Do not fail out of plugin at first failed mapping.  Indicate mapping conflicts only if 'verbose' is set.
Add new option 'VCSCommandMapPrefix' for overriding the default prefix '<Leader>c' in mappings.
Add new option 'VCSCommandMappings' to completely override all default mappings.
vcscommand.zip beta 26 2008-06-19 7.0 Bob Hiestand vcsgit:  Set &ft correctly for VCSStatus buffers.

vcsgit:  Quote the blob name for VCSReview to handle paths with spaces.
vcscommand.zip beta25 2008-06-03 7.0 Bob Hiestand This fixes the  'cdpath' error in git VCSReview and (2 argument) VCSVimDiff.
vcscommand.zip beta24 2008-05-20 7.0 Bob Hiestand       Revert "Call subversion with the '--non-interactive' switch to avoid locking up when authentication can't be prompted."
      Use 'setlocal' instead of 'set' for all buffer option changes.
      Use 'enew' followed by 'file' instead of 'edit' when creating output buffers.
      Don't execute autocommands when naming VCS command output buffers.

This set of changes may avoid issues related to autocommands that execute when the command result buffer is opened.
vcscommand.zip beta22 2008-03-17 7.0 Bob Hiestand Added VCSCommandGitDescribeArgList option to control allowed modes of 'git describe' used in GetBufferInfo for git.  This is a comma-separated list of arguments to try against git-describe.  This is an attempt to have prioritized fallbacks of descriptions, and runs in order until it finds a valid description.  This value defaults to ',tags,all,always', and so first searches annotated tags, then tags, then all references, then a commit description.
vcscommand.zip beta21 2008-03-11 7.0 Bob Hiestand Tweaked buffer info for git buffers.

Don't clobber &cp when testing for a vcs command.

Added 'options' Dict to VCSCommandDoCommand for tweaking framework behavior.

Allow non-zero vcs command exit status when 'allowNonZeroExit' option is passed to VCSCommandDoCommand.

Implemented VCSStatus for git as (repository-wide) 'git status'.

Converted to leading tab style.

Distinguish between exact and inexact identifications by extensions.

Mark git identification as inexact, so that using another VCS to control directories somewhere under a git-controlled directory does not identify the files incorrectly as git.

Moved CHANGES.txt content into help file.
vcscommand.zip beta20 2008-02-01 7.0 Bob Hiestand Implemented (first pass of) git support.

Temporarily removed buffer status/command verification scheme.

Save and restore 'foldlevel' with VCSVimDiff.

Added VCSRemove as alias for VCSDelete.
Added VCSBlame as alias for VCSAnnotate.
vcscommand.zip beta19 2007-07-31 7.0 Bob Hiestand Load the plugin with nocompatible set, as it should have been done a few years ago.
vcscommand.zip beta18 2007-05-15 7.0 Bob Hiestand Added 'VCSCommandDisableMappings' and 'VCSCommandDisableExtensionMappings' options.  If set, these variables prevent creation of the default command key mappings.
vcscommand.zip beta17 2007-05-15 7.0 Bob Hiestand Use 'executable()' to test for VCS tools (to avoid potentially slow operation at plugin load time).

Always pass current revision to VCSAnnotate when using CVS with no arguments.
vcscommand.zip beta16 2007-04-30 7.0 Bob Hiestand VCSLog accepts passthrough options.
VCSDiff correctly checks whether second argument starts with hyphen when deciding whether to pass-through.
vcscommand.zip beta15 2007-04-24 7.0 Bob Hiestand Use 'haslocaldir()' if available to correctly handle windows that used :lcd.

Made VCSDiff pass-through.

Fixed SVK VCSDiff implementation.

Made VCSCommands work a bit better on directory buffers (netrw).

Replaced delayed extension registration to directly loading the main plugin from
extension plugins.  This allows base functions declared in the main plugin to
be used in the extensions.

Fixed SVN diff to actually use 'VCSCommandSVNDiffOpt' option.
vcscommand.zip beta14 2007-04-12 7.0 Bob Hiestand Reincarnated 'CVSAnnotateParent' option for CVS as 'VCSCommandCVSAnnotateParent'.

Close all vcscommand result buffers when vim exits to prevent them from being written to the viminfo file.
vcscommand.zip beta13 2007-03-12 7.0 Bob Hiestand Fixed following commands (broken in Beta 12):
vcscommand.zip beta12 2007-02-28 7.0 Bob Hiestand Added SVK support.

Replaced SVN-specific command SVNInfo with VCSInfo, which is defined for SVK
and SVN.  This is mapped to '<leader>ci' by default; as a consequence, the
default mapping for the CVS-specific CVSEditors command was changed to

Made VCSAnnotate accept parameters to pass to the underlying VCS.

Made error messages for operations on non-versioned files more consistent.

Added check to disable individual VCS extension plugins.
vcscommand.zip beta11 2007-02-20 7.0 Bob Hiestand Added VCSCommandSVNDiffExt option to allow external diff applications.
Added VCSDelete command.
Added pass-through parameters to VCS Add, Delete, Log, Status, Lock, and Unlock commands (extra parameters to the command are given to the underlying VCS command).
vcscommand.zip Beta10 2006-11-02 7.0 Bob Hiestand Changed file type of commit log buffers to 'commitlog' (from 'commit log') to avoid FileType errors.

Added 'VCSCommandSVNDiffOpt' to pass options to the svn diff -x parameter.
vcscommand.zip Beta9 2006-09-11 7.0 Bob Hiestand Added 'VCSCommandResultBufferNameExtension' option for adding a custom extension to the VCS output buffer names.  This is intended to help users experiencing issues due to autocommands and other settings that depend on buffer name.

Added 'VCSCommandResultBufferNameFunction' option for completely over-riding the procedure for generating the result buffer names.
vcscommand.zip Beta8 2006-08-14 7.0 Bob Hiestand Changed behavior of plugin within Explorer/netrw -style directory buffers.  Commands within such a buffer now act as though invoked on that directory, and so affect all files (and subdirectories), regardless of where the cursor is within the directory buffer.
vcscommand.zip Beta5 2006-08-09 7.0 Bob Hiestand Corrected shortcut help text in commit message buffer.
vcscommand.zip Beta4 2006-08-09 7.0 Bob Hiestand Changed default mappings back to those from cvscommand (starting with
'<Leader>c' instead of '<Leader>v'.  This is to avoid conflict with existing plugins using the '<Leader>v' prefix.  Please note that the mappings can still be overridden by the user using <Plug> mappings.  Please consult the documentation for more information.

Removed special characters other than parentheses from output buffer names.  This is to address buffer name problems on Windows.
vcscommand.zip Beta3 2006-08-04 7.0 Bob Hiestand Initial public release of vcscommand (based on cvscommand) to integrate subversion (SVN) and utilize VIM 7.0 features.
cvscommand.zip 1.76 2006-02-22 6.0 Bob Hiestand Added optional direct specification of log message on :CVSCommit command (to avoid using the log message buffer).  Usage:

:CVSCommit <log message text here>
cvscommand.zip 1.75 2006-02-13 6.0 Bob Hiestand Forced file changed check whenever the original CVS file could have changed, even in split window environments (per Luca Gerli).
cvscommand.zip 1.74 2006-02-06 6.0 Bob Hiestand * Added ability to use CVSCommand functions / hotkeys on directory listing buffers, specifically the file explorer.
* CVSAnnotate:  Previously, if CVSAnnotate was invoked on a CVSAnnotate buffer, the new annotate buffer would go to the version just prior to the one on the current line.  Now, the new buffer uses the version on the current line.  To obtain the old behavior, set CVSCommandAnnotateParent to a non-zero value.  The header lines resulting from the cvs annotate command are now trimmed.  No attempt is made to jump to the 'correct' line in a CVSAnnotate buffer, as it is unlikely to be the correct line anyway.
cvscommand.zip 1.73 2006-01-23 6.0 Bob Hiestand Fixed typo in sample map in documentation per Luca Gerli.
cvscommand.zip 1.72 2006-01-17 6.0 Bob Hiestand Moved version check to after the loaded_cvscommand check.
cvscommand.zip 1.71 2005-11-22 6.0 Bob Hiestand Restored CVSVimDiffFinish user autocommand which executes after a CVSVimDiff
(in order to allow customization of window placement, etc).
cvscommand.zip 1.70 2005-11-10 6.0 Bob Hiestand Fixes bug that resulted in working directory change.

Displays warning to user and will not load if running on VIM earlier than 6.2.
cvscommand.zip 1.68 2005-06-30 6.0 Bob Hiestand Fixed bug with autochdir and CVSCommit.
(Repackaged from previous upload, which had new script in wrong place and old script in right place).du
cvscommand.zip 1.67 2004-09-27 6.0 Bob Hiestand Corrected b:CVSRepository variable for CVSAdd'd files.  This will fix status line display for these files, if the default (cvs) status line is used.
cvscommand.zip 1.66 2004-09-14 6.0 Bob Hiestand Changed maintainer email address.
cvscommand.zip 1.65 2004-08-02 6.0 Bob Hiestand Added instructions for integrating with SSH.

Added CVSCommandCVSExec option to specify cvs executable path.

Added CVSBufferSetup user event.
cvscommand.zip 1.64 2004-05-12 6.0 Bob Hiestand Delete folds created by vimdiff mode in CVSVimDiff if the original window used manual folds, when it is restored.

Always set scrollbind in the result window of a CVSVimDiff in order to combat the effects of splitting windows resetting scrollbind.  Please let me know if this causes anyone trouble.
cvscommand.zip 1.63 2003-07-03 6.0 Bob Hiestand Bugfix release.  Buffers start with 1, not 0.  Switch to the original buffer first before destorying CVS buffers in
CVSGotoOriginal! in order to preserve window layout.
cvscommand.zip 1.62 2003-07-02 6.0 Bob Hiestand Added b:CVSRepository as a standard variable if buffer setup is enabled.

Changed sample status line to display the repository version number if it differs from
the working version number.

Added recursive annotation functionality.

Silenced text puts to set up the CVSCommit buffer.

Added CVSVimDiffFinish event for window placement customization.

Implemented the remove-all-CVS-buffers aspect of CVSGotoOriginal! in a slightly
more sane way.

Added 'foldenable' to the list of restored options for
cvscommand.zip 1.54 2003-04-28 6.0 Bob Hiestand Added recognition of numerical tags for use as sticky tags.
cvscommand.zip 1.52 2003-04-18 6.0 Bob Hiestand Added the CVSGotoOriginal[!] command and mappings (<Leader>cg and <Leader> cG for with and without '!', respectively).  This command jumps to the source buffer if the current buffer is a CVS output buffer.  The '!' also closes all CVS output buffer for the given source buffer.
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.