##// END OF EJS Templates
wireprotov2: define and implement "manifestdata" command...
wireprotov2: define and implement "manifestdata" command The added command can be used for obtaining manifest data. Given a manifest path and set of manifest nodes, data about manifests can be retrieved. Unlike changeset data, we wish to emit deltas to describe manifest revisions. So the command uses the relatively new API for building delta requests and emitting them. The code calls into deltaparent(), which I'm not very keen of. There's still work to be done in delta generation land so implementation details of storage (e.g. exactly one delta is stored/available) don't creep into higher levels. But we can worry about this later (there is already a TODO on imanifestorage tracking this). On the subject of parent deltas, the server assumes parent revisions exist on the receiving end. This is obviously wrong for shallow clone. I've added TODOs to add a mechanism to the command to allow clients to specify desired behavior. This shouldn't be too difficult to implement. Another big change is that the client must explicitly request manifest nodes to retrieve. This is a major departure from "getbundle," where the server derives relevant manifests as it iterates changesets and sends them automatically. As implemented, the client must transmit each requested node to the server. At 20 bytes per node, we're looking at 2 MB per 100,000 nodes. Plus wire encoding overhead. This isn't ideal for clients with limited upload bandwidth. I plan to address this in the future by allowing alternate mechanisms for defining the revisions to retrieve. One idea is to define a range of changeset revisions whose manifest revisions to retrieve (similar to how "changesetdata" works). We almost certainly want an API to look up an individual manifest by node. And that's where I've chosen to start with the implementation. Again, a theme of this early exchangev2 work is I want to start by building primitives for accessing raw repository data first and see how far we can get with those before we need more complexity. Differential Revision: https://phab.mercurial-scm.org/D4488

File last commit:

r36787:3fff6f30 default
r39673:c7a7c7e8 default
Show More
test-releasenotes-parsing.t
202 lines | 4.4 KiB | text/troff | Tads3Lexer
/ tests / test-releasenotes-parsing.t
#require fuzzywuzzy
$ cat >> $HGRCPATH << EOF
> [extensions]
> releasenotes=
> EOF
Bullet point with a single item spanning a single line
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * Bullet point item with a single line
> EOF
section: feature
bullet point:
paragraph: Bullet point item with a single line
Bullet point that spans multiple lines.
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * Bullet point with a paragraph
> that spans multiple lines.
> EOF
section: feature
bullet point:
paragraph: Bullet point with a paragraph that spans multiple lines.
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * Bullet point with a paragraph
> that spans multiple lines.
>
> And has an empty line between lines too.
> With a line cuddling that.
> EOF
section: feature
bullet point:
paragraph: Bullet point with a paragraph that spans multiple lines.
paragraph: And has an empty line between lines too. With a line cuddling that.
Multiple bullet points. With some entries being multiple lines.
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * First bullet point. It has a single line.
>
> * Second bullet point.
> It consists of multiple lines.
>
> * Third bullet point. It has a single line.
> EOF
section: feature
bullet point:
paragraph: First bullet point. It has a single line.
bullet point:
paragraph: Second bullet point. It consists of multiple lines.
bullet point:
paragraph: Third bullet point. It has a single line.
Bullet point without newline between items
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * First bullet point
> * Second bullet point
> And it has multiple lines
> * Third bullet point
> * Fourth bullet point
> EOF
section: feature
bullet point:
paragraph: First bullet point
bullet point:
paragraph: Second bullet point And it has multiple lines
bullet point:
paragraph: Third bullet point
bullet point:
paragraph: Fourth bullet point
Sub-section contents are read
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> First Feature
> -------------
>
> This is the first new feature that was implemented.
>
> And a second paragraph about it.
>
> Second Feature
> --------------
>
> This is the second new feature that was implemented.
>
> Paragraph two.
>
> Paragraph three.
> EOF
section: feature
subsection: First Feature
paragraph: This is the first new feature that was implemented.
paragraph: And a second paragraph about it.
subsection: Second Feature
paragraph: This is the second new feature that was implemented.
paragraph: Paragraph two.
paragraph: Paragraph three.
Multiple sections are read
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> * Feature 1
> * Feature 2
>
> Bug Fixes
> =========
>
> * Fix 1
> * Fix 2
> EOF
section: feature
bullet point:
paragraph: Feature 1
bullet point:
paragraph: Feature 2
section: fix
bullet point:
paragraph: Fix 1
bullet point:
paragraph: Fix 2
Mixed sub-sections and bullet list
$ hg debugparsereleasenotes - << EOF
> New Features
> ============
>
> Feature 1
> ---------
>
> Some words about the first feature.
>
> Feature 2
> ---------
>
> Some words about the second feature.
> That span multiple lines.
>
> Other Changes
> -------------
>
> * Bullet item 1
> * Bullet item 2
> EOF
section: feature
subsection: Feature 1
paragraph: Some words about the first feature.
subsection: Feature 2
paragraph: Some words about the second feature. That span multiple lines.
bullet point:
paragraph: Bullet item 1
bullet point:
paragraph: Bullet item 2
Warn user in case of unexpected block while parsing
$ hg init relnotes-warn
$ cd relnotes-warn
$ touch feature1
$ hg -q commit -A -l - << EOF
> commit 1
>
> .. feature::
>
> new feature added.
> some words about the feature.
> EOF
$ hg releasenote -r .
changeset a4251905c440: unexpected block in release notes directive feature
New Features
============
* new feature added. some words about the feature.
$ cd ..