My own hit list:
The simple ones you must have:
color
: colorize output from commands like diff
and status
, which makes it easier to assess.pager
: browse long output a page at a time.fetch
: pull, update and merge from another repo in one step.graphlog
: display revision graphs in your shell, incredibly useful for looking at the branches in your log history.hgk
: browse the repository with a graphical interface (see also TortoiseHg and Murky)If you enable pager
, you should configure it to not interfere with certain commands:
[pager]
pager = LESS='FSRX' less
ignore = version, help, update, serve, record
The intermediate extensions I highly recommend (and use frequently):
record
: lets you interactively select hunks of files to commit - perfect for when you are in the middle of one set of changes, and you end up fixing something that should have its own commit.extdiff
: configure an external diff tool (such as meld)share
: have multiple clones use the same repo historyThe Advanced extensions I would not be without:
mq
: manage a stack of patches. Very powerful, allows layering of patches on top of the tree.notify
: send email notifications when a repo is changed.rebase
: reapply local changes on top of a new parent revision.largefiles
: work with large binary files outside the hg storeAll the above are bundled with Mercurial, and are stable and well-tested. I highly recommend all of them.
Non-core extensions worth investigating:
shelve
: selectively put aside changes (at the granularity of hunks) and restore them.acl
: selectively allow access to different parts of the repository treeSuperseded extensions and migrated to core (info from @durin42):
forest
was been superseded by the subrepo
support introduced in v1.3bookmarks
is in core and always enabledtransplant
is superseded by graft
, a core commandhistedit
is in core as of v2.3, but is disabled by defaultinotify
is not recommended, as there is apparently a bug due to a race conditiongraphlog
and mq
are especially tasty.
hg rebase
may have some overlap.git
users like to rebase. May replace mq
for many use cases.git
branches.Not yet mentioned: mercurial_keyring
https://www.mercurial-scm.org/wiki/KeyringExtension
"Keyring extension uses services of the keyring library to securely save authentication passwords (HTTP/HTTPS and SMTP) using system specific password database (Gnome Keyring, KDE KWallet, OSXKeyChain, dedicated solutions for Win32 and command line)."
I use ssh to access my repos on GitHub and Bitbucket, and my keyphrase is held in the keychain. This extension lets Mercurial get it whenever needed.
Also required for me: hg-git
http://hg-git.github.com/
Mercurial plugin letting you pull and push git repos using hg as a client. Use it all the time.
If you're working with a slowish host like Bitbucket, progress is essential. Otherwise hg push
looks like it's hung :\
My list:
graphlog. I use it much more than hg log. (wish it could restrict to branches)
purge. remove all files not in Mercurial. I use this instead of or as a cleaner version of make clean.
Less used, but nice:
I keep trying to use the history editing tools, but keep running into limitations. I want them to work.
By the way, beware: hgk and fetch are "unloved": https://www.mercurial-scm.org/wiki/UnlovedFeatures. But then, SubRepos are, not unloved, but a feature of last resort, and I use subrepos.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With