Let us not forget that GitHub is a major reason why people choose Git. If Bitbucket (or a hypothetical HgHub) had taken the larger market share first, we'd likely see more projects using Hg than Git.
Full ack. Github and it's widespread usage is actually the only reason I switched over to git as my main VCS. Close to 100% of my usual use-cases would be well-served by a recent version of svn. I know, there's a ton of use-cases that benefit tremendously from git's model, but those are not mine.
I still hate how the raw cli interface with tons of switches forces me to learn git's internals and storage model. Git advocates usually tell me "you need to know to unleash the powers of git" but actually, I'd rather prefer not to know and regard it as an opaque tool.
Compared to svn or hg the cli feels crude and not well thought over either. There's commands that accept the full verb (add, diff, checkout, clone), others that accept an abbreviation (rm, mv), but no (remove, move). I can set that up using aliases, I know. But why do I have to? Then there's add, move and remove, but no copy (which is "cp <file>; git add <file>). I often find myself typing the wrong incantation because there's a mismatch in how the commands are named. In that respect svn really shines in comparison.
The internal representation aspect is important -- specifically, having to deal with the index as separate from both your working directory and your repository. that makes it harder to get started.
I love hg, and bitbucket is the best we've got - but man, the developers at BitBucket have their heads stuck in so deep in the sand!!!
GitHub "won" because the developers were not only innovative but they listened to their user base. BitBucket developers have, so far, just scoffed at my requests for changes to features that should be fundamentally different.
For example, the issues system. When you first hit the issues list it sorts by most recent date created; if I want to see the most critical tickets (sorted by priority) I have to click on the priority column; but wait, that first sorts it as least important first (wtf?) so I have to click it AGAIN to get the highest priority tickets.
I put in two support tickets on the matter, one asking for the default when hitting the page to be sort by priority (most critical first) so I can see WHAT IS MOST CRITICAL THAT NEEDS TO GET DONE NOW. If not the default, give a settings option so that I can set what the default to sort by could be! Their response? "Create a bookmark" - yeah, that's what I've done but I shouldn't have to do that. It's little shit like this that irks me about bbucket vs GitHub.
The second ticket has to do with that silliness that is sorting least important first when you first click on the column sort... Le sigh.
I still use it though because I prefer mercurial to git.
Primarily because BitBucket is slowly getting better and I would rather be on the native platform? Plus, we have all of our tickets in BBucket ATM and I'm not too keen on moving them over (I would probably hire a VA to do it, but still...).
I don't see how that factors in? I've been playing with GitHub a bit and I use hg. I just use the hggit extension the github guys wrote to interact with git and GitHub.
I still hate how the raw cli interface with tons of switches forces me to learn git's internals and storage model. Git advocates usually tell me "you need to know to unleash the powers of git" but actually, I'd rather prefer not to know and regard it as an opaque tool.
Compared to svn or hg the cli feels crude and not well thought over either. There's commands that accept the full verb (add, diff, checkout, clone), others that accept an abbreviation (rm, mv), but no (remove, move). I can set that up using aliases, I know. But why do I have to? Then there's add, move and remove, but no copy (which is "cp <file>; git add <file>). I often find myself typing the wrong incantation because there's a mismatch in how the commands are named. In that respect svn really shines in comparison.