Archive for October, 2007

Agile Programmable Completion – AccuRev + GNU Bash

October 18th, 2007 by dave

When at the command line (CLI), productivity means keeping your hands on the keyboard. But once your fingers have memorized all the commands, flags, static arguments, and common usage patterns — can you still get faster?

Yes.

Programmable completion is a shell facility that allows for customizing the command line in real-time as it is typed. Also referred to as “TAB Completion”, many shells in both Linux and Windows have a default implementation that support completion on filenames and directories. If you’re lucky, you’ll even get environment variables and functions.

Let’s move to software configuration management (SCM). Various branch and label-based SCM systems like CVS have basic tab completion for commands and flags. Thats a good start. But an agile user needs a context-sensitive, custom-data completion facility. What you ~really~ want is completion on your own data — branch names, labels, usernames, etc.

Users of stream-based AccuRev are in luck.

Do you use AccuRev on Linux? If so, download the latest GNU Bash (2.05+) completion for AccuRev 4.5.x. Here is the README. You’ll never have to memorize flags or type stream names again.

Coming in Part 2 — Support for Windows users.

/happy tabbing/ – dave

Put your source code on a "Build Artifact" diet with AccuRev

October 12th, 2007 by jtalbott

I was working with a prospect recently and showing them how easy it was to import their source code into AccuRev from their existing version control tool. We were about to load the external files and did a quick check on the disk space for the tree to get a rough estimate on how long it would take. Almost 2 Gigabytes! I looked a bit closer and found that each of the numerous directories we were importing had a “UnicodeDebug” sub-dir.

Now, I’m not a Visual Studio expert, but in this case storing build artifacts in AccuRev is really an unnecessary step. Because AccuRev guarantees total reproducibility of any code configuration, it would be redundant to store those directories and files on the server since they can be recreated at any time. Of course, the developers might want to keep them on their local drives though. It was a simple matter to set a local environment variable, ACCUREV_IGNORE_ELEMS=*UnicodeDebug* After that, even though the code remains on local workspace disk, AccuRev doesn’t “see” them as external (neither from the GUI nor from the command-line) which removes the possibility of accidentally adding them to source control.

There’s a much longer debate that can be had concerning versioning build artifacts in general, but that’s a much wider scope than this post.

Oh, and by the way, the source tree had dropped from 2 GB to 18 MB. Loaded in about 15 seconds!