Friday 25 April 2014

Git

I've had to learn to use Git, which is the most popular distributed version control system in the software world. I was quite happy with Bazaar, a different version control system, because it fit very well with the way I worked on my own, whereas Git was designed primarily to be fast for thousands of developers working in very distributed teams over the internet. None of that describes how I work, but I've been outvoted by the world.

The biggest problem I encountered while learning was the "working over the internet" part. Every tutorial and every third-party tool I tried always reached a point where it began assuming I was working from a remote server, complicating matters and failing to teach me what I needed to know. It was a very frustrating situation to be in, because I'm trying to accomplish very simple goals - well within the software's capabilities - but it's already been presumed that complex dealings with remote servers are the norm. This seems especially galling to me, because Git is distributed, and should have no need of a server, but the first thing people do with it is say "Yeah, but how do I put it on a central server?"

I've successfully imported all of my Bazaar history into Git repositories, though, so at least that part went well.

Git works, especially for what it was designed for. That's part of why it's become the de-facto industry standard for distributed version control, even if most people use it in a heavily centralised mode. Compared to Bazaar, I like how easy merges are to perform. In Bazaar, there were more conflicts when merging. In Git, merging is relatively simple and quite often conflict-free. More conflicts are resolved automatically, anyway. That's pretty good. It's also the part that took me the longest to learn.

Mokalus of Borg

PS - I'm happy enough that I made the switch.
PPS - I'm not as happy that it wasn't entirely my choice.

No comments: