tkCVS 6.0


If there are any regular readers out there, you may recall that one of the first reviews that I did was of tkCVS. The more astute of you will have noticed that recently it has vanished. Somewhat ironically, I managed to delete it while using my ‘mirror’ program and didn’t have a copy held safely in a backup or version control.

If this has taught me anything, it’s that CVS, although very powerful, is not very easy to use. If it was, to use a cliche, as easy as falling off a log then I would have had no hesitation in using it. However, it’s not and I didn’t.

What is it?

First, what’s CVS? It’s an advanced client-server version control system. Unlike many other systems, CVS works with entire projects or directories rather than just individual files. It also allows many users to edit the same files and merge the changes back together later.

However, with twenty-four commands, each with a large number of options, CVS isn’t exactly what you’d call easy to use. (Since most people don’t bother with configuration management at all, this extra hurdle can’t help.)

tkCVS is a much needed TCL/TK-based front end.

In use

First impressions are good. tkCVS looks good. A menu is at the top of the screen, a tool bar is at the bottom and in the middle is a list of the files in the current directory. On the left are the filenames, on the right are their status: ‘ok’ if the file is up to date, ‘????’ if the file is not controlled and ‘{Locally Modified}’ if your version is newer than that in CVS. (I assume that there’s also a ‘modified by someone else’ descriptor, but since I used this on my own single-user machine, I didn’t test this functionality.)

All very straight-forward.

Marginally less straight-forward, now I come to look at them, are the buttons on the toolbar. Sure, they look decorative, but you can only find out what many of them do by waiting for the tool-tip to appear. (Having said that, I’m not entirely sure what a suitable icon for ‘re-read the current directory’ should be. They’ve used a pair of glasses.)


Bundled in the same archive as tkCVS is a graphical ‘diff’ program called tkDiff that’s worth, if not a review of its own, at least a mention.

It does just what it says. Given two files, it finds the difference between them and highlights the differences in various colours. You can flip between the differences using Next and Previous buttons, which is useful if you’re used to the standard GNU diff.

Best of all, it’s integrated with tkCVS allowing graphical diffs between different versions of the same file. However, although it’s easy to get a diff between your copy and the latest copy in CVS, it’s not entirely clear how to get a diff between versions in CVS or your copy and an older version.


Like many TCL/TK applications, it looks good but falls down on its implementation. The UI, although infinitely easier to use than the CVS command-line, is not quite as intuitive as it could be, and there are a number of glitches and bugs.

Fortunately, these glitches are just that. They are annoying but don’t get in the way of what is, fundamentally, a sound program.