Glossary

    Ancestor
        Any changeset that can be reached by an unbroken chain of parent
        changesets from a given changeset. More precisely, the ancestors of a
        changeset can be defined by two properties: a parent of a changeset is
        an ancestor, and a parent of an ancestor is an ancestor. See also:
        'Descendant'.

    Bookmark
        Bookmarks are pointers to certain commits that move when committing.
        They are similar to tags in that it is possible to use bookmark names
        in all places where Mercurial expects a changeset ID, e.g., with "hg
        update". Unlike tags, bookmarks move along when you make a commit.

        Bookmarks can be renamed, copied and deleted. Bookmarks are local,
        unless they are explicitly pushed or pulled between repositories.
        Pushing and pulling bookmarks allow you to collaborate with others on
        a branch without creating a named branch.

    Branch
        (Noun) A child changeset that has been created from a parent that is
        not a head. These are known as topological branches, see 'Branch,
        topological'. If a topological branch is named, it becomes a named
        branch. If a topological branch is not named, it becomes an anonymous
        branch. See 'Branch, anonymous' and 'Branch, named'.

        Branches may be created when changes are pulled from or pushed to a
        remote repository, since new heads may be created by these operations.
        Note that the term branch can also be used informally to describe a
        development process in which certain development is done independently
        of other development. This is sometimes done explicitly with a named
        branch, but it can also be done locally, using bookmarks or clones and
        anonymous branches.

        Example: "The experimental branch".

        (Verb) The action of creating a child changeset which results in its
        parent having more than one child.

        Example: "I'm going to branch at X".

    Branch, anonymous
        Every time a new child changeset is created from a parent that is not
        a head and the name of the branch is not changed, a new anonymous
        branch is created.

    Branch, closed
        A named branch whose branch heads have all been closed.

    Branch, default
        The branch assigned to a changeset when no name has previously been
        assigned.

    Branch head
        See 'Head, branch'.

    Branch, inactive
        If a named branch has no topological heads, it is considered to be
        inactive. As an example, a feature branch becomes inactive when it is
        merged into the default branch. The "hg branches" command shows
        inactive branches by default, though they can be hidden with "hg
        branches --active".

        NOTE: this concept is deprecated because it is too implicit. Branches
        should now be explicitly closed using "hg commit --close-branch" when
        they are no longer needed.

    Branch, named
        A collection of changesets which have the same branch name. By
        default, children of a changeset in a named branch belong to the same
        named branch. A child can be explicitly assigned to a different
        branch. See "hg help branch", "hg help branches" and "hg commit
        --close-branch" for more information on managing branches.

        Named branches can be thought of as a kind of namespace, dividing the
        collection of changesets that comprise the repository into a
        collection of disjoint subsets. A named branch is not necessarily a
        topological branch. If a new named branch is created from the head of
        another named branch, or the default branch, but no further changesets
        are added to that previous branch, then that previous branch will be a
        branch in name only.

    Branch tip
        See 'Tip, branch'.

    Branch, topological
        Every time a new child changeset is created from a parent that is not
        a head, a new topological branch is created. If a topological branch
        is named, it becomes a named branch. If a topological branch is not
        named, it becomes an anonymous branch of the current, possibly
        default, branch.

    Changelog
        A record of the changesets in the order in which they were added to
        the repository. This includes details such as changeset id, author,
        commit message, date, and list of changed files.

    Changeset
        A snapshot of the state of the repository used to record a change.

    Changeset, child
        The converse of parent changeset: if P is a parent of C, then C is a
        child of P. There is no limit to the number of children that a
        changeset may have.

    Changeset id
        A SHA-1 hash that uniquely identifies a changeset. It may be
        represented as either a "long" 40 hexadecimal digit string, or a
        "short" 12 hexadecimal digit string.

    Changeset, merge
        A changeset with two parents. This occurs when a merge is committed.

    Changeset, parent
        A revision upon which a child changeset is based. Specifically, a
        parent changeset of a changeset C is a changeset whose node
        immediately precedes C in the DAG. Changesets have at most two
        parents.

    Checkout
        (Noun) The working directory being updated to a specific revision.
        This use should probably be avoided where possible, as changeset is
        much more appropriate than checkout in this context.

        Example: "I'm using checkout X."

        (Verb) Updating the working directory to a specific changeset. See "hg
        help update".

        Example: "I'm going to check out changeset X."

    Child changeset
        See 'Changeset, child'.

    Close changeset
        See 'Head, closed branch'

    Closed branch
        See 'Branch, closed'.

    Clone
        (Noun) An entire or partial copy of a repository. The partial clone
        must be in the form of a revision and its ancestors.

        Example: "Is your clone up to date?".

        (Verb) The process of creating a clone, using "hg clone".

        Example: "I'm going to clone the repository".

    Closed branch head
        See 'Head, closed branch'.

    Commit
        (Noun) A synonym for changeset.

        Example: "Is the bug fixed in your recent commit?"

        (Verb) The act of recording changes to a repository. When files are
        committed in a working directory, Mercurial finds the differences
        between the committed files and their parent changeset, creating a new
        changeset in the repository.

        Example: "You should commit those changes now."

    Cset
        A common abbreviation of the term changeset.

    DAG
        The repository of changesets of a distributed version control system
        (DVCS) can be described as a directed acyclic graph (DAG), consisting
        of nodes and edges, where nodes correspond to changesets and edges
        imply a parent -> child relation. This graph can be visualized by
        graphical tools such as "hg glog" (graphlog). In Mercurial, the DAG is
        limited by the requirement for children to have at most two parents.

    Default branch
        See 'Branch, default'.

    Descendant
        Any changeset that can be reached by a chain of child changesets from
        a given changeset. More precisely, the descendants of a changeset can
        be defined by two properties: the child of a changeset is a
        descendant, and the child of a descendant is a descendant. See also:
        'Ancestor'.

    Diff
        (Noun) The difference between the contents and attributes of files in
        two changesets or a changeset and the current working directory. The
        difference is usually represented in a standard form called a "diff"
        or "patch". The "git diff" format is used when the changes include
        copies, renames, or changes to file attributes, none of which can be
        represented/handled by classic "diff" and "patch".

        Example: "Did you see my correction in the diff?"

        (Verb) Diffing two changesets is the action of creating a diff or
        patch.

        Example: "If you diff with changeset X, you will see what I mean."

    Directory, working
        The working directory represents the state of the files tracked by
        Mercurial, that will be recorded in the next commit. The working
        directory initially corresponds to the snapshot at an existing
        changeset, known as the parent of the working directory. See 'Parent,
        working directory'. The state may be modified by changes to the files
        introduced manually or by a merge. The repository metadata exists in
        the .hg directory inside the working directory.

    Draft
        Changesets in the draft phase have not been shared with publishing
        repositories and may thus be safely changed by history-modifying
        extensions. See "hg help phases".

    Graph
        See DAG and "hg help graphlog".

    Head
        The term 'head' may be used to refer to both a branch head or a
        repository head, depending on the context. See 'Head, branch' and
        'Head, repository' for specific definitions.

        Heads are where development generally takes place and are the usual
        targets for update and merge operations.

    Head, branch
        A changeset with no descendants on the same named branch.

    Head, closed branch
        A changeset that marks a head as no longer interesting. The closed
        head is no longer listed by "hg heads". A branch is considered closed
        when all its heads are closed and consequently is not listed by "hg
        branches".

        Closed heads can be re-opened by committing new changeset as the child
        of the changeset that marks a head as closed.

    Head, repository
        A topological head which has not been closed.

    Head, topological
        A changeset with no children in the repository.

    History, immutable
        Once committed, changesets cannot be altered.  Extensions which appear
        to change history actually create new changesets that replace existing
        ones, and then destroy the old changesets. Doing so in public
        repositories can result in old changesets being reintroduced to the
        repository.

    History, rewriting
        The changesets in a repository are immutable. However, extensions to
        Mercurial can be used to alter the repository, usually in such a way
        as to preserve changeset contents.

    Immutable history
        See 'History, immutable'.

    Merge changeset
        See 'Changeset, merge'.

    Manifest
        Each changeset has a manifest, which is the list of files that are
        tracked by the changeset.

    Merge
        Used to bring together divergent branches of work. When you update to
        a changeset and then merge another changeset, you bring the history of
        the latter changeset into your working directory. Once conflicts are
        resolved (and marked), this merge may be committed as a merge
        changeset, bringing two branches together in the DAG.

    Named branch
        See 'Branch, named'.

    Null changeset
        The empty changeset. It is the parent state of newly-initialized
        repositories and repositories with no checked out revision. It is thus
        the parent of root changesets and the effective ancestor when merging
        unrelated changesets. Can be specified by the alias 'null' or by the
        changeset ID '000000000000'.

    Parent
        See 'Changeset, parent'.

    Parent changeset
        See 'Changeset, parent'.

    Parent, working directory
        The working directory parent reflects a virtual revision which is the
        child of the changeset (or two changesets with an uncommitted merge)
        shown by "hg parents". This is changed with "hg update". Other
        commands to see the working directory parent are "hg summary" and "hg
        id". Can be specified by the alias ".".

    Patch
        (Noun) The product of a diff operation.

        Example: "I've sent you my patch."

        (Verb) The process of using a patch file to transform one changeset
        into another.

        Example: "You will need to patch that revision."

    Phase
        A per-changeset state tracking how the changeset has been or should be
        shared. See "hg help phases".

    Public
        Changesets in the public phase have been shared with publishing
        repositories and are therefore considered immutable. See "hg help
        phases".

    Pull
        An operation in which changesets in a remote repository which are not
        in the local repository are brought into the local repository. Note
        that this operation without special arguments only updates the
        repository, it does not update the files in the working directory. See
        "hg help pull".

    Push
        An operation in which changesets in a local repository which are not
        in a remote repository are sent to the remote repository. Note that
        this operation only adds changesets which have been committed locally
        to the remote repository. Uncommitted changes are not sent. See "hg
        help push".

    Repository
        The metadata describing all recorded states of a collection of files.
        Each recorded state is represented by a changeset. A repository is
        usually (but not always) found in the ".hg" subdirectory of a working
        directory. Any recorded state can be recreated by "updating" a working
        directory to a specific changeset.

    Repository head
        See 'Head, repository'.

    Revision
        A state of the repository at some point in time. Earlier revisions can
        be updated to by using "hg update".  See also 'Revision number'; See
        also 'Changeset'.

    Revision number
        This integer uniquely identifies a changeset in a specific repository.
        It represents the order in which changesets were added to a
        repository, starting with revision number 0. Note that the revision
        number may be different in each clone of a repository. To identify
        changesets uniquely between different clones, see 'Changeset id'.

    Revlog
        History storage mechanism used by Mercurial. It is a form of delta
        encoding, with occasional full revision of data followed by delta of
        each successive revision. It includes data and an index pointing to
        the data.

    Rewriting history
        See 'History, rewriting'.

    Root
        A changeset that has only the null changeset as its parent. Most
        repositories have only a single root changeset.

    Secret
        Changesets in the secret phase may not be shared via push, pull, or
        clone. See "hg help phases".

    Tag
        An alternative name given to a changeset. Tags can be used in all
        places where Mercurial expects a changeset ID, e.g., with "hg update".
        The creation of a tag is stored in the history and will thus
        automatically be shared with other using push and pull.

    Tip
        The changeset with the highest revision number. It is the changeset
        most recently added in a repository.

    Tip, branch
        The head of a given branch with the highest revision number. When a
        branch name is used as a revision identifier, it refers to the branch
        tip. See also 'Branch, head'. Note that because revision numbers may
        be different in different repository clones, the branch tip may be
        different in different cloned repositories.

    Update
        (Noun) Another synonym of changeset.

        Example: "I've pushed an update".

        (Verb) This term is usually used to describe updating the state of the
        working directory to that of a specific changeset. See "hg help
        update".

        Example: "You should update".

    Working directory
        See 'Directory, working'.

    Working directory parent
        See 'Parent, working directory'.