Git vs Mercurial
Due to latest changes in projects hosting situation (like FTC Sues, Shuts Down N. Calif. Web Hosting Firm, Adobe acts against Flash video stream recorder) I started thinking about moving on to some DVCS system. Now there are only two serious alternatives: Git and Mercurial.
First of all, here are two good articles where these systems are compared:
In both of these articles Mercurial wins due to:
- lack of good Git support in Windows system;
- having Python API.
But also in both of these articles it is said that Git has more features and is more powerful than Mercurial. Actually none of the issues above does not concern me personally because I'm not developing in Windows OS now, and I do not require any integration with DVCS.
But let me notice that these issues are not so critical right now:
- there is an awesome TortoiseGit project and it works really good;
- basically only certain hooks are required for integration with SCM-software and Git has all required functionality for this, and of course hook scripts can be written in any language including Python.
But there is an issue that I really care about - I do not like the "branch" system that Mercurial provides. The new "branch" in Mercurial terminology is a physical clone of the other "branch". Although cloning uses hard links for creating copies it doesn't deny the fact that my file system will be crowded with copies of the same files. Maybe for someone it is good, but not for me - I do not like too much garbage in my computer.
And please do not forget about C++-programmers. They create a branch and have to compile this branch from scratch in Mercurial case. Though they can create a shared directory for object files, in some situations it is not acceptable.
So now it is more preferable for me to use Git. I'm not an expert in both systems, but in my case Git is more suitable for my needs.