- http://code.google.com/p/support/wiki/DVCSAnalysis
- http://www.straw-dogs.co.uk/11/16/mercurial-vs-git/ - likely, the shortest summary ;)
Btw, initially I thought we must choose Git. Its TortoiseGit tool looks better than TortoiseHg; on the other hand, I found likely we have no chances to see VisualGit, because Git is distributed only under GPL license. Anyway, I decided to try both tools, and...
TortoiseHg
I spent less than 30 minutes to test all the basic features there, including:
- Create a repository
- Create its copy
- Launch a web server exposing one of them via HTTP (really simple: "hg serve"). It was really interesting for me to see how Mercurial synchronizes them.
- Local modifications
- Commits
- Updates / switching to older revisions
- Sync (push / pull)
- Merging.
Everything just worked! I was even able to convert one of our internal repositories to Hg. So it was really nice, although TortoiseHg UI isn't polished at all.
TortoiseGit + msysGit
I stopped on step 3 here: "Launch a web server exposing the repository". I couldn't even imagine it isn't easy to do this at all on windows. So it was the first signal, although TortoiseGit was looking nice.
Ok, I started to read how to accomplish this, and clearly understood I don't want to use Git:
- If such a simple problem requires so many software to be installed and configured, I'd definitely prefer a simpler tool.
- I discovered Git is really built as ~ 50 small applications written in C! I simply don't see any reason to prefer C instead of other languages here: VCS performance mainly depends on algorithms and data structures, so using C here is as ridiculous as writing a web site on it. Why Linus didn't use e.g. Java, if he wanted it to be portable? Language is a tool, and using completely wrong tool has no excuses for me.
- So it became clear that it will be a hell to deal with Git on Windows. Currently I use just one of such ported tools in my daily life: Unison; everything else didn't survive.
- Finally, I discovered that Google implemented their own Mercurial repository (the one that is available on Google Code) over BigTable (see this link). This just proves the above fact: use right tool. If you need it to be portable, don't use C; if it isn't a low-level service or driver, don't use C. Git violates both statements.
So my own conclusion is:
- If you like to use tools developed by masochists (written in C!) for masochists (~ 50 tools!), Git is your choice.
- Otherwise, use Mercurial.
Of course, it's joke, but every joke has some part of truth.
P.S. This also implies that DO4 source code will be available in Mercurial repository hosted at Google Code quite shortly. Install TortoiseHg - as I wrote, now DO4 requires no additional tools to be built or used.
8 comments:
you complain only about programming language? the worst analysis I ever read in the internet. Learn about the git index dude...
You're sooo deeeeeply wrong. Even with programming language choices.
Obviously, I looked up a lot @ internet before writing this post.
Guys, I know there are many fans of Git. And I'm sure it works for you and even for lots of others. But I clearly stated why I dislike it.
And... I should add your arguments cost nothing just because I could say the same about Mercurial - "try look up @ internet, you're soooo deeeeeply wrong!".
Oh, LOL - I got these two comments right after posting this one: http://ayende.com/Blog/archive/2010/03/03/git-is-teh-suck.aspx#38416
> you complain only about programming language?
I hate these kind of guys ;) I stated 4 points, but he writes "only". And... His nickname is "linus" - so it is really better to save the time ;)
>I hate these kind of guys ;) I stated 4 points, but he writes "only"
only programming language is a point, the other are ranting
1. too many tools to install... whoa what a problem; all the tools are called by 'git subcommand', it's not an issue
2. written in C is absurd as writing a web site on it; how do you can write a web site in C? i'm really interested. Also to see a performance killer application written in Java.
3. i'm not able to install it on Windows (git is written for linux in mind) so i have not tried it but I complain the same
4.this point don't talk about git, only rant about public repository (do you have seen github, gitorious?).
retry dude
1 - partially agree. But it's about unification - if there is a single entry point, it's good, and thus the overall impression is better.
2 - you can write web site in C (keywords: CGI, FastCGI). No one does this just because this isn't the best way to do this.
And about performance killer application written in Java: I didn't say Python applications provide the same performance as C applications. I told that in exactly this case I don't see any reasons to use C for the most part of code, because in fact you exchange flexibility & cross-platform capabilities of Python to additional 10-15% of performance that can provide C in this case.
I'm saying this because I'm absolutely sure there are no highly computational tasks here. You need just good base class library.
3. Then you should try and compare this to Hg experience.
4. Github, etc. are good, but I think ideally we need an in-company server syncing with such service as well. So I tried to set it up, and... You know the result.
Btw, note that now both Google Code and Codeplex support Mercurial - this means its API and protocol are easier to adopt. So my conclusion is the same.
Although some of your comments ("developed by masochists for masochists") obviously attracted the Git-fanboy comments up there, I have to say that I agree with your observations.
I tried to use Git as in-house DVCS, too. I made it work, but it is hard to setup especially on Windows (and yes, I know gitorious, gitosis and whatnot).
What I don't get is why Git is so hard to setup for ad-hoc networking (yes, I know there is git instaweb, it just doesn't work on Windows for push-workflows). This was what drove me off to Mercurial in first place, because with HG it just works(TM). IMHO, the ability to show-case ad-hoc networking functions with a DVCS is a killer-feature.
In addition, I think TortoiseHG is even better than the classic tortoises. In contrast to the explorer-centric workflow with the classic ones, you get a kind of stand-alone application with explorer integration, which better fits my workflow (leave repository-browser open, start functions from command-line with hgtk etc.). Another plus is the same GUI on Windows and Linux machines (which is unique to HG's tortoise AFAIK). Of course your mileage may vary...
"Developed by masochists for masochists" is nothing more than joke expressing my feeling of Git - I even explicitly wrote this.
But it seems it anyway acted as red rag.
Fully agree about TortoiseHg - initially it looks a bit crude, but UX is really good. Although some things I like in TortoiseSvn are still missing there (e.g. list of latest comments).
Post a Comment