view mercurial/help/hgweb.txt @ 23162:69524a05a7fa

revset-rangeset: call 'getset' on a 'fullreposet' Calling 'baseset(repo.changelog)' builds a list for all revisions in the repo. And we already have the lazy and efficient 'fullreposet' class for this purpose. This gives us the usual benefit ofs the fullreposet: revset) 10:100 before) wall 0.002774 comb 0.000000 user 0.000000 sys 0.000000 (best of 797) after) wall 0.001977 comb 0.000000 user 0.000000 sys 0.000000 (best of 1244) revset) parents(10):parents(100) before) wall 0.005054 comb 0.000000 user 0.000000 sys 0.000000 (best of 481) after) wall 0.002060 comb 0.000000 user 0.000000 sys 0.000000 (best of 1056)
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 16 Oct 2014 23:10:44 -0700
parents e7cfe3587ea4
children afe03a616525
line wrap: on
line source

Mercurial's internal web server, hgweb, can serve either a single
repository, or a tree of repositories. In the second case, repository
paths and global options can be defined using a dedicated
configuration file common to :hg:`serve`, ``hgweb.wsgi``,
``hgweb.cgi`` and ``hgweb.fcgi``.

This file uses the same syntax as other Mercurial configuration files
but recognizes only the following sections:

  - web
  - paths
  - collections

The ``web`` options are thoroughly described in :hg:`help config`.

The ``paths`` section maps URL paths to paths of repositories in the
filesystem. hgweb will not expose the filesystem directly - only
Mercurial repositories can be published and only according to the
configuration.

The left hand side is the path in the URL. Note that hgweb reserves
subpaths like ``rev`` or ``file``, try using different names for
nested repositories to avoid confusing effects.

The right hand side is the path in the filesystem. If the specified
path ends with ``*`` or ``**`` the filesystem will be searched
recursively for repositories below that point.
With ``*`` it will not recurse into the repositories it finds (except for
``.hg/patches``).
With ``**`` it will also search inside repository working directories
and possibly find subrepositories.

In this example::

  [paths]
  /projects/a = /srv/tmprepos/a
  /projects/b = c:/repos/b
  / = /srv/repos/*
  /user/bob = /home/bob/repos/**

- The first two entries make two repositories in different directories
  appear under the same directory in the web interface
- The third entry will publish every Mercurial repository found in
  ``/srv/repos/``, for instance the repository ``/srv/repos/quux/``
  will appear as ``http://server/quux/``
- The fourth entry will publish both ``http://server/user/bob/quux/``
  and ``http://server/user/bob/quux/testsubrepo/``

The ``collections`` section is deprecated and has been superseded by
``paths``.