Merging with tkdiff and Mercurial
By bytor on Jul 25, 2007
I first encountered Mercurial last year when my project (openInstaller) decided to switch from TeamWare to Mercurial because everyone else was doing it :) I had many years of TeamWare experience and was reluctant to switch. Well, I got over it, and now I see why everyone was all fired up. It's a pretty sweet system. But that's not the point of this article.
I personally hate to merge. I avoid it whenever possible, because in a complex merge, you'll usually make a mistake or two. I've also done my share of silent mismerges. Usually, if I have a large-ish change and have to merge it with another large-ish change, I'll do it manually (e.g. take the parent repository, and manually re-introduce my changes into the files in conflict by hand). Mercurial and TeamWare both support the concept of merging, but mercurial does it better under the covers (heh, sounds like a great bumper sticker). The problem is, the stock version of Mercurial on my Solaris Express (and probably openSolaris) doesn't find any GUI utilities like tkdiff or kdiff3 because they aren't installed on the stock version of the OS.
If I install tkdiff, things get better, but I'm faced with a ghastly set of default color choices:
I am blinded by black-on-white (or anything-on-white for that matter). I prefer the "blackout windows" color themes, where the majority of your screen's pixels are black (or close to black) most of the time. Easier on my eyes, anyway. So, using this .tkdiffrc:
# This file was generated by TkDiff 4.1.3
I get a nice-looking mostly-black window. Additions are represented with green, changes with blue, and deletions with red.
To install tkdiff on recent versions of Solaris, I had to:
1. Download it, extract it, and ensure that the 'tkdiff' binary was on my $PATH.
2. Solaris, for some bizarre does not include wish (The Tk windowing shell which tkdiff requires). Oh, my mistake, it does include it, but the command is called wish8.3! I brought this up earlier, but no satisfactory answer has come my way. So, I simply created a symlink: