Using Additional Features

Mercurial has the ability to add new features through the use of extensions. Extensions may add new commands, add options to existing commands, change the default behavior of commands, or implement hooks.

To enable the "foo" extension, either shipped with Mercurial or in the Python search path, create an entry for it in your configuration file, like this:

[extensions]
foo =

You may also specify the full path to an extension:

[extensions]
myfeature = ~/.hgext/myfeature.py

See 'hg help config' for more information on configuration files.

Extensions are not loaded by default for a variety of reasons: they can increase startup overhead; they may be meant for advanced usage only; they may provide potentially dangerous abilities (such as letting you destroy or modify history); they might not be ready for prime time; or they may alter some usual behaviors of stock Mercurial. It is thus up to the user to activate extensions as needed.

To explicitly disable an extension enabled in a configuration file of broader scope, prepend its path with !:

[extensions]
# disabling extension bar residing in /path/to/extension/bar.py
bar = !/path/to/extension/bar.py
# ditto, but no path was supplied for extension baz
baz = !

enabled extensions:

highlight
syntax highlighting for hgweb (requires Pygments)

disabled extensions:

absorb
apply working directory changes to changesets (EXPERIMENTAL)
acl
hooks for controlling repository access
amend
provide the amend command (EXPERIMENTAL)
automv
check for unrecorded moves at commit time (EXPERIMENTAL)
beautifygraph
beautify log -G output by using Unicode characters (EXPERIMENTAL)
blackbox
log repository events to a blackbox for debugging
bookflow
implements bookmark-based branching (EXPERIMENTAL)
bugzilla
hooks for integrating with the Bugzilla bug tracker
censor
erase file content at a given revision
children
command to display child changesets (DEPRECATED)
churn
command to display statistics about repository history
clonebundles
advertise pre-generated bundles to seed clones
closehead
close arbitrary heads without checking them out first
commitextras
adds a new flag extras to commit (ADVANCED)
convert
import revisions from foreign VCS repositories into Mercurial
eol
automatically manage newlines in repository files
extdiff
command to allow external programs to compare revisions
factotum
http authentication with factotum
fastannotate
yet another annotate implementation that might be faster (EXPERIMENTAL)
fastexport
export repositories as git fast-import stream
fetch
pull, update and merge in one command (DEPRECATED)
fix
rewrite file content in changesets or working copy (EXPERIMENTAL)
fsmonitor
Faster status operations with the Watchman file monitor (EXPERIMENTAL)
githelp
try mapping git commands to Mercurial commands
gpg
commands to sign and verify changesets
graphlog
command to view revision graphs from a shell (DEPRECATED)
hgk
browse the repository in a graphical way
histedit
interactive history editing
hooklib
collection of simple hooks for common tasks (EXPERIMENTAL)
journal
track previous positions of bookmarks (EXPERIMENTAL)
keyword
expand keywords in tracked files
largefiles
track large binary files
lfs
lfs - large file support (EXPERIMENTAL)
logtoprocess
send ui.log() data to a subprocess (EXPERIMENTAL)
mq
manage a stack of patches
narrow
create clones which fetch history data for subset of files (EXPERIMENTAL)
notify
hooks for sending email push notifications
pager
browse command output with an external pager (DEPRECATED)
patchbomb
command to send changesets as (a series of) patch emails
phabricator
simple Phabricator integration (EXPERIMENTAL)
purge
command to delete untracked files from the working directory (DEPRECATED)
rebase
command to move sets of revisions to a different ancestor
record
commands to interactively select changes for commit/qrefresh (DEPRECATED)
releasenotes
generate release notes from commit messages (EXPERIMENTAL)
relink
recreates hardlinks between repository clones
remotefilelog
remotefilelog causes Mercurial to lazilly fetch file contents (EXPERIMENTAL)
remotenames
showing remotebookmarks and remotebranches in UI (EXPERIMENTAL)
schemes
extend schemes with shortcuts to repository swarms
share
share a common history between several working directories
show
unified command to show various repository information (EXPERIMENTAL)
sparse
allow sparse checkouts of the working directory (EXPERIMENTAL)
split
command to split a changeset into smaller ones (EXPERIMENTAL)
sqlitestore
store repository data in SQLite (EXPERIMENTAL)
strip
strip changesets and their descendants from history (DEPRECATED)
transplant
command to transplant changesets from another branch
uncommit
uncommit part or all of a local changeset (EXPERIMENTAL)
win32mbcs
allow the use of MBCS paths with problematic encodings
win32text
perform automatic newline conversion (DEPRECATED)
zeroconf
discover and advertise repositories on the local network