-
Notifications
You must be signed in to change notification settings - Fork 3
hjdivad/vimlocalhistory
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
VLH VimLocalHistory - automatic version control for vim. Author: David J. Hamilton <davidjh@hjdivad.com> Contributors: Earl Barr <barr@cs.ucdavis.edu> *vlh* *vimlocalhistory* Contents: Requirements.............................|vlh-requirements| Installation.............................|vlh-installation| Commands.................................|vlh-commands| Configuration............................|vlh-configuration| Release notes............................|vlh-release-notes| TODO.....................................|vlh-todo| Alternatives.............................|vlh-alternatives| VLH automatically saves buffers on write using git. This provides a convenient, automatic backup system of, e.g. files in /etc that are modified, as well as a poor man's "local history" (a lá the eclipse feature with the same name). Feedback, bug reports and suggestions gratefully accepted at <vlh@hjdivad.com>. ============================================================================== REQUIREMENTS *vlh-requirements* {{{1 Git must be installed on your system and `git' must be in your PATH. Tested on git version 1.5.4.3 on Ubuntu Hardy. Vim must be compiled with +ruby }}} ============================================================================== INSTALLATION *vlh-installation* {{{1 To install from a tarball: After ensuring that you meet the requirements, copy the contents of plugin to user-specific vim plugin directory, probably ~/.vim/plugin/ To install documentation, copy README (this file) to your vim documentations directory, such as ~/.vim/doc/vlh.txt. After copying the documentation, execute ":helptags ~/.vim/doc" from within vim to make the documentation accessible. To install from source: Install the requirements, additionally installing rake version 0.8.1 or higher, and then execute rake install which will install the plugin and documentation. Once VLH is installed, make sure to edit your ~/.vimrc to include let g:vlh_repository_dir = "/path/where/youd/like/to/store/localhistory" I suggest using ~/.vim/localhistory. }}} ============================================================================== COMMANDS *vlh-commands* {{{1 All commands accept a single argument, a number that specifies which past revision to use. 1 is the previous revision, 2 is the revision prior to that, etc. All commands autocomplete (starting at 1) which can be used to ensure that the revision you pass in is legal. The autocomplete feature also provides additional information after the revision number, namely the date of that revision. VLHOpen <revision> *VLHOpen* Opens the <revision>th prior version of the current buffer's path. VLHDiff <revision> *VLHDiff* Opens the <revision>th prior version of the current buffer's path, which is then |diffsplit|. VLHReplace <revision> *VLHReplace* Reverts the current buffer's path to the <revision>th prior version and sets |nomodified|. }}} ============================================================================== CONFIGURATION *vlh-configuration* {{{ The following can be set either in your vimrc file, or can be set "dynamically", i.e. you can set them from within vim and the changes will take effect immediately. g:vlh_respository_dir This specifies the path to your git repository. The path must exist, although it is not necessary to initialize the repository with `git init`. g:vlh_exclude_file_pattern A pattern to match against files to be exempted from automatic backup. This pattern is a {ruby} regular expression, not a vim pattern. g:vlh_exclude_path_pattern A pattern to match against paths to be exempted from automatic backup. This pattern is a {ruby} regular expression, not a vim pattern. ------------------------------------------------------------------------ These can't be changed dynamically. They must be specified in your vimrc and changes made after vim has launched are ignored. g:vlh_log_dir A path to output a rather minimal log file. Only useful for debugging. }}} ============================================================================== RELEASE NOTES *vlh-release-notes* {{{1 0.2 Initial version. Once users configure a location for the repo, they now get a copy of every file they save. User-specific ignore patterns are supported. }}} ============================================================================== TODO *vlh-todo* {{{1 Deal with project-todo and project-fixme Maybe package for debian http://pkg-vim.alioth.debian.org/vim-policy.txt Add some rudimentary benchmarking git commit errors (in log) when there was no change -- i.e. when you :w a buffer that hasn't been modified Add Tagging Periodic gc or something stripping out older revs when repo gets too big VLH* completion add ++.. from git-lg VLHOpen set bufhidden delete set unmodifiable Deal with slow VLH* autocomplete .. maybe Fix VLHDiff We need to set nodiff after the diff'd buffer closes Implement scp://* g:vlh_scp_root_path default to '.remotes' treat those as roots, e.g. /home /.remotes /myhost1 / /myhost2 File history buffer view (git lg ...) open diff restore edit msg - replace the buffer with another buffer that just has the commit msg - on save, kill the new buffer and show the previous one again make readonly Highlight (either with git's colouring or with syntax highlighting) In addition to syntax highlighting (commits, authors, etc.) also highlight the selected item (several lines), to make clear the target of commands (open/diff/restore/edit msg) ------------------------------------------------------------------------ Long Term (maybe features) edit history message feature cleanup disk space feature delete commit feature unify local history and repository history (e.g. support diffs of some local history revision against a repo. version) load undo history It might be cool to run a command that configures the undo stack to let you undo/redo through revisions. So if your undo stack is currently A -> B ->C we could (perhaps) prepend it with one item per revision, so that undoing past A essentially resulted in replacing the entire buffer with the previous version of the file }}} ============================================================================== ALTERNATIVES *vlh-alternatives* {{{1 If VLH doesn't quite meet your needs, feedback, bug reports and suggestions are gratefully accepted at <vlh@hjdivad.com>. Other people have also attacked this problem and you might prefer their solutions. ------------------------------------------------------------------------ writebackupVersionControl.vim http://www.vim.org/scripts/script.php?script_id=1829 Adds some version control functions (diff, restore) to writebackup.vim. ------------------------------------------------------------------------ writebackup.vim http://www.vim.org/scripts/script.php?script_id=1828 A poor man's revision control system. Provides a WriteBackup command to manually create backups. ------------------------------------------------------------------------ backup.vim http://www.vim.org/scripts/script.php?script_id=1537 Holds numbered backups inside a separate directory. ------------------------------------------------------------------------ rcsvers.vim http://vim.sourceforge.net/scripts/script.php?script_id=563 Saves backups in RCS whenever a file is saved. Inspired by savevers.vim. ------------------------------------------------------------------------ savevers.vim http://vim.sourceforge.net/scripts/script.php?script_id=89 Automatically saves and compares multiple, sequentially numbered old revisions of files. }}} vim:ft=help ts=8 sw=8 noexpandtab tw=78 foldmethod=marker
About
Poor man's automatic revision control. VLH automatically saves buffers on write using git, and provides diff, open and restore commands.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published