In the two months since I published gg 1.0, a project to reduce the
friction in working with Git, I’ve been working to make it more accessible and
easier to install. To this end, I’ve made three big improvements:
A standalone Go library, gg-scm.io/pkg/git, allows any Go program to
interact with Git repositories. (I may end up writing another blog post just
about this — stay tuned!)
Windows support, complete with MSI installer.
An APT repository for Debian and Ubuntu users.
If you’re interested in trying out gg, it’s never been easier: see the
instructions at gg-scm.io. Read on if you’re interested in how to package a
Go program for Windows and Linux.
I’m proud to announce the first stable release of gg, my alternative
Git command-line interface! This has been a release over two years in the
making: I’ve battle-tested gg across many different workflows and projects.
It’s saved me tons of time every day, and I hope it can save time for others
too. Download the latest release and try it out for yourself!
It’s always interesting to me to compare different approaches to solving the
same problem. Git and Mercurial are two version control systems that came out
at similar times, trying to address very similar requirements. Git came from
a very low-level systems perspective, whereas Mercurial spent a lot of effort
on its user experience. Despite what you might think, their data models are
remarkably similar. It’s from this observation I started my side project —
gg. I found myself greatly missing the experience of Mercurial, but I’ve
resigned myself to the fact that Git is here to stay.
I came across a rather interesting challenge today while working on gg. I am
trying to replicate the behavior of hg pull, and even though I’ve worked on gg
for over a year now, I still haven’t reached a behavior that I’m satisfied with.
I’ve finally realized why, and it boils down to a very subtle difference in the
data models of the two systems.