Real Branching and Merging
or: How I Learned to Stop Subversioning and Love the Git
After a few weeks of discovering Git, I have stopped using my Subversion clients altogether. In fact, I now use git-svn as my SVN client, and could not be happier about it. Git really is an amazing set of tools. Here’s why I am suddenly so addicted to the Git…
It Just Works
Because Git is designed to always know the proper base revision for a merge, conflicts when merging branches in Git rarely happen. In most cases, merging just works. This makes branching and merging easy, fast, efficient, and a pleasure to do. And because it makes it easy to switch what you are doing without checking out a clean working copy or jumping through other hoops when a high-profile security issue has got to go out the door now, you feel more compelled to branch off your work.
Flexible, Powerful, Adaptable
I won’t get into the distributed versus centralized repository issue; IMO, it’s a non-issue anyway, since with Git you have the power of both and with Subversion you have no choice. But I will say that even among other distributed version control systems, Git is the only one that provides both easy to use commands and access to the low-level plumbing. And, it’s the only one that can adapt to any workflow. CVS, Subversion, and even Mercurial are better suited to clean, specific workflows. The nature of Git makes it flexible enough to handle just about any development workflow you could dream up.
Anyone who knows me or my code, knows this impresses me. I love anything that just works and yet still provides access to do fancy things when it’s required. This is the philosophy behind everything I code, and though not always the easiest route from A to B, I don’t believe any path worth taking should be chosen because it is the easiest.
There’s a lot more about Git I need to say, and I’ll write more about Git as I learn more about it and prepare to take MODx development into the Git world, one way or another.