Thursday, July 28, 2011

Git Version Control System

There are quite a few version control systems. My favorite for many years has been Subversion. It's still a great version control system but it has some limitations such as every operation requires a server. The latest round of version control systems are distributed and need no server interaction until you want to commit your changes to the central repository. Git, Mecurial and Bazzar are of these latest bread of distributed version control systems. I had some dealings with Mecurial when working on some JavaFX code recently and decided to use Git for my latest project. Others have written great articles about the difference between the two version control systems:

Git vs. Mercurial: Please Relax (Git is MacGyver and Mercurial is James Bond)
The Differences Between Mercurial and Git
Mercurial for Git users

I choose Git because of it's flexibility, branch performance and ability to destroy branches fast and easily. Although Mecurial is easier to use and has way better documentation.

A good Git cheat sheet can be found here.

2 comments:

Warren said...

I am a mercurial fan and I appreciate that you can clearly state what git has that you like. I haven't yet tried to destroy a branch, but I can easily see how you might make a certain kind of mess and want to clean it up.

I have tried really hard to understand rebase, and I still don't, though.

W

Chris Bensen said...

In this particular case where I choose to use GIt I was creating lots of branches off main with small changes but the repository is absolutely atrociously stupid huge. In my small tests the Python scripts behind Mecurial would have had a difficult time keeping up with the size of the repository vs the "more efficient" C behind Git. There are so many great version control systems to choose from now days, I can't figure out why anyone would pay for one or use a home brew system.

In my research I ran across this having to do with rebase:

http://stackoverflow.com/questions/2672351/hg-how-to-do-a-rebase-like-gits-rebase

Post a Comment