What are the Best hg/Mercurial Extensions?
stackoverflow.com
stackoverflow.com
--
Standard git distribution, all enabled by default:
color: standard config
pager: on by default
fetch: pull/fetch/merge/rebase distinction in git
graphlog: log --oneline --graph --decorate
hgk: gitk
bookmarks: standard branches
record: normal use of the index
extdiff: difftool
share: standard clone behavior on a local file system
mq: standard usage of branches and rebase
transplant: cherry-pick and rebase
rebase: built in
inotify: status is already fast... not sure why I'd need this
shelve: stash
attic: stash
acl: use multiple repositories & submodules
histedit: rebase -i
forrest: submodules
--
Some assembly required:
notify: .git/hooks + sendmail
bigfiles: git-annex
Your whole point is making a big deal out of something very trivial. These plugins are all core plugins for Mercurial too; the distinction between "core plugin" and "baked-in" is one line of configuration to simply list the plugin name. It's equivalently not "baked in" as your "some assembly required." These plugins are not on by default only because many people don't need to be distracted by them, and those that do wish to use them will have no trouble adding one line to a single configuration file. Learning a whole different SCM is a lot of work to avoid adding one line to a configuration file, don't you think?
There isn't a Mercurial user alive who isn't thoroughly and completely aware of Git and all of its magical specialness, thanks to assholes like you who show up to all of our conversations to proselytize us. Please stop patronizing us with these tired arguments—you're turning us into a persecuted minority, and nobody drags out a fight like a persecuted minority.
forest is actually obsoleted by the built-in subrepo feature.
bookmarks are always on now - the extension is now a no-op.
transplant is (mostly? it was for my needs) obsoleted by graft - a core command that's smarter.
mq I don't personally use anymore, because of bookmarks, rebase, and histedit
hsitedit - ships in the distro now, off by default (see below)
inotify - hg status /is/ fast. This makes it stupid fast even on absurdly large working copies (extension is subject to some race conditions though. I don't recommend it. bos is doing some work to make this faster w/o the extension).
acl: I think you're missing the point? It lets you have certain users allowed to push mods to a subset of files /without/ having to resort to multiple repositories (which are a hassle, even with submodules or subrepos).
Also, there's a reason some of these features are off by default - most users shouldn't be touching them. Having a barrier to using them has been (in my experience) a real benefit when trying to train newbies.
Also, some of us think pager is a misfeature - it drives me bonkers anytime git "helps" me in that way.
RE: acl -- I understand it. I just don't really see a need for it because I prefer pull-requests and decentralized decision making. I truly dislike the "commit bit" culture that accompanies centralized repositories and acls seems to import some of that culture. I'm a big believer in better to beg for forgiveness than to ask for permission, and therefore I'd much rather say "Hey, I changed these files, you should pull from me" and if I fucked up, you can call me an idiot and I'll have learned something. Maybe put a README in the special directories! Then again, I feel similarly about method access control in C++ & Java vs Python. Python's underscore prefix for private bits is enough to stop me from screwing up, even though I can dig in and fiddle with private stuff if I actually know what I'm doing and no compiler is going to stop me.
> most users shouldn't be touching them
Mercurial is clearly designed for easy of learning. That's a worthwhile goal, and I think that it's great at that. As I mentioned, I started with Mercurial. It's a great offramp from SVN and onramp to DVCS.
However, my version control system gets more use than any software on my system, minus my text editor! It's worth learning. It's worth investing in. And it's worth having a sub-par beginner experience to optimize for the experts.... for me. I'd recommend Hg to any team looking to get started with DVCS where there is a mix of stronger and weaker devs and you're sure to have people who are going to have difficulty understanding Git. Hg is easy enough for beginners and flexible enough for experts. Git, however, is tuned for experts. I know quite a few people who have worked with both, and they all prefer Git... in time.
note: I work on the guts of VCS for a living.
Or, you know, you could be content with not trying to convert everyone you meet, like a decent human being.
It's a thin wrapper over the hg-git extension that lets me push my Bitbucket repos to GitHub for all my open source projects. I can then accept pull requests on both Bitbucket and GitHub, and merge and push back to both. As a Mercurial/GitHub fan managing projects with a decent amount of activity, it's fairly seamless.