hgapi Package

hgapi Module

exception hgapi.hgapi.HgException(msg, exit_code=None)[source]

Exception class allowing a exit_code parameter and member to be used when calling Mercurial to return exit code.

class hgapi.hgapi.Repo(path, user=None)[source]

A representation of a Mercurial repository.

classmethod command(path, env, *args)[source]

Run a hg command in path and return the result.

Raise on error.

config(section, key)[source]

Return the value of a configuration variable.

configbool(section, key)[source]

Return a config value as a boolean value.

Empty values, the string ‘false’ (any capitalization), and ‘0’ are considered False, anything else is True

configlist(section, key)[source]

Return a config value as a list.

Will try to create a list delimited by commas, or whitespace if no commas are present.


Returns a list of branch names from the repo.


Returns a list of branches from the repo, including versions.

If get_active_only is True, then only return active branches.


Add a file to the repo.

when no filepath is given, all files are added to the repo.


Add a file to the repo.

When no filepath is given, all files are added and removed to and respectively from the repo.

hg_archive(destination, revision=None, archive_type=None)[source]

Archive a repository.

Creates an archive of a single revision in the specified destination.

If revision is not supplied the default is the parent of the repository’s working directory (tip).

If archive_type is not supplied mercurial will determine the type based on the file extension. If there is no file extension the default is “files”.


Create a branch or get a branch name.

If branch_name is not None, the branch is created. Otherwise the current branch name is returned.

classmethod hg_clone(url, path, *args)[source]

Clone repository at given url to path, then return repo object to path.


Run a hg command.

hg_commit(message, user=None, date=None, files=[], close_branch=False, amend=False, message_file=None)[source]

Commit changes to the repository.

hg_diff(rev_a=None, rev_b=None, filenames=None)[source]

Get a unified diff as returned by ‘hg diff’.

rev_a and rev_b are passed as -r <rev> arguments to the call, filenames are expected to be an iterable of file names.

Returns a list of dicts where every dict has a ‘filename’ and ‘diff’ field, where with diff being the complete diff for the file including header (diff -r xxxx -r xxx...).


Get a list with the node identifiers of all open heads. If short is given and is not False, return the short form of the node id.


Get the output of the hg id command (truncated node).


Get incoming changesets for a certain remote.


Initialize a new repo.

hg_log(identifier=None, limit=None, template=None, branch=None, **kwargs)[source]

Get repositiory log.

hg_merge(reference, preview=False)[source]

Merge reference to current.

With ‘preview’ set to True get a list of revision numbers containing all revisions that would have been merged.

hg_move(source, destination)[source]

Move a file in the repo.


Get the full node id of the current revision.


Get outgoing changesets for a certain remote.


Get remote repositories.


Pull changes to this repo.


Push changes from this repo.


Remove a file from the repo

hg_rename(source, destination)[source]

Move a file in the repo. This is hg_more.


Get the revision number of the current revision.

hg_revert(all=False, *files)[source]

Revert repository.

classmethod hg_root(path)[source]

Return the root (top) of the path.

When no path is given, current working directory is used. Raises HgException when no repo is available.

hg_status(empty=False, clean=False)[source]

Get repository status.

Returns a dict containing a change char -> file list mapping, where change char is in:

A, M, R, !, ?

Example after adding one.txt, modifying a_folder/two.txt and three.txt:

{'A': ['one.txt'], 'M': ['a_folder/two.txt', 'three.txt'],
'!': [], '?': [], 'R': []}

If empty is set to non-False value, don’t add empty lists. If clean is set to non-False value, add clean files as well (-A)

hg_tag(*tags, **kwargs)[source]

Add one or more tags to the current revision.

Add one or more tags to the current revision, or revision given by passing ‘rev’ as a keyword argument:

>>> repo.hg_tag('mytag', rev=3)

Get all tags from the repo.

Returns a dict containing tag: shortnode mapping

hg_update(reference, clean=False)[source]

Update to the revision identified by reference.

classmethod hg_version()[source]

Return the version number of Mercurial.


Read the configuration as seen with ‘hg showconfig’.

Is called by __init__ - only needs to be called explicitly to reflect changes made since instantiation.


Get the identified revision as a Revision object.


Returns a list of Revision objects for the given slice

class hgapi.hgapi.Revision(json_log)[source]

A representation of a revision. Available fields are:

node, rev, author, branch, parents, date, tags, desc

A Revision object is equal to any other object with the same value for node.