A bit faster Mercurial client for Unix with per-user cmdserver daemon.


for local use:

  1. Run make (or gmake on FreeBSD.)
  2. Create symlink to chg from your PATH

to system:

  1. Run make install
  2. Add hgext directory to PYTHONPATH (or specify approprivate HGEXTDIR on make install.)


Same as hg. e.g.

% chg stat

You may want to add the alias:

% alias hg=chg

To terminate background cmdserver:

% kill `ps aux | grep 'hg serve' | awk '{ print $2; }'`

Environment Variables

cHg updates os.environ on each request, but some variables cannot make an effect. The following variables are specially handled by cHg:

  • update ui attributes by HGPLAIN and HGPLAINEXCEPT, but some behaviors may not change.
  • reload message catalog if LANG, LANGUAGE or LC_MESSAGES changed.
  • HG is the path to the 'hg' executable spawned as the background cmdserver.

The following variables are available for testing purpose:

  • CHGDEBUG enables debug message of cHg.
  • CHGCMDSERVEROPTS gives additional parameters to background cmdserver.
  • CHGSOCKNAME specifies socket path of background cmdserver.


On some old platforms, it isn't safe to call accept()s by multiple processes. Currently cHg doesn't support such platforms.

For details, grep Apache httpd source for SINGLE_LISTEN_UNSERIALIZED_ACCEPT.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.