*accurev.txt* AccuRev SCM Integration for Vim Last change: 2009.08.18 *accurev-overview* *accurev-plugin* *accurev* AccuRev Integration for Vim v1.1.1 - 2009/08/18 AccuRev is a leading Software Configuration & Change Management (SCCM) system that enables massive, parallel software development across local and distributed geographic boundaries. If you develop software and need to manage multiple releases, product variants, or teams of local or remote developers, then AccuRev is for you. See more at www.accurev.com. AccuRev was once a CLI-only tool and has since included incredibly powerful visualization tools such as the StreamBrowser. Yet, for the CLI junkies in the crowd, the AccuRev CLI continues to remain a powerful and rich interface for pounding out software and sharing changes with the rest of your team. Most Vim users tend to be CLI-users and a tight integration with Vim means your fingers don't leave the keyboard, you can share your changes ealier, your software can stay as up-to-date as possible, and your productivity is ultimately Vim-proved. This plugin continues to be developed out of necessity and is used almost daily by the author. Be sure to read more of the interesting |accurev-history|. See the |accurev-maintainer| for contact information. /happy coding/ =============================================================================== Contents *accurev-contents* |accurev-features| Available features of the plugin |accurev-about| Philosophy and design background |accurev-requirements| What you require to use the plugin |accurev-installation| How to install the plugin |accurev-tutorial| 3-minute tutorial, for the impatient |accurev-startup| Startup process |accurev-settings| custom configuration options |accurev-troubleshooting| Fixes for common mistakes |accurev-tips| Helpful tips |accurev-roadmap| Features coming soon! |accurev-history| Oh the blood, sweat, and tears |accurev-author| Who on earth wrote this plugin! =============================================================================== Features / Key Mappings *accurev-features* *accurev-mappings* *accurev-commands* *accurev-keys* The following key mappings are provided. Simply press the noted key combination in Normal Mode (press ESC for Normal Mode). The default leader key is '\' and can be changed in the |accurev-settings|. ***[ Startup/Authentication ]*** \+ Load Plugin: Loads AccuRev plugin and prompts for client login \- Unload Plugin: Unloads AccuRev plugin and allows re-loading \i Info: Show client/server information \sb Stream Browser: Launch AccuRev Graphical Stream Browser \l Login: Login to AccuRev with username/password \x Logout: Logout of AccuRev ***[ Core Version Control ]*** \a Add: Add current file to AccuRev \k Keep: Keep current file in private workspace \@ Anchor: Anchor file in private workspace \p Promote: Promote current file \m Merge: Merge ~trivial~ changes only \u Update: Update entire workspace \n Update Preview: Update preview entire workspace \v Populate: Populate workspace with current element version \e Element: Show element properties \h History: Display file history for current file \b Blame/Annotate: Display and highlights per-txn change history \! Defunct: Defunct current file; remove from source control \* Undefunct: Undefunct current file; requires manual reactivation! \rb Revert-to-Backed: Revert file to backed version \rr Revert-to-Recent: Revert file to most recent version \dr Diff Most-Recent: Diff against most recent version \db Diff Backed: Diff against backed version \da Diff Basis: Diff against basis version \gp Group-Promote: Promote a group of files \ Refresh: Manual update of element status information in display \~ SyncTime: Synchronize client machine time with the server; 5-sec window ***[ Search by Status ]*** \sp (pending): Display pending (modified+kept) elements \sm (modified): Display modified elements \sk (kept): Display kept elements \sn (non-member): Display modified non-member elements (i.e. not yet kept) \sd (def group): Display default group elements \so (overlap): Display overlap elements \sO (deep overlap): Display deep overlap elements \sD (mod def grp): Display modified in default group elements \sx (external): Display external elements \sM (missing): Display external elements \ss (stranded): Display stranded elements \sX (defunct): Display defunct elements \su (stale): Display stale elements ***[ Internal Commands ]*** \? Command History: View all commands sent to the AccuRev server \A Buffer Attributes: View all AccuRev-specific attributes for current buffer (internal) =============================================================================== About *accurev-about* This plugin is written entirely out of personal necessity. Naturally, this means that the format for user interaction, direction for buffer splits, key mappings, etc. are based largely on personal preference rather than democratic consensus or user studies. That being said, I've used Vim for 10+ years, prefer my hands to stay on the keyboard, and strongly desire software usability that just-makes-sense. I hope it all makes sense to you! The general usability philosophy is centered around the ability to work in the context of multiple, concurrent buffers/windows, very similar to a GUI-based IDE. Initially, a single buffer is opened for a file. As you start viewing history, doing diffs, running updates, etc., all of these activities are present in their own inline windows. Depending on the size of your screen, you can have as many windows as you like. The plugin will search for and re-use existing windows - so running update a few times throughout the day will display in the same window; same for history, info, etc. Ideally, the single vim session will create an accurev context (or nature) that lets you interact with AccuRev all without leaving Vim. =============================================================================== Requirements *accurev-requirements* This plugin requires Vim version 7.0+. For the curious, the following 7.x features are used: List - ordered list of items Dictionary - associative array of items FuncRef - reference to a function string() - string representation of a variable/datastruct :let ops - using +=/-=/.= for incrementing variables add() - used to append to a list getbufline() - get a list of lines from a buffer has_key() - test for key entry in a Dictionary join() - join items from a List into a string In addition, the following options are required to be compiled into Vim. Most standard binary builds of Vim should have them enabled. To see which options your Vim currently has, type ':version' +autocmd = needed for event handling +modify_fname = needed for parsing filenames and paths +statusline = needed for showing file status' +reltime = needed for showing command timing stats +diff = needed for embedded diffing/merging +menu = needed for console menus (e.g. ) +listcmds = needed for buffer looping =============================================================================== Installation *accurev-installation* Installing the AccuRev SCM plugin for Vim is easy. NOTE: Be sure you have already installed the AccuRev client (www.accurev.com/download) and it is in your PATH. 0. Download - obtain the plugin from any of these sites: * vim4accurev.com [stable/beta releases] * vim.org --> scripts [stable releases] 1. Install - unpack archive _directly_ in your vim runtime path. Unix: $HOME/.vim Windows: %HOMEPATH%\vimfiles Check that /plugin/accurev.vim and /doc/accurev.txt exist. 2. Setup - Install help documentation by launching Vim and executing: Unix: :helptags ~/.vim/doc Windows: :helptags ~\vimfiles\doc Verify the setup by typing ':help accurev' within Vim. 3. Verify - Open a file within a local AccuRev workspace. By default the plugin will load and prompt you to login to accurev (unless you are already logged in). You should see a statusline starting with AccuRev and showing the file status in AccuRev, e.g. (backed). NOTE: the plugin loads only if 'accurev' executable is in PATH With the plugin installed, see the |accurev-tutorial| to get started. Check |accurev-troubleshooting| if you encounter any installation problems. =============================================================================== 3-min Tutorial, for the Impatient *accurev-tutorial* This tutorial assumes the following: Computer - Your computer is ON, running Unix or Windows, and not on fire. Software - The AccuRev client is installed locally (accurev.com/download) Path - 'accurev' client binary is in your PATH Plugin - You have installed ~this~ Vim plugin for AccuRev Depot - You have an AccuRev depot populated with source code Workspace - Your current working directory is an AccuRev workspace See |accurev-installation| to complete the above if necessary. Start the timer.... 0. Logout of accurev to start fresh, ('$accurev logout' from CLI) 1. 'cd' to anywhere in your AccuRev workspace -- run '$accurev info' on CLI to confirm directory is a workspace 2. Create a -new- file using vim. You will be prompted to login to AccuRev. -- Verify the default status bar says "[New]" 3. Add content on *line 1* then save (':w') -- Verify the accurev status bar says "(external)" 4. ADD the file to version control ('\a') -- Verify the accurev status bar says "(kept)(member)" 5. Make some more changes on *line 1* and *line 2*... but don't save yet! -- Notice the accurev status bar has a [+] sign indicating the buffer is modified 6. Now save the file (':w') -- Verify the accurev status bar says "(modified)(member)" 7. Diff your changes to the recently added version ('\dr') -- Verify that vimdiff shows the differences 8. Exit diff mode ('\dx') 9. KEEP your changes ('\k') -- Verify the accurev status bar says "(kept)(member)" 10. Make some more changes, and save them (':w'), and KEEP them ('\k') 11. View the HISTORY ('\h'). Verify previous transactions. Exit history, (':q') 12. Annotate/blame the file ('\b') to view per-txn history and comments. Navigate to different lines ('j/k') changed above and view each commit comment ('l' or ). Exit annotate, (':q') 13. PROMOTE your file ('\p') -- Verify the accurev status bar says "(backed)" -- Note: If AccuRev issue tracking is turned on, you'll need to enable it in the plugin. 14. Logout of AccuRev ('\x') -- Verify that the statusbar no longer says "AccuRev...." Finished!. Congratulations! You just added a new file to version control, reviewed multiple changes with inline diff, created and viewed file history, and finally promoted and shared it with others. Tip: Lets promote multiple pending files all at once. Lets say you've been adding, changing, keeping a bunch of files. Use multi-promote to promote them all in a single transaction! Replace step #10 with "Multi-promote files ('mp')". Use h,j,k,l to navigate and to select. After choosing your elements, use (:wq) to quite and promote. Now what? That's enough. Get back to work ;) Otherwise, check out |accurev-features| for all commands or |accurev-contents| for all available help content Enjoy! =============================================================================== Startup *accurev-startup* Vim automatically loads any plugin files located in its plugin path directories. By default, the accurev plugin is fully enabled at startup and prompts you to login if necessary. The plugin is loaded for each buffer, individually. If you frequently work on a disconnected network (e.g. airplane mode) or over a very-slow network connection and don't want to wait for vim to contact the [unavailable/slow] AccuRev server, you may want to override the default setting by disabling the plugin on startup. To enable the plugin on-demand within vim, a simple key mapping is provided (e.g. '\+'). The plugin can also be disabled within vim as well (e.g. '\-') =============================================================================== Settings *accurev-settings* Of course you can customze this plugin! There are a few variables at the top of the script that allow you to control the behavior of the plugin. Look for the section titled "User Customizations". The variables are described in detail below. Tip: the accurev.vim script uses extensive |folding|. Be sure to "set foldmethod=marker" to more easily navigate the entire script. (Use 'zM' to fold the entire script; then 'zo' to open a given fold) s:mapleader = "xxx" Define the keybinding to used to initiate accurev plugin commands. Default value is '\'. e.g. "accurev add" is "\a" keystroke. *accurev-settings-startup* s:load_on_startup = [s:true|s:false] Determines if the AccuRev plugin is loaded during vim startup. If enabled, the plugin will auto-detect a workspace based on current working directory and provide status for the currently loaded file. Default is s:true. Ths flag does NOT prevent bootstrapping which is required for user driven load/unload cycles. Key mapping is available to enable/disable within a vim session. Most people will load on startup. Disabling is only useful for situations such as: * accurev not always available (e.g. working on an airplane) * slow network causes realtime AccuRev access to slow down vim status refreshes s:graphical_merge_enabled = [s:true|s:false] Turn on/off launching of AccuRev's graphical merge tool if a merge has conflicts and requires human resolution. If enabled, the AccuRev merge tool will be launched. If disabled, all merges must be performed manually outside of vim. The only practical reason to disable is if you are not in a graphical development environment or simply prefer traditional text-based merging. Default is s:true. s:require_comments = [s:true|s:false] Flag to require non-empty comments during any AccuRev command that accepts a user-provided comment including add, keep, promote, etc Default is s:true. s:show_status_messages = [s:true|s:false] Turn on/off minimally verbose status messages for the curious user. Default is s:false. s:plugin_debugging = [s:true|s:false] Turn on/off plugin debugging. This feature is designed to display minimal critical information during runtime. Default is s:false. s:record_command_history = [s:true|s:false] With this flag enabled, the plugin will record all AccuRev CLI calls. The history of calls can be viewed in the Command History window ('\?'). The command history is erased with an AccuRev Logout or when Vim exits. Default is s:true. s:verbose_command_history = [s:true|s:false] With this flag enabled, the return output from each AccuRev CLI call is also recorded. This is only used when recording is enabled (above). Be careful - the CLI history is stored in buffer memory and xxxx output is stored in buffer memory Default is s:false. s:promote_comment_prefix = "..." This is a prefix for what is displayed in the promote comment for multi-select promote. Use it to provide a template. *accurev-settings-enable-issue-promote* s:enable_issue_promote = [s:true|s:false] This flag determines if the user will be prompted to enter an issue # during a promote. This prompt is global and not specific to any stream hierarchy (unlike the CP trigger rules). For this fact, if this flag is enabled, and no issue is necessary, simply press Enter and specifying no issue will succeed. Default is s:false. =============================================================================== Troubleshooting *accurev-troubleshooting* Having problems? Here are some solutions to common problems. |accurev-not-installed| AccuRev client not installed |accurev-not-found| AccuRev client not found in PATH |accurev-unavailable| AccuRev server not available |accurev-not-in-workspace| Not in a workspace when plugin loads |accurev-promote-hanging| Promote operation hanging at 1/3 finished |accurev-key-overlap| Key bindings conflict with another plugin |accurev-no-help| AccuRev help documentation not loading |plugin-not-loading| Plugin is not loading when editing in a workspace +----------------------------------------------------------------------------+ *accurev-not-installed* Symptom: AccuRev not installed. Solution: Download and install the AccuRev client for you platform. During the wizard install, be sure to install the Client-only; installing the server requires a license key. http://www.accurev.com/download +----------------------------------------------------------------------------+ *accurev-not-found* Symptom: AccuRev client not found. Solution: Verify that AccuRev is installed on the machine. Check the following default directory locations: Unix: /opt/accurev Windows: C:\Program Files\AccuRev Next, verify that the accurev executable is in the PATH. Unix: echo $PATH --> ...:/opt/accurev/bin:... Windows: echo %PATH% --> ...;C:\Program Files\AccuRev\bin;... If not, set the path to include the below example. Unix: $export PATH=${PATH}:/opt/accurev/bin # add to shell startup, e.g. ~/.bashrc, ~/.cshrc Windows: $set PATH=%PATH%;C:\Program Files\AccuRev\bin # set in system properties under environment variables NOTE: For Windows, you may need to set the PATH as a USER or SYSTEM variable in order for the PATH to be visible to the shell. # Start --> Control Panel --> System --> Advanced --> Environment Variables +----------------------------------------------------------------------------+ *accurev-unavailable* Symptom: AccuRev server unavailable. Solution: Check connectivity to the AccuRev server. $ accurev info If you expect the AccuRev server to be available, contact your AccuRev administrator. If the server is legitimately unavailable (i.e. working on airplane), configure plugin to disable login on startup. See |accurev-settings| and |accurev-settings-startup| +----------------------------------------------------------------------------+ *accurev-not-in-workspace* Symptom: Not in a workspace when plugin loads. Solution: Verify that the file's directory is within a local directory managed by an AccuRev workspace. Did you create an AccuRev workspace already? If not, an AccuRev workspace must first be created to 'checkout' the source code. See '$ accurev help mkws' from the CLI. If you did create a workspace, first check the workspace status. From the CLI, cd to the file's directory and run the accurev 'info' command. This command will determine if the current directory is associated with a workspace. $ accurev info For a valid workspace, the info output will include values for 'Workspace/ref', 'Basis', and 'Top' confirming a valid workspace. Otherwise, an error indicating 'You are not in a directory associated with a workspace' will be displayed. If you are not in a workspace but are absolutely sure you created a workspace, look at the list of your workspaces known by the AccuRev server. Run '$ accurev show wspaces' to list all workspaces. This list will also include the full absolute path to the workspace on your machine. Are you on the right machine? To move a workspace from another machine or directory, see '$ accurev help chws'. If you are still sure you created a workspace and it is not in the list, look at the removed/hidden workspaces as well. Run '$ accurev show -fi wspaces'. If your workspace is not in that list, perhaps you are on the wrong AccuRev server? The output from '$ accurev info' will show the server name. +----------------------------------------------------------------------------+ *accurev-promote-hanging* Symptom: Promoting a file hangs with the progress bar showing 1/3 complete. Solution: AccuRev may be prompting to enter an issue #. Currently, the plugin supports entering issues but requires setting a configuration property. By default, this is disabled. See |accurev-settings-enable-issue-promote|. +----------------------------------------------------------------------------+ *accurev-key-overlap* Symptom: Key bindings conflict with another plugin. Solution: Simply edit accurev.vim and change the 's:mapleader' variable to a new character. For example, the default leader is '\' let s:mapleader = '\' " configurable ... map a AccurevAdd --[becomes]--> \a Want to use ',' instead? Sure... let s:mapleader = ',' " configurable ... map a AccurevAdd --[becomes]--> ,a +----------------------------------------------------------------------------+ *accurev-no-help* Symptom: AccuRev help documentation not loading. Solution: Verify that the accurev.txt file is located in the vim /doc directory: Unix: $HOME/.vim/doc/accurev.txt Windows: %HOMEPATH%\vimfiles\doc\accurev.txt Install help documentation by launching Vim and executing: Unix: :helptags ~/.vim/doc Windows: :helptags ~\vimfiles\doc Verify that the help docs are available by launching vim then typing ":help accurev". +----------------------------------------------------------------------------+ *plugin-not-loading* Symptom: Plugin is not loading when editing in a workspace Solution: First, verify that the plugin is installed. Unix: $HOME/.vim/plugin/accurev.vim Windows: %HOMEPATH%\vimfiles\plugin\accurev.vim Second, verify that the working directory is truely an AccuRev workspace. Type "$accurev info" on the command line. If the message "You are in in a directory associated with a workspace" is shown, this means the vim plugin is not loading because the edited file is not in a workspace. An AccuRev workspace is needed for the plugin. Third, check the "load on startup" property in the plugin/accurev.vim file. if 's:load_on_startup' is set to 's:false', the plugin is configured to be manually loaded. The default keymapping is '/+' for loading and '/-' for unloading. Fourth, with the file open in vim, type ":let" and look for the variable "b:accurev_attributes". The presence of this variable indicates that the plugin was found and bootstrapped. Try to enable to AccuRev from within Vim by typing '\+'. Once enabled and logged in, the status bar will display the AccuRev status for the file so long as it is in an AccuRev workspace. If logging in shows no status bar, the file is not in an AccuRev workspace. =============================================================================== Tips *accurev-tips* Tip #1 - Dealing with a Slow Network or Unavailable AccuRev server Sometimes over a slow network or VPN, the frequent file status checks and refreshing can make the plugin feel sluggish. In this case, you can enable the plugin when you need to perform version control. The plugin can be configured to load on startup for every buffer. This can be controlled with the variable s:load_on_startup located in the script. Optionally, the plugin can be enabled/disabled on-demand using \- or \+ respectively. Tip #2 - Viewing file history. This plugin provides access to element history by either viewing the log of keep transactions or viewing per-line change history with annotate/blame. Use '\h' to view the full keep transaction history for the current file. Use '\b' to annotate (blame) the file and view commit comments for the most recent changes to a highlighted ('l') line. =============================================================================== Plugin RoadMap *accurev-roadmap* List of features coming soon! * workspace view with file tree in separate buffer * stream browser implemented as a file tree * support for configuration level operations (diff, merge, x-promote) * version browsing and diffing * interactive element history (i.e. diff specific versions) * more syntax highlighting * anything YOU want?.... just send me an email |accurev-author|. =============================================================================== *chester-copperpot* You Goonie! =============================================================================== Plugin Development History *accurev-history* Why a Vim plugin for AccuRev? I wrote this plugin for three reasons, besides the fact that one didn't exist and I needed one for myself. First, Vim is the most sophisticated and powerful text editor... ever. Second, AccuRev is the most sophisticated and powerful SCM tool... ever. Third, Real programmers use Vim. Developing a Vim plugin is no easy task. It took two weeks to create a few prototypes to validate my understanding of the vim programming model and feature set. I refactored the core plugin a few times, finally coming up with a stacked MVC-style architecture to support the event-driven nature of using buffers. It was frustrating to spend so much time refactoring the core architecture but once I implemented the first few features in what is now the "final" architecture, I realized that -every- aspect of a feature had a place -- from data access, formatting xml, munging data structures, to views for toggleable interfaces. Furthermore, tracking down bugs was super easy because I knew exactly which layer (function) to investigate. Having lots of small functions building on each other turned out to be key for developing a complex application. Theory and practice collide! Developing this plugin had many challenges. While the vimscript language is fairly powerful, it is very incomplete compared to the community of contemporary languages. For example, lack of a unit test framework and xml parsing library have been the most difficult obstacles. Computers are computers so solutions are abound, but effort is certainly required. See also |accurev-author|. Development Platform -------------------- I developed most of the plugin on a dual-boot Intel Penium M 2.0Ghz/1Gb RAM with the following operating systems. Depending on my mood or need to preserve battery power (windows seemed better!?), I would toggle between the OS's for development. * Ubuntu 6.10, Vim 7.0 * Windows XP 2002/SP2, Vim 7.0 Version 1.1 was developed with the following platform: * Ubuntu 8.0.4, Vim 7.1.138 [development + testing] * Windows XP 2002/SP2, Vim 7.0 [testing] Development Log --------------- Most of the plugin development happened while I was traveling; either waiting at an airport, 30,000+ feet above sea level, or in a hotel room. I also spent spare cycles during evenings/weekends at home in Santa Cruz, CA. 2007 Jun 24 * Santa Cruz; thoughts; docs & folding; buffer mgmt prototyping; reviewed plugins for cvs/svn/svk/pvcs/p4/clearcase 2007 Jun 23 * Santa Cruz; thoughts; understanding mappings; user input; general flow 2007 Jun 19 * SJC airport enroute to Long Beach, CA; initial development; go big or go home! 2007 Jul 03 * Santa Cruz; playing with buffers 2007 Jul 04 * Santa Cruz; add command; per command auth check & login support 2007 Jul 05 * Santa Cruz; architecture; add w/o filename checks 2007 Jul 06 * Santa Cruz; add checks; history buffer and reload 2007 Jul 07 * Santa Cruz; promote; update; help file 2007 Jul 09 * Santa Cruz; statusline; update; cleanup; docs 2007 Jul 10 * Santa Cruz; cleanup; workspace update; package for alpha release 2007 Jul 11 * Santa Cruz; workspace update 2007 Jul 13 * Santa Cruz; buffer mgmt 2007 Jul 15 * 37,000ft above Wyoming enroute to Boston; event & buffer mgmt; reverse buf attr lookup 2007 Jul 20 * BOS airport; multi-file promote 2007 Jul 26 * Chicago, IL; multi-file promote 2007 Jul 27 * Chicago, IL: xml parsing 2007 Jul 29 * Lake Geneva, WI; regex & xml parsing 2007 Jul 30 * ORD airport; xml parsing 2007 Aug 1 * Santa Cruz; MVC global refactoring 2007 Aug 2 * Santa Cruz; MVC global refactoring 2007 Aug 3 * Santa Cruz; MVC global refactoring; selectable option buffer 2007 Aug 4 * Santa Cruz; abstract framework for selectable elements with comment 2007 Aug 5 * Santa Cruz; multi-select promote; filesize display; timing display 2007 Aug 5 * Santa Cruz; file org; status bar 2007 Aug 6 * Santa Cruz; moved mappings to buffer; refactored initialization/bootstrap; multi-select toggle; docs 2007 Aug 7 * Santa Cruz; docs; packaging for alpha 2007 Aug 11 * Santa Cruz; using tempfiles for elements/comments; anchor; reverts; update preview 2007 Aug 12 * Santa Cruz; command history; name in statusline; parsed info; docs; diff 2007 Aug 20 * 37,000ft above CA enroute to Denver, CO; refactoring authentication 2007 Aug 21 * 37,000ft above CO enroute to San Francisco, CA; refactoring authentication 2007 Aug 26 * 37,000ft above CA enroute to Burbank, CA; refactoring authentication 2007 Aug 26 * Burbank, CA; refactoring authentication; display refresh 2007 Aug 26 * 30,000ft above CA enroute to San Francisco, CA; optimize startup by reducing server info/sec/stat calls 2007 Sep 02 * Santa Cruz; researching why login/logout/info fail for buftype=help; extracted 'new workspace' option; push to later release 2007 Sep 03 * Santa Cruz; found why login/logout/info fail for buftype=help; setting statusline ;) 2007 Sep 04 * SJC Airport; fixed statusline on non-accurev buffers (setlocal); centralized debugging 2007 Sep 04 * 35,000ft above CA enroute to Denver, CO (choppy at 37k); fixed status/size in statusline on re-login; refactored cli history 2007 Sep 06 * DEN Airport; cleaned up revert to backed/recent 2007 Sep 06 * 36,000ft above CO enroute to San Jose, CA; diff; defunct refactor; undefunct; version display 2007 Sep 08 * Santa Cruz; all search filters; synctime 2007 Sep 10 * Santa Cruz; diff recent (window/buffer mgmt) 2007 Sep 12 * Santa Cruz; diff (window/buffer mgmt) 2007 Sep 13 * Santa Cruz; diff (window/buffer mgmt) 2007 Sep 15 * Santa Cruz; diff-backed; diff-basis; display buffer attrs (internal) 2007 Sep 20 * Santa Cruz; alpha packaging and documentation 2007 Sep 28 * Santa Cruz; various remaining TODOs; cleanup; testing 2007 Oct 02 * Santa Cruz; command recording; fixed synctime keymapping typo 2007 Oct 13 * Santa Cruz; progress bar for add/keep/promote; cleaned up command logging 2007 Oct 14 * 37,000ft above Tahoe enroute to Boston, MA; update progress bar; diff/keep 2007 Oct 20 * Logan Airport Boston, MA (4hr delay); promote by issue; research -Z flag/progress bar 2007 Oct 20 * 37,000ft above Boston enroute to Chicago, IL; multi-promote; logging; promote by issue 2007 Oct 21 * 34,000ft above Chicago enroute to San Jose, CA; CTRL-C interrupt handling & bulletproofing all commands 2007 Oct 26 * Santa Cruz: interrupt handling for add/keep 2007 Oct 28 * SJC Airport enroute to Denver: interrupt handling for add/keep/promote/defunct/synctime 2007 Oct 28 * Hotel in Westiminster, CO: interrupt handling for defunct/undefunct 2007 Oct 29 * Hotel in Westiminster, CO: interrupt handling for revert; msg spelling typo 2007 Oct 30 * Hotel in Westiminster, CO: stream locked case for promotes 2007 Oct 30 * 38,000ft above CO enroute to San Jose, CA: re-init during login; promote error handling for change package gap; un/defunct error handling 2007 Nov 01 * 34,000ft above CA enroute to Phoenix, AZ: merge 2007 Nov 04 * 34,000ft above Phoenix enroute to San Francisco, CA: auto merge; properties; switch multi- to group- for keybinding conflict resolution 2007 Nov 07 * QCon conference in San Francisco: populate; element properties display; refactor var names 2007 Nov 10 * Santa Cruz: refactored Refresh 2007 Nov 12 * Santa Cruz: final beta-testing 2007 Nov 13 * Santa Cruz: *** BETA RELEASE !!! 2007 Nov 14 * 35,000ft above CO enroute to Denver, CO: evil twin detection during add; undefunct and promote error handling 2007 Nov 15 * 38,000ft above CO enroute to San Jose, CA: (re)login interrupt handling; invalidate repeated revert lnum problem; multi-buffer status update 2007 Dec 06 * beta demo at AccuRev HQ (using linux) 2007 Dec 07 * 38,000ft above Boston, MA enroute to Chicago, IL: multi status-line update for group promote; added element_path attr 2007 Dec 10 * 38,000ft above Chicago, IL enroute to San Francisco, CA: research syntax HL; syntax HL info/update; -o/-O multi-file startup support; status refresh on gui focus; login messaging 2007 Dec 11 * Santa Cruz: syntax HL info/history/update/element/status/search; blog post 2008 Jan 19 * Santa Cruz: promote error handling for merges; pop for missing files; synctime messaging 2008 Jan 19 * final 1.0 linux testing: vim 7.x / linux (ubuntu 7.10) / accurev 4.5, 4.5.4, 4.6.0b 2008 Jan 20 * final 1.0 windows testing: vim 7.x / Windows XP / accurev 4.5, 4.5.4, 4.6.0b 2008 Jan 20 * 1.0 Release! submitted to vim.org and vim4accurev.com 2008 Jan 24 * 1.0.1 Release! - added apache 2.0 license << No Defects reported in 2008! >> 2009 Jan 04 * 31,000ft enroute to Chicago, IL from San Jose, CA: load/unload on startup with mappings 2009 Jan 07 * Bedford MA, hotel: refactored property functions; init loading 2009 Jan 10 * 34,000ft enroute to Chicago, IL from Boston, MA: refactored init/login 2009 Jan 10 * O'Hare Terminal 3; 4hr snow delay. refactored init/login/messaging/error handling 2009 Jan 10 * 34,000ft enroute to Phoenix, AZ from Chicago, IL: completely refactored load/init 2009 Jan 29 * Bellevue WA, hotel: planning load/init strategy 2009 Jan 30 * 34,000ft enroute to San Francisco, CA from Seattle, WA: refactoring load/init 2009 Apr 07 * 32,000ft enroute to Salt Lake City, UT from Phoenix, AZ: refactoring load/init 2009 Apr 12 * Salt Lake City, UT Int'l Airport: refactoring load/init 2009 Apr 12 * 32,000ft enroute to Reno, NV via Salt Lake City, UT (SJC connection): load/init validation & testing 2009 Apr 12 * 32,000ft enroute to San Jose, CA via Reno, NV: load/init validation & testing 2009 May 02 * enroute to San Jose, CA from Los Angeles, CA: load/init validation 2009 Jul 27 * 35,000ft enroute to Seattle, WA from San Jose, CA: load/unload key mapping 2009 Jul 29 * 37,000ft enroute to San Jose, CA from Seattle, WA: doc tips section 2009 Aug 03 * Santa Cruz CA: fixed client binary detection; finished load/init validation; init testing 2009 Aug 05 * Santa Cruz CA: finished enable/disable plugin; updated docs; investigating annotate 2009 Aug 06 * 39,000ft enroute to Phoenix, AZ from San Jose, CA: disable plugin on diff buffer; added annotate; docs 2009 Aug 07 * Phoenix AZ: implement annotate mapping & buffer 2009 Aug 08 * Phoenix AZ: implement annotate highlighting 2009 Aug 09 * 34,000ft enroute to San Jose, CA from Phoenix, AZ: implement annotate per-line history display 2009 Aug 10 * Santa Cruz: stream browser launch; testing on Windows 2009 Aug 16 * Santa Cruz: finished per-buffer graphical menus with enable/disable & login/logout support 2009 Aug 16 * 1.1 released! 2009 Aug 17 * windows patch: normalize pathnames to lowercase for str comparison (Thanks Charles Bates) 2009 Aug 18 * added 'comment required' property and logic for add/keep/promote/defunct/anchor 2009 Aug 18 * 1.1.1 released! =============================================================================== Plugin Author/Maintainer *accurev-author* *accurev-maintainer* David P Thomas, personal blog: www.davidpthomas.name tech blog: www.daveonscm.com blog.accurev.com * Vim user since 1997 (pico before that ;) * currently a Senior Systems Engineer at AccuRev (2006-present) * formerly a Senior Software Engineer at Orbitz.com (2001-2006) * originally a web consultant with ClassifiedVentures (1999-2001) * numbers juggler, 5 & 7 balls * snowboarder with instructor certification (CASI / Whistler) * Unix over Windows; Vim over emacs; Ruby over Java; 95wpm. * father of one inquisitive young son who loves skateboarding and pointing at green screen terms * living, jogging, and mountain biking in Santa Cruz, CA Feel free to contact me with feedback/questions/comments! -- dave, davidpthomas@gmail.com