So I rolled my own git client.

Hi, I’m Matheus, a game developer and, as such, I use source versioning tools such as git and mercurial to share/backup my work. The thing is: these tools suck!

Let the rant begin!

If you use any of these GUI clients (TortoiseHg, SourceTree, SmartGit, etc. to name a few) you’ll notice that they can lag hard. Maybe not for a small hack project, but it’s very noticeable when you’re dealing with dozens of repositories and some of them are pretty large (a few GBs no big deal).

Whenever I alt-tabbed back to the client to see the changes I made, seconds are sucked from my life while I wait for the UI to refresh. Every time.

This feels so much like Sonic ‘06

At first it didn’t bother me. It may not bother you. But it adds up over time and I definitely didn’t want to put up with this my entire life, dammit!

Also, even though the CLI is as fast as it can get, I did not want to be constantly typing the action I desire to apply. Sorry terminal folks. It’s just too hardcore for me.

Getting out of the comfort zone is the first step.

Wouldn’t it be nice if commits, pulls, pushes, or whatever were just keyboard shortcut away?

Well it turns out that not only it is possible but I did it.

After some days carefully studying how to approach it, I faced the challenge, opened VSCode and started to hack some Node.js code. After a few hours, I discovered that not only it was working but I was also pretty happy with the results!

This is me using it to check the status of a Mercurial repository. (Ctrl+S checks the status)

The end result is a cmd application that listens for keyboard events and execute shell commands accordingly. Pretty simple. Pretty fast.

Of course, it was never intended to be as feature rich as SourceTree (the client I used before). But now the cmd is just a keystroke away and I kinda like it this way.

The thing is, you don’t always have to take things the way they are for granted. Sometimes, a little bit of upfront effort can go miles into making your everyday life better :’)

…specially when you’re a programmer!

Oh, and if you want to take a look at the git/hg client I made, here’s the repository and the npm package if you wanna use it.

Don’t mind the project’s name, it’s a pun I made with @ysperanza. Also, huge props to @vexille666 who helped me with some nice git commands!