help: don't try to render a section on sub-topics
This patch subtly changes the behavior of the parsing of "X.Y" values
to not set the "section" variable when rendering a known sub-topic.
Previously, "section" would be the same as the sub-topic name. This
required the sub-topic RST to have a section named the same as the
sub-topic name.
When I made this change, the descriptions from help.internalstable
started being rendered in command line output. This didn't look correct
to me, as it didn't match the formatting of main help pages. I
corrected this by moving the top section to help.internalstable and
changing the section levels of all the "internals" topics.
The end result is that "internals" topics now match the rendering of
main topics on both the CLI and HTML. And, "internals" topics no longer
require a main section matching the name of the topic.
--- a/mercurial/commands.py Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/commands.py Sat Aug 06 17:04:22 2016 -0700
@@ -4593,12 +4593,15 @@
section = None
subtopic = None
if name and '.' in name:
- name, section = name.split('.', 1)
- section = encoding.lower(section)
- if '.' in section:
- subtopic, section = section.split('.', 1)
+ name, remaining = name.split('.', 1)
+ remaining = encoding.lower(remaining)
+ if '.' in remaining:
+ subtopic, section = remaining.split('.', 1)
else:
- subtopic = section
+ if name in help.subtopics:
+ subtopic = remaining
+ else:
+ section = remaining
text = help.help_(ui, name, subtopic=subtopic, **opts)
--- a/mercurial/help.py Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/help.py Sat Aug 06 17:04:22 2016 -0700
@@ -184,13 +184,13 @@
return loader
internalstable = sorted([
- (['bundles'], _('container for exchange of repository data'),
+ (['bundles'], _('Bundles'),
loaddoc('bundles', subdir='internals')),
- (['changegroups'], _('representation of revlog data'),
+ (['changegroups'], _('Changegroups'),
loaddoc('changegroups', subdir='internals')),
- (['requirements'], _('repository requirements'),
+ (['requirements'], _('Repository Requirements'),
loaddoc('requirements', subdir='internals')),
- (['revlogs'], _('revision storage mechanism'),
+ (['revlogs'], _('Revision Logs'),
loaddoc('revlogs', subdir='internals')),
])
--- a/mercurial/help/internals/bundles.txt Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/help/internals/bundles.txt Sat Aug 06 17:04:22 2016 -0700
@@ -1,6 +1,3 @@
-Bundles
-=======
-
A bundle is a container for repository data.
Bundles are used as standalone files as well as the interchange format
@@ -8,7 +5,7 @@
each other.
Headers
--------
+=======
Bundles produced since Mercurial 0.7 (September 2005) have a 4 byte
header identifying the major bundle type. The header always begins with
--- a/mercurial/help/internals/changegroups.txt Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/help/internals/changegroups.txt Sat Aug 06 17:04:22 2016 -0700
@@ -1,6 +1,3 @@
-Changegroups
-============
-
Changegroups are representations of repository revlog data, specifically
the changelog, manifest, and filelogs.
@@ -35,7 +32,7 @@
call this an *empty chunk*.
Delta Groups
-------------
+============
A *delta group* expresses the content of a revlog as a series of deltas,
or patches against previous revisions.
@@ -111,21 +108,21 @@
which can result in smaller deltas and more efficient encoding of data.
Changeset Segment
------------------
+=================
The *changeset segment* consists of a single *delta group* holding
changelog data. It is followed by an *empty chunk* to denote the
boundary to the *manifests segment*.
Manifest Segment
-----------------
+================
The *manifest segment* consists of a single *delta group* holding
manifest data. It is followed by an *empty chunk* to denote the boundary
to the *filelogs segment*.
Filelogs Segment
-----------------
+================
The *filelogs* segment consists of multiple sub-segments, each
corresponding to an individual file whose data is being described::
@@ -154,4 +151,3 @@
That is, a *chunk* consisting of the filename (not terminated or padded)
followed by N chunks constituting the *delta group* for this file.
-
--- a/mercurial/help/internals/requirements.txt Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/help/internals/requirements.txt Sat Aug 06 17:04:22 2016 -0700
@@ -1,5 +1,3 @@
-Requirements
-============
Repositories contain a file (``.hg/requires``) containing a list of
features/capabilities that are *required* for clients to interface
@@ -19,7 +17,7 @@
Mercurial core distribution.
revlogv1
---------
+========
When present, revlogs are version 1 (RevlogNG). RevlogNG was introduced
in 2006. The ``revlogv1`` requirement has been enabled by default
@@ -28,7 +26,7 @@
If this requirement is not present, version 0 revlogs are assumed.
store
------
+=====
The *store* repository layout should be used.
@@ -36,7 +34,7 @@
was introduced in Mercurial 0.9.2.
fncache
--------
+=======
The *fncache* repository layout should be used.
@@ -48,7 +46,7 @@
1.1 (released December 2008).
shared
-------
+======
Denotes that the store for a repository is shared from another location
(defined by the ``.hg/sharedpath`` file).
@@ -58,7 +56,7 @@
The requirement was added in Mercurial 1.3 (released July 2009).
dotencode
----------
+=========
The *dotencode* repository layout should be used.
@@ -70,7 +68,7 @@
Mercurial 1.7 (released November 2010).
parentdelta
------------
+===========
Denotes a revlog delta encoding format that was experimental and
replaced by *generaldelta*. It should not be seen in the wild because
@@ -80,7 +78,7 @@
1.9.
generaldelta
-------------
+============
Revlogs should be created with the *generaldelta* flag enabled. The
generaldelta flag will cause deltas to be encoded against a parent
@@ -91,7 +89,7 @@
default until Mercurial 3.7 (released February 2016).
manifestv2
-----------
+==========
Denotes that version 2 of manifests are being used.
@@ -100,7 +98,7 @@
by default.
treemanifest
-------------
+============
Denotes that tree manifests are being used. Tree manifests are
one manifest per directory (as opposed to a single flat manifest).
--- a/mercurial/help/internals/revlogs.txt Fri Aug 05 15:01:16 2016 +0200
+++ b/mercurial/help/internals/revlogs.txt Sat Aug 06 17:04:22 2016 -0700
@@ -1,6 +1,3 @@
-Revlogs
-=======
-
Revision logs - or *revlogs* - are an append only data structure for
storing discrete entries, or *revisions*. They are the primary storage
mechanism of repository data.
@@ -28,7 +25,7 @@
used to mean *does not exist* or *not defined*.
File Format
------------
+===========
A revlog begins with a 32-bit big endian integer holding version info
and feature flags. This integer is shared with the first revision
@@ -77,7 +74,7 @@
below.
RevlogNG Format
----------------
+===============
RevlogNG (version 1) begins with an index describing the revisions in
the revlog. If the ``inline`` flag is set, revision data is stored inline,
@@ -129,7 +126,7 @@
and the 6 byte absolute offset field from the first revlog entry.
Delta Chains
-------------
+============
Revision data is encoded as a chain of *chunks*. Each chain begins with
the compressed original full text for that revision. Each subsequent
@@ -153,7 +150,7 @@
computed against an arbitrary revision (almost certainly a parent revision).
File Storage
-------------
+============
Revlogs logically consist of an index (metadata of entries) and
revision data. This data may be stored together in a single file or in
@@ -172,7 +169,7 @@
(possibly containing inline data) and a ``.d`` file holds the revision data.
Revision Entries
-----------------
+================
Revision entries consist of an optional 1 byte header followed by an
encoding of the revision data. The headers are as follows:
@@ -187,7 +184,7 @@
The 0x78 value is actually the first byte of the zlib header (CMF byte).
Hash Computation
-----------------
+================
The hash of the revision is stored in the index and is used both as a primary
key and for data integrity verification.
--- a/tests/test-help.t Fri Aug 05 15:01:16 2016 +0200
+++ b/tests/test-help.t Sat Aug 06 17:04:22 2016 -0700
@@ -929,16 +929,16 @@
Technical implementation topics
"""""""""""""""""""""""""""""""
- bundles container for exchange of repository data
- changegroups representation of revlog data
- requirements repository requirements
- revlogs revision storage mechanism
+ bundles Bundles
+ changegroups Changegroups
+ requirements Repository Requirements
+ revlogs Revision Logs
sub-topics can be accessed
$ hg help internals.changegroups
- Changegroups
- ============
+ Changegroups
+ """"""""""""
Changegroups are representations of repository revlog data, specifically
the changelog, manifest, and filelogs.
@@ -974,7 +974,7 @@
this an *empty chunk*.
Delta Groups
- ------------
+ ============
A *delta group* expresses the content of a revlog as a series of deltas,
or patches against previous revisions.
@@ -1050,21 +1050,21 @@
which can result in smaller deltas and more efficient encoding of data.
Changeset Segment
- -----------------
+ =================
The *changeset segment* consists of a single *delta group* holding
changelog data. It is followed by an *empty chunk* to denote the boundary
to the *manifests segment*.
Manifest Segment
- ----------------
+ ================
The *manifest segment* consists of a single *delta group* holding manifest
data. It is followed by an *empty chunk* to denote the boundary to the
*filelogs segment*.
Filelogs Segment
- ----------------
+ ================
The *filelogs* segment consists of multiple sub-segments, each
corresponding to an individual file whose data is being described:
@@ -2872,28 +2872,28 @@
bundles
</a>
</td><td>
- container for exchange of repository data
+ Bundles
</td></tr>
<tr><td>
<a href="/help/internals.changegroups">
changegroups
</a>
</td><td>
- representation of revlog data
+ Changegroups
</td></tr>
<tr><td>
<a href="/help/internals.requirements">
requirements
</a>
</td><td>
- repository requirements
+ Repository Requirements
</td></tr>
<tr><td>
<a href="/help/internals.revlogs">
revlogs
</a>
</td><td>
- revision storage mechanism
+ Revision Logs
</td></tr>
@@ -2957,8 +2957,7 @@
number or hash, or <a href="/help/revsets">revset expression</a>.</div>
</form>
<div id="doc">
- <h1>representation of revlog data</h1>
- <h2>Changegroups</h2>
+ <h1>Changegroups</h1>
<p>
Changegroups are representations of repository revlog data, specifically
the changelog, manifest, and filelogs.
@@ -3000,7 +2999,7 @@
There is a special case chunk that has 0 length ("0x00000000"). We
call this an *empty chunk*.
</p>
- <h3>Delta Groups</h3>
+ <h2>Delta Groups</h2>
<p>
A *delta group* expresses the content of a revlog as a series of deltas,
or patches against previous revisions.
@@ -3091,19 +3090,19 @@
changegroup. This allows the delta to be expressed against any parent,
which can result in smaller deltas and more efficient encoding of data.
</p>
- <h3>Changeset Segment</h3>
+ <h2>Changeset Segment</h2>
<p>
The *changeset segment* consists of a single *delta group* holding
changelog data. It is followed by an *empty chunk* to denote the
boundary to the *manifests segment*.
</p>
- <h3>Manifest Segment</h3>
+ <h2>Manifest Segment</h2>
<p>
The *manifest segment* consists of a single *delta group* holding
manifest data. It is followed by an *empty chunk* to denote the boundary
to the *filelogs segment*.
</p>
- <h3>Filelogs Segment</h3>
+ <h2>Filelogs Segment</h2>
<p>
The *filelogs* segment consists of multiple sub-segments, each
corresponding to an individual file whose data is being described: