News for hackers. Stuff that matters.
Re:Scaling Mercurial at Facebook by JoshTriplett on Tuesday January 07, 2014 @04:11PM (#7019962)
They're not exactly as supported, because they're not on by default, and they're not the thing everyone in the Mercurial culture tells you to use as the obvious solution to problems. Version control is as much about what other people do as what you do, and what other people do tends to align most closely with the defaults and what the tools encourage.
Re:Scaling Mercurial at Facebook by durin42 on Tuesday January 07, 2014 @04:23PM (#7020047)
No, they're exactly as supported. What I meant by that was that we promise to not break them, ever, to keep the output formats stable, and accept bug reports for them. That doesn't necessarily mean it's something we'll always recommend (eg mq isn't something I'd recommend for a new user, rebase/histedit/amend are way better and always will be.)

We don't turn them on by default for two reasons: newbie users not shooting their foot off unexpectedly, and UI clutter. mq alone (which we actually recommend avoiding now if you don't really need it) adds a bunch of verbs to the command line interface.

We've talked about having an 'hg hello' command or something that'd give you a proposed template hgrc that suggest you might want rebase/record/histedit/pager/color/progress, but nobody's worked out exactly what that should be like. Does something like that sound like it might be helpful?

Re:Scaling Mercurial at Facebook by rbehrends on Tuesday January 07, 2014 @09:45PM (#7021356)
I have wondered why they're called "extensions" rather than "modules", which I think would characterize their actual use better.
Re:Scaling Mercurial at Facebook by dgesang on Wednesday January 08, 2014 @12:09AM (#7021814)
There are only two hard problems in computer science: cache invalidation and naming things. - Phil Karlton
Re:Scaling Mercurial at Facebook by mushishi on Tuesday January 07, 2014 @05:16PM (#7020385)
Could you elaborate on why to avoid mq?
Re:Scaling Mercurial at Facebook by jordigh on Tuesday January 07, 2014 @06:48PM (#7020827)
Some people like it, but my basic complaint with it is that it introduces a new concept, the "patch", that is basically a crippled commit. When a patch is not a commit, you get rejected diff hunks when it fails to apply, and it can easily forget its history.

An MQ patch is basically a commit that doesn't know how to merge and doesn't keep backups. It's way too easy to make a mistake and lose work. I consider MQ one of hg's youthful mistakes before tools like histedit, rebase, and Evolve came to exist.

Re:Scaling Mercurial at Facebook by ahomescu1 on Tuesday January 07, 2014 @10:36PM (#7021514)
mq keeps its patches as an internal per-repo stack. This is much weaker than git's tree branches.

Here's an example: let's say I've been working on a repo, and have 2 current mq patches called A and B pushed. There's no way for me to pop A and B, then apply another patch called D in the current repo (at least as far as I could figure out). Also, even if there were, I'd have no way of then pushing A and B on top of D. The patches only work as a linear stack (D must come on top of B).

Re:Scaling Mercurial at Facebook by rossjudson on Wednesday January 08, 2014 @10:04AM (#7023863)
I do this all the time. Pop B, pop A, reorder patch queue to put D first, push D, push A, push B. Check the docs.
Re:Scaling Mercurial at Facebook by masklinn on Tuesday January 07, 2014 @05:41PM (#7020512)
It's a very powerful tool, but also a complex one, and one which brings in a bunch of new commands. There are a bunch of extension which provide nice UIs to various subsets of mq's full power, and are much simpler.

If you need mq, use mq, but if you just need to e.g. do some history edition, use histedit.

Re:Scaling Mercurial at Facebook by jpace121 on Tuesday January 07, 2014 @05:35PM (#7020484)
In response to your last sentence, yes.
Re:Scaling Mercurial at Facebook by onestone on Tuesday January 07, 2014 @08:05PM (#7021069)
+1 for the 'hg hello' idea.
Re:Scaling Mercurial at Facebook by dgesang on Wednesday January 08, 2014 @12:16AM (#7021835)
> They're not exactly as supported, because they're not on by default

I really don't get this. In almost any software there are features that are not 'on by default', but it's still implemented and supported (except explicitly stated otherwise). How can this be a reason to not use the functionality when you need it?

Re:Scaling Mercurial at Facebook by JoshTriplett on Wednesday January 08, 2014 @01:26AM (#7022059)
It's like using Outlook to respond to mail on a mailing list. Sure, it's theoretically possible to use some combination of manual configuration and extra work to construct a post that won't violate social norms, but the tool doesn't encourage it, so mailing lists with a significant number of Outlook users on them tend to fail to follow the standard mailing list conventions of other lists, and develop their own conventions.

The same holds for any tool used in a workflow that involves anyone other than yourself: any tool with a default workflow tends to encourage people to follow that default workflow.