Take Control of Your Source Code with SmartGit/Hg

Distributed version control systems are the most advanced way to collaborate on software projects. The top contenders in this space are Linus Torvalds’ Git and Matt Mackall’s Mercurial. These are command line tools, but you don’t have to fire up a console in order to use them.

SmartGit/Hg, by syntevo GmbH, lets you use either Git or Mercurial using a standard graphical user interface.

Getting SmartGit/Hg

You can get SmartGit/Hg at the syntevo homepage. SmartGit/Hg is the most prominently-featured program on the site. Click on the appropriate link and download the program. Of necessity, the installation process is a bit more involved than that for most programs. The installer will ask several questions.

After you agree to the proprietary license, you will be asked if you are using SmartGit/Hg for commercial purposes (in which case, you have already purchased the product and need to enter a product key). If you don’t (yet) want to pay for SmartGit/Hg, then you can evaluate it for thirty days (you will get full support in the meantime) or you can opt to use it for non-commercial purposes only. In the last case, you can still use all of the features of the program, but you will not be eligible for support.

syntevo GmbH is generous

SmartGit/Hg also asks for the location of you Git and Mercurial executables.

It’s best to trust the defaults.

It also asks for the location of you SSH client. For this and the previous question, SmartGit/Hg offers its own versions by default. I decided to trust the developers and stick with those defaults.

Once again, trust the default.

Near the end of the installation process, you will be asked about hosting providers. Developers don’t like to host software projects on their own; it’s no fun for them and would resembles system administration more than programming. No one wants to remember umpteen different login credentials for all of the open source projects in which they’re interested, either. So hosting providers are important. SmartGit/Hg integrates with six of them out of the box: Assembla, Beanstalk, BitBucket, Codebase, Unfuddle, and, of course, GitHub.

You do have a BitBucket or GitHub account, do you?

Using SmartGit/Hg

When the program has finished installing and you run it for the first time, it will ask if you want to start a new repository, open a local repository, or clone a remote repository. For this review, I have opened an existing repository that is mirrored on my GitHub page. It’s a JavaScript library that does basic arithmetic with complex numbers. I forked it from Jan Hartigan. Note that, like its name suggests, SmartGit/Hg works with both Git and Mercurial (“Hg” is the atomic symbol for mercury).

Point to your repository and start hacking.

The main window looks crowded, but, if you’re already familiar with the concepts of distributed version control, then it will only take you a minute or two in order to familiarize yourself with the different regions of the window.

Not bad, really.

A review such as this isn’t the place to learn the intricacies of version control. If you don’t already know how to use a version control system, then Eric Sink’s Version Control by Example is a great source; it’s both a guide to version control concepts, as well as a tutorial for four distributed version control systems: Subversion, Git, Mercurial, and Veracity. And you can download it for free. Obtain. Read. Frolic.

Just like the command line version of Git, SmartGit/Hg will know that a file has been modified as soon as you save it after editing. The modified files will appear in the “File” pane below the ribbon. Beneath that pane is the “Changes” pane, which shows a visual diff of the selected file with HEAD on the left and the working copy on the right. The modified source will be highlighted in green.

Better than typing “git diff” all the time.

You can place files in the .gitignore file by right-clicking them in the “Files” pane and choosing “Ignore.” You will be given the option of ignoring only that file or all files with similar extension(s).

You like editing .gitignore files? Me neither.

The ribbon has the most important commands. They include Stage, Commit, and Push, which all act like their command line counterparts. Helpfully, hovering over the ribbon commands with the mouse will show tooltips detailing the command as well as the keyboard shortcut to invoke them. When you commita changeset, you’ll get a dialog box where you can input a commit message.

Put your commit message in the text field at the bottom.

Pushing a commit will bring up a dialog box asking which branch you want to commit to. But don’t forget to log into the remote host.

Go ahead. Type your password. I promise that I won’t look.

Oddly, the ribbon does not have the Fetch command. Instead, it has a Sync button, which the tooltip describes as “Push local commits of the current branch and pull remote changes.” In any case, this Sync command and the previously mentioned commands make up most of the commands used in a typical Git workflow.

Getting Help

This is the one off-putting thing about SmartGit/Hg. There is no online help at all. At all. The Help menu looks like this:

Don’t hate the player; hate the game.

The “Contact Support…” option doesn’t bring up a dialog box, or a help file, or even a remote web page. It brings up your mail reader with the details of your computer (including operating system version) in the body of the e-mail message. This is the first piece of software that I’ve ever used that had this “feature.” It’s a good thing that SmartGit/Hg is so easy to use.

Although I don’t like this, I am forced to sympathize. SmartGit/Hg is free for non-commercial use. That is very generous of syntevo. But pirating shrinkwrap software is almost trivial, these days, and the people at syntevo need to eat. Offering support is the only credible means by which to hook commercial (i.e., paying) customers. Including help files with the program would defeat the purpose of offering support.

Conclusion

If you don’t care to use the command line and you want instant access to a visual diff interface, then SmartGit/Hg is a good program to consider. It’s free for non-commercial use and you can get free support for thirty days, so there’s no risk in trying it.


Summary

If you're not a command-line junkie, then SmartGit/Hg is an excellent choice for providing a familiar GUI to the two most popular distributed version control systems. There's no help if you don't pay for support. Fortunately, the program is easy to use.

  • SmartGit/Hg 4.0.4  | 
  • Free for non-commercial use. $79.00 per license for commercial use (includes 90 days of support).  | 
  • syntevo GmbH
7