hgweb: support multi-level repository indexes by enabling descend and collapse
The descend option in hgweb can be used to display all reachable repositories
within a directory hierarchy if set to True. However, all reachable
repositories, regardless of their depth below the root of the hierarchy, are
then listed at the same level - expanded - in the hgweb interface. This patch
adds support for showing only each level of a directory hierarchy, with
subrepositories being shown alongside their parent repositories only at the
appropriate level (because there is no way to navigate to subrepositories from
within repositories), and the contents of directories hidden - collapsed -
behind a link for each directory. To enable this multi-level navigation, a new
option called collapse must be set to True when the descend option is set to
True.
### --- User interface
[ui]
### show changed files and be a bit more verbose if True
# verbose = True
### username data to appear in comits
### it usually takes the form: Joe User <joe.user@host.com>
# username = Joe User <j.user@example.com>
### --- Extensions
[extensions]
### each extension has its own 'extension_name=path' line
### the default python library path is used when path is left blank
### the hgext dir is used when 'hgext.extension_name=' is written
### acl - Access control lists
### hg help acl
# hgext.acl =
### bisect - binary search changesets to detect bugs
### hg help bisect
# hgext.hbisect =
### bugzilla - update bugzilla bugs when changesets mention them
### hg help bugzilla
# hgext.bugzilla =
### extdiff - Use external diff application instead of builtin one
# hgext.extdiff =
### gpg - GPG checks and signing
### hg help gpg
# hgext.gpg =
### graphlog - ASCII graph log
### hg help glog
# hgext.graphlog =
### hgk - GUI repository browser
### hg help view
# hgext.hgk =
### mq - Mercurial patch queues
### hg help mq
# hgext.mq =
### notify - Template driven e-mail notifications
### hg help notify
# hgext.notify =
### patchbomb - send changesets as a series of patch emails
### hg help email
# hgext.patchbomb =
### churn - create a graph showing who changed the most lines
### hg help churn
# hgext.churn = /home/user/hg/hg/contrib/churn.py
### eol - automatic management of line endings
# hgext.eol =
### --- hgk additional configuration
[hgk]
### set executable path
# path = /home/user/hg/hg/contrib/hgk
### --- Hook to Mercurial actions - See hgrc man page for avaliable hooks
[hooks]
### Example notify hooks (load hgext.notify extension before use)
# incoming.notify = python:hgext.notify.hook
# changegroup.notify = python:hgext.notify.hook
### Email configuration for the notify and patchbomb extensions
[email]
### Your email address
# from = user@example.com
### Method to send email - smtp or /usr/sbin/sendmail or other program name
# method = smtp
### smtp server to send email to
[smtp]
# host = mail
# port = 25
# tls = false
# username = user
# password = blivet
# local_hostname = myhost
### --- Email notification hook for server
[notify]
### multiple sources can be specified as a whitespace or comma separated list
# sources = serve push pull bundle
### set this to False when you're ready for mail to start sending
# test = True
### path to config file with names of subscribers
# config = /path/to/subscription/file