From ArchWiki
Jump to navigation Jump to search

Mercurial (commonly referred to as hg) is a distributed version control system written in Python and is similar in many ways to Git, Bazaar and Darcs.


Install mercurial, available in the Official repositories. For the development version, install mercurial-hgAUR.

Graphical front-ends

See also Mercurial graphical user interfaces.

  • EasyMercurial — Simple user interface for the Mercurial distributed version control system. || easyhgAUR
  • hgk — Tcl/Tk based tool to browse the history of a repository in a graphical way. || mercurial + tk
  • hgtui — Textual user interface frontend for DSCM mercurial.[dead link 2021-05-17 ⓘ] || hgtui-hgAUR[broken link: package not found]
  • hgview — Qt4 and text based Mercurial log navigator. || hgviewAUR
  • TortoiseHg — Set of graphical tools and a Nautilus extension for the Mercurial distributed revision control system. || tortoisehgAUR


At the minimum you should configure your username or mercurial will most likely give you an error when trying to commit. Do this by editing ~/.hgrc and adding the following:

username = John Smith <johnsmith@domain.tld>

To use the graphical browser hgk aka. hg view, add the following to ~/.hgrc (see forum thread):


You will need to install tk before running hg view to avoid the rather cryptic error message:

/usr/bin/env: wish: No such file or directory

To remove Mercurial warnings of unverified certificate fingerprints, add the following to ~/.hgrc (see Mercurial wiki[dead link 2021-05-17 ⓘ]):

cacerts = /etc/ssl/certs/ca-certificates.crt

If you are going to be working with large repositories, you may want to enable the progress extension by adding it to your ~/.hgrc file:

progress =

This will show progress bars on longer operations after 3 seconds. If you would like the progress bar to show sooner, you can append the following to your configuration file:

delay = 1.5


All mercurial commands are initiated with the hg prefix. To see a list of some of the common commands, run

$ hg help

You can either work with a pre-existing repository (collection of code or files), or create your own to share.

To work with a pre-existing repository, you must clone it to a directory of your choice:

$ mkdir mercurial
$ cd mercurial
$ hg clone[dead link 2020-03-30 ⓘ]

To create you own, change to the directory you wish to share and initiate a mercurial project

$ cd myfiles
$ hg init myfiles

Dotfiles Repo

Merge-arrows-2.pngThis article or section is a candidate for merging with Dotfiles.Merge-arrows-2.png

Notes: Uses git, but the idea is the same. (Discuss in Talk:Mercurial)

If you intend on creating a repo of all your ~/. files, you simply initiate the project in your home folder:

$ hg init

It is then just a case of adding the specific files you wish to track:

$ hg add |file1 file2 file3

You can then create a ~/.hgignore to ensure that only the files you wish to include in the repository are tracked by mercurial.

Tip: If you include: syntax: glob at the top of the .hgignore file, you can easily exclude groups of files from your repository.

See also