I’m sure this isn’t news to a lot of you, but git is seriously cool.
I just discovered it this past week (after hearing a little about it once in a while since it started in 2005). I was mostly happy with Subversion (SVN) and CVS (before that)… but git is just way cooler due to its distributed nature, among other nifty things. It’s extremely fast, has easy tagging and branching, features amazing merging and patch management, and the repositories it makes take up very little disk space too. Also, due to being distributed (and having excellent management features), it makes working on a custom branch — even when offline — not only possible, but a total breeze compared to most other SCM / version control software.
People have also made git work pretty well with other software of its kind, most notably CVS and SVN so that one can work in git locally and publish changes to more traditional repositories.
Starting the adventure
My own foray in using git initially started just the other week when Nat was telling me all about it. I decided to take the plunge into git this past Friday.
To familiarize myself with this new version control software, I imported a project I am currently working on into a git repository (building up versions from pieces of snapshots I made at different stages), and worked on learning the basics through some pretty nice tutorials.
Using git seriously paid off. Late Friday evening, I upgraded some upstream software I had been using and it broke my project… I knew it must’ve been a simple one line change, but I didn’t know where exactly. This was, of course, right before I left the office for the three-day-weekend.
On Saturday, I wanted to get things working again — including all the new upstream changes (you know, bug fixes and what-not), but I did not have a ‘Net connection. Thankfully, it turns out git came to the rescue, due to its distributed nature.
Essentially, using git meant that I had my own little (very) compact repository with all of my changes, so I could check out old versions of files, examine changes, look at differences between my own tagged “releases”, and commit any change I wanted — all locally, without a centralized server or any sort of network connection.
Voila! I found the problem… it was, indeed, a simple one liner that made assumptions that weren’t true on my system. I fixed it, committed the change, and had everything working once again… all on my laptop, without access to the outside world.
My deciding to play around with this new version control system turned out to be quite fortuitous and timely. I really don’t know how I would’ve tracked down and fixed the simple, hiding show-stopping bug (especially without a network connection) so quickly and easily otherwise.
git more info…
If git sounds interesting to you, I’d suggest you check out the following:
- git’s home page
- Wikipedia’s page on git
- Repository Formats Matter by Keith Packard
- Subverting git (a blog post about using git with SVN, focusing on GNOME’s SVN server in particular)
- SVN crash course (for new git users, of course)
- del.icio.us popular links for git
git-ting to the point
It does take a short while to wrap one’s head around git (and make it second nature), especially if you’ve used CVS or SVN for so long, but the benefits make it totally worth investigating and trying out.