Hacker News new | ask | show | jobs
by cjbprime 4843 days ago
> This means that you never have to decide whether you want to use Git or Mercurial. Religious war: averted.

I think the religious war is already over, and Git won. The only time I hear about Mercurial is when Fog Creek talks about it; approximately everyone else is on Github.

(Update: For the record, I don't think Git winning this war was due to it being technically superior in any significant way -- but neither is Mercurial superior enough to make it worth teaching everyone how to use two different DVCSes. Git was good enough, and then it won the mindshare war, and now it's the standard.)

4 comments

Git is certainly much more widely used in general for open-source, but there are plenty of major projects that are on Mercurial. Python, Vim, Mozilla, dovecot, Go, NetBeans, and mutt all come to mind really quickly. Something like Kiln Harmony means that you, as a Git user, no longer need to care that these projects are on Mercurial. And conversely, if they want to use a project that's in Git, they can, from the security of their Mercurial workflow.
The Mercurial support is very welcome for those of us who found it a battle getting our employers to switch from SVN to Mercurial and don't want to go through that again. Unlike the transition from SVN to a DVCS, a transition from Mercurial to Git would not really be of any great advantage. And our code is not open source so it doesn't make much sense switching just because in the wider world Mercurial is out of fashion.
>...those of us who found it a battle getting our employers to switch from SVN to Mercurial...

Any tips for someone still fighting resistance to move to a DCVS?

I don't know if this helps you, but try telling them that they can leave the 'distributed' part for later. At my company we still have a 'central' repository. We'd really need to know more about your companies objections to DVCS to give advice.

I personally just started using mercurial local-only alongside svn, and as new projects started I would try to make mercurial the default repo for that project. This worked well for me, but my company is pretty laid-back about these kinds of things.

The best application of "embrace, extend, extinguish" I ever saw:

1) Replicate SVN workflow in GIT. SVNs features/limitations are a tiny subset of GIT so this works well. Not too proud to admit the first day had a handwritten translation cheatsheet. 2) Stop worrying about branching and merging being evil, last year rolled out git flow which mostly just formalized and standardized whats already being done, etc. 3) Shut down the old SVN infrastructure after its unused long enough.

I think for an enterprise, the D part of DVCS isn't much of a selling point. What is a good selling point is all of the other stuff that makes Git/HG awesome, like easy branching and merging. There's also Github Enterprise, which if you can pay for it is really fantastic.
The D can be a selling point. Some things D enables:

Working offline is completely transparent. If your employees are on an airplane, or if the wifi at the conference they are at is overloaded, or if the central repository goes down for some reason, people can continue to work normally.

Code review based on asking for permission, not forgiveness. While the UI is a bit horrid, gerrit has been a huge win for us when it comes to code reviewing changes before they are out "in the public". When code review happens after something gets committed to the main repo, it's far to easy for issues to get forgotten about and never addressed. (Of course, Github pull requests have a better UI than Gerrit, but you might have reasons not to want to entrust your code to Github. And, also of course, this isn't strictly something that can only be done in a distributed VCS, but it seems to be a lot more natural in that context.)

> I think the religious war is already over, and Git won.

And this is how Fog Creek adapts to that reality without alienating their existing customers. They were headed directly at a tar pit. This this is the step sideways which will allow them to continue moving forward.

The fact that everyone is on github doesn't mean much when VCSes export to git format. I use bzr and my repositories are on github.