##// END OF EJS Templates
wireprotov2: implement commands as a generator of objects...
wireprotov2: implement commands as a generator of objects Previously, wire protocol version 2 inherited version 1's model of having separate types to represent the results of different wire protocol commands. As I implemented more powerful commands in future commits, I found I was using a common pattern of returning a special type to hold a generator. This meant the command function required a closure to do most of the work. That made logic flow more difficult to follow. I also noticed that many commands were effectively a sequence of objects to be CBOR encoded. I think it makes sense to define version 2 commands as generators. This way, commands can simply emit the data structures they wish to send to the client. This eliminates the need for a closure in command functions and removes encoding from the bodies of commands. As part of this commit, the handling of response objects has been moved into the serverreactor class. This puts the reactor in the driver's seat with regards to CBOR encoding and error handling. Having error handling in the function that emits frames is particularly important because exceptions in that function can lead to things getting in a bad state: I'm fairly certain that uncaught exceptions in the frame generator were causing deadlocks. I also introduced a dedicated error type for explicit error reporting in command handlers. This will be used in subsequent commits. There's still a bit of work to be done here, especially around formalizing the error handling "protocol." I've added yet another TODO to track this so we don't forget. Test output changed because we're using generators and no longer know we are at the end of the data until we hit the end of the generator. This means we can't emit the end-of-stream flag until we've exhausted the generator. Hence the introduction of 0-sized end-of-stream frames. Differential Revision: https://phab.mercurial-scm.org/D4472

File last commit:

r39505:1a786fe0 default
r39595:07b58266 default
Show More
test-hgweb-json.t
2219 lines | 48.2 KiB | text/troff | Tads3Lexer
/ tests / test-hgweb-json.t
Gregory Szorc
templates: add a stub template for json...
r24544 #require serve
$ request() {
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 > get-with-headers.py --json localhost:$HGPORT "$1"
Gregory Szorc
templates: add a stub template for json...
r24544 > }
$ hg init test
$ cd test
$ mkdir da
$ echo foo > da/foo
$ echo foo > foo
$ hg -q ci -A -m initial
$ echo bar > foo
$ hg ci -m 'modify foo'
$ echo bar > da/foo
$ hg ci -m 'modify da/foo'
$ hg bookmark bookmark1
$ hg up default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bookmark1)
$ hg mv foo foo-new
$ hg commit -m 'move foo'
$ hg tag -m 'create tag' tag1
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 $ hg phase --public -r .
Gregory Szorc
templates: add a stub template for json...
r24544 $ echo baz > da/foo
$ hg commit -m 'another commit to da/foo'
$ hg tag -m 'create tag2' tag2
$ hg bookmark bookmark2
$ hg -q up -r 0
$ hg -q branch test-branch
$ echo branch > foo
$ hg commit -m 'create test branch'
Gregory Szorc
json: implement {changeset} template...
r24563 $ echo branch_commit_2 > foo
$ hg commit -m 'another commit in test-branch'
$ hg -q up default
$ hg merge --tool :local test-branch
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -m 'merge test-branch into default'
Gregory Szorc
templates: add a stub template for json...
r24544
$ hg log -G
Gregory Szorc
json: implement {changeset} template...
r24563 @ changeset: 9:cc725e08502a
|\ tag: tip
| | parent: 6:ceed296fe500
| | parent: 8:ed66c30e87eb
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: merge test-branch into default
| |
| o changeset: 8:ed66c30e87eb
| | branch: test-branch
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: another commit in test-branch
| |
| o changeset: 7:6ab967a8ab34
| | branch: test-branch
| | parent: 0:06e557f3edf6
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create test branch
| |
o | changeset: 6:ceed296fe500
Gregory Szorc
templates: add a stub template for json...
r24544 | | bookmark: bookmark2
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create tag2
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 5:f2890a05fea4
Gregory Szorc
templates: add a stub template for json...
r24544 | | tag: tag2
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: another commit to da/foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 4:93a8ce14f891
Gregory Szorc
templates: add a stub template for json...
r24544 | | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: create tag
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 3:78896eb0e102
Gregory Szorc
templates: add a stub template for json...
r24544 | | tag: tag1
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: move foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 2:8d7c456572ac
Gregory Szorc
templates: add a stub template for json...
r24544 | | bookmark: bookmark1
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: modify da/foo
| |
Gregory Szorc
json: implement {changeset} template...
r24563 o | changeset: 1:f8bbb9024b10
Gregory Szorc
templates: add a stub template for json...
r24544 |/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: modify foo
|
o changeset: 0:06e557f3edf6
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial
av6
tests: allow bz2 archives in test-hgweb-json.t...
r29457 $ echo '[web]' >> .hg/hgrc
David Demelier
config: rename allow_archive to allow-archive...
r38215 $ echo 'allow-archive = bz2' >> .hg/hgrc
Gregory Szorc
templates: add a stub template for json...
r24544 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E error.log
$ cat hg.pid >> $DAEMON_PIDS
(Try to keep these in roughly the order they are defined in webcommands.py)
(log is handled by filelog/ and changelog/ - ignore it)
(rawfile/ doesn't use templating - nothing to test)
file/{revision}/{path} shows file revision
Laura Médioni
templates: add support for filerevision webcommand in json style
r29381 $ request json-file/78896eb0e102/foo-new
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
Laura Médioni
templates: add support for filerevision webcommand in json style
r29381 {
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "move foo",
"lines": [
{
"line": "bar\n"
}
],
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
"path": "foo-new",
"phase": "public",
"tags": [
"tag1"
],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
file/{revision} shows root directory info
Gregory Szorc
json: implement {manifest} template...
r24589 $ request json-file/cc725e08502a
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
Gregory Szorc
json: implement {manifest} template...
r24589 {
"abspath": "/",
"bookmarks": [],
"directories": [
{
"abspath": "/da",
"basename": "da",
"emptydirs": ""
}
],
"files": [
{
"abspath": ".hgtags",
"basename": ".hgtags",
"date": [
0.0,
0
],
"flags": "",
"size": 92
},
{
"abspath": "foo-new",
"basename": "foo-new",
"date": [
0.0,
0
],
"flags": "",
"size": 4
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"tags": [
"tip"
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
changelog/ shows information about several changesets
$ request json-changelog
200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "test-branch",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"6ab967a8ab3489227a83f80e920faa039a71819f"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "test-branch",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"93a8ce14f89156426b7fa981af8042da53f03aa0"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 changelog/{revision} shows information starting at a specific changeset
Gregory Szorc
templates: add a stub template for json...
r24544
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 $ request json-changelog/f8bbb9024b10
Gregory Szorc
templates: add a stub template for json...
r24544 200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
}
],
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
}
Gregory Szorc
templates: add a stub template for json...
r24544
shortlog/ shows information about a set of changesets
$ request json-shortlog
200 Script output follows
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "test-branch",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"6ab967a8ab3489227a83f80e920faa039a71819f"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "test-branch",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"93a8ce14f89156426b7fa981af8042da53f03aa0"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "draft",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
},
{
"bookmarks": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "branch": "default",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
av6
hgweb: add parents to json-log (issue5074)...
r28709 "parents": [],
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 "phase": "public",
Gregory Szorc
json: implement {shortlog} and {changelog} templates...
r24588 "tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544
Yuya Nishihara
hgweb: show shortlog by default in json output (issue5978)
r39504 shortlog is displayed by default (issue5978)
$ request '?style=json'
200 Script output follows
{
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
"phase": "draft",
"tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"parents": [
"6ab967a8ab3489227a83f80e920faa039a71819f"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"parents": [
"93a8ce14f89156426b7fa981af8042da53f03aa0"
],
"phase": "draft",
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
"phase": "public",
"tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"parents": [],
"phase": "public",
"tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544 changeset/ renders the tip changeset
$ request json-rev
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "draft",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [
"tip"
],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows tags
$ request json-rev/78896eb0e102
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "public",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [
"tag1"
],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows bookmarks
$ request json-rev/8d7c456572ac
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [
"bookmark1"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "public",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
changeset/{revision} shows branches
$ request json-rev/6ab967a8ab34
200 Script output follows
Gregory Szorc
json: implement {changeset} template...
r24563 {
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
Gregory Szorc
hgweb: add phase to {changeset} template...
r24564 "phase": "draft",
Gregory Szorc
json: implement {changeset} template...
r24563 "tags": [],
"user": "test"
}
Gregory Szorc
templates: add a stub template for json...
r24544
manifest/{revision}/{path} shows info about a directory at a revision
$ request json-manifest/06e557f3edf6/
200 Script output follows
Gregory Szorc
json: implement {manifest} template...
r24589 {
"abspath": "/",
"bookmarks": [],
"directories": [
{
"abspath": "/da",
"basename": "da",
"emptydirs": ""
}
],
"files": [
{
"abspath": "foo",
"basename": "foo",
"date": [
0.0,
0
],
"flags": "",
"size": 4
}
],
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"tags": []
}
Gregory Szorc
templates: add a stub template for json...
r24544
tags/ shows tags info
$ request json-tags
200 Script output follows
Gregory Szorc
json: implement {tags} template...
r24545 {
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
Gregory Szorc
json: implement {tags} template...
r24545 "tags": [
{
"date": [
0.0,
0
],
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"tag": "tag2"
},
{
"date": [
0.0,
0
],
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"tag": "tag1"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
bookmarks/ shows bookmarks info
$ request json-bookmarks
200 Script output follows
Gregory Szorc
json: implement {bookmarks} template
r24546 {
"bookmarks": [
{
av6
hgweb: sort bookmarks in revlog order of their nodes...
r28711 "bookmark": "bookmark2",
"date": [
0.0,
0
],
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
},
{
Gregory Szorc
json: implement {bookmarks} template
r24546 "bookmark": "bookmark1",
"date": [
0.0,
0
],
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
}
],
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
Gregory Szorc
json: implement {bookmarks} template
r24546 }
Gregory Szorc
templates: add a stub template for json...
r24544
branches/ shows branches info
$ request json-branches
200 Script output follows
Gregory Szorc
json: implement {branches} template
r24547 {
"branches": [
{
Gregory Szorc
json: implement {changeset} template...
r24563 "branch": "default",
"date": [
0.0,
0
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"status": "open"
},
{
Gregory Szorc
json: implement {branches} template
r24547 "branch": "test-branch",
"date": [
0.0,
0
],
Gregory Szorc
json: implement {changeset} template...
r24563 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"status": "inactive"
Gregory Szorc
json: implement {branches} template
r24547 }
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
summary/ shows a summary of repository state
$ request json-summary
200 Script output follows
Laura Médioni
templates: add support for summary webcommand in json style...
r29382 {
av6
tests: allow bz2 archives in test-hgweb-json.t...
r29457 "archives": [
{
"extension": ".tar.bz2",
"node": "tip",
av6
hgweb: add absolute urls for archives in json-summary
r29458 "type": "bz2",
"url": "http://*:$HGPORT/archive/tip.tar.bz2" (glob)
av6
tests: allow bz2 archives in test-hgweb-json.t...
r29457 }
],
Laura Médioni
templates: add support for summary webcommand in json style...
r29382 "bookmarks": [
{
"bookmark": "bookmark2",
"date": [
0.0,
0
],
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
},
{
"bookmark": "bookmark1",
"date": [
0.0,
0
],
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
}
],
"branches": [
{
"branch": "default",
"date": [
0.0,
0
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"status": "open"
},
{
"branch": "test-branch",
"date": [
0.0,
0
],
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"status": "inactive"
}
],
Gregory Szorc
hgweb: expose list of per-repo labels to templates...
r29471 "labels": [],
Laura Médioni
templates: add support for summary webcommand in json style...
r29382 "lastchange": [
0.0,
0
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"shortlog": [
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
"phase": "draft",
"tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "another commit in test-branch",
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"parents": [
"6ab967a8ab3489227a83f80e920faa039a71819f"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"parents": [
"93a8ce14f89156426b7fa981af8042da53f03aa0"
],
"phase": "draft",
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "move foo",
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
"phase": "public",
"tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"parents": [],
"phase": "public",
"tags": [],
"user": "test"
}
],
"tags": [
{
"date": [
0.0,
0
],
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"tag": "tag2"
},
{
"date": [
0.0,
0
],
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"tag": "tag1"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
Laura Médioni
templates: add support for search webcommand in json style
r29383 $ request json-changelog?rev=create
200 Script output follows
{
"entries": [
{
"bookmarks": [],
"branch": "test-branch",
"date": [
0.0,
0
],
"desc": "create test branch",
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag2",
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
"phase": "draft",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "create tag",
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
"phase": "public",
"tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"query": "create"
}
Gregory Szorc
templates: add a stub template for json...
r24544 filediff/{revision}/{path} shows changes to a file in a revision
$ request json-diff/f8bbb9024b10/foo
200 Script output follows
Gregory Szorc
json: implement {filediff} template...
r24713 {
"author": "test",
"children": [],
"date": [
0.0,
0
],
"desc": "modify foo",
"diff": [
{
"blockno": 1,
"lines": [
{
"l": "--- a/foo\tThu Jan 01 00:00:00 1970 +0000\n",
"n": 1,
"t": "-"
},
{
"l": "+++ b/foo\tThu Jan 01 00:00:00 1970 +0000\n",
"n": 2,
"t": "+"
},
{
"l": "@@ -1,1 +1,1 @@\n",
"n": 3,
"t": "@"
},
{
"l": "-foo\n",
"n": 4,
"t": "-"
},
{
"l": "+bar\n",
"n": 5,
"t": "+"
}
]
}
],
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"path": "foo"
}
Gregory Szorc
templates: add a stub template for json...
r24544
comparison/{revision}/{path} shows information about before and after for a file
$ request json-comparison/f8bbb9024b10/foo
200 Script output follows
Gregory Szorc
json: implement {comparison} template...
r24714 {
"author": "test",
"children": [],
"comparison": [
{
"lines": [
{
"ll": "foo",
"ln": 1,
"rl": "bar",
"rn": 1,
"t": "replace"
}
]
}
],
"date": [
0.0,
0
],
"desc": "modify foo",
"leftnode": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"path": "foo",
"rightnode": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
}
Gregory Szorc
templates: add a stub template for json...
r24544
annotate/{revision}/{path} shows annotations for each line
$ request json-annotate/f8bbb9024b10/foo
200 Script output follows
Gregory Szorc
json: implement {fileannotate} template
r24715 {
"abspath": "foo",
"annotate": [
{
"abspath": "foo",
"author": "test",
"desc": "modify foo",
"line": "bar\n",
"lineno": 1,
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"revdate": [
0.0,
0
],
"targetline": 1
}
],
"author": "test",
"children": [],
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"permissions": ""
}
Gregory Szorc
templates: add a stub template for json...
r24544
filelog/{revision}/{path} shows history of a single file
$ request json-filelog/f8bbb9024b10/foo
200 Script output follows
Laura Médioni
templates: add support for filelog webcommand in json style...
r29380 {
"entries": [
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify foo",
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"parents": [],
"phase": "public",
"tags": [],
"user": "test"
}
]
}
$ request json-filelog/cc725e08502a/da/foo
200 Script output follows
{
"entries": [
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
"phase": "draft",
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"branch": "default",
"date": [
0.0,
0
],
"desc": "modify da/foo",
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "public",
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"date": [
0.0,
0
],
"desc": "initial",
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"parents": [],
"phase": "public",
"tags": [],
"user": "test"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
(archive/ doesn't use templating, so ignore it)
(static/ doesn't use templating, so ignore it)
graph/ shows information that can be used to render a graph of the DAG
$ request json-graph
200 Script output follows
av6
hgweb: implement json-graph...
r35390 {
"changeset_count": 10,
"changesets": [
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "merge test-branch into default",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 1,
"width": -1
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
"parents": [
"ceed296fe500c3fac9541e31dad860cb49c89e45",
"ed66c30e87eb65337c05a4229efaa5f1d5285a90"
],
"phase": "draft",
"row": 0,
"tags": [
"tip"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"col": 1,
"color": 2,
"date": [
0.0,
0
],
"desc": "another commit in test-branch",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
"parents": [
"6ab967a8ab3489227a83f80e920faa039a71819f"
],
"phase": "draft",
"row": 1,
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "test-branch",
"col": 1,
"color": 2,
"date": [
0.0,
0
],
"desc": "create test branch",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "6ab967a8ab3489227a83f80e920faa039a71819f",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "draft",
"row": 2,
"tags": [],
"user": "test"
},
{
"bookmarks": [
"bookmark2"
],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "create tag2",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
"parents": [
"f2890a05fea49bfaf9fb27ed5490894eba32da78"
],
"phase": "draft",
"row": 3,
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "another commit to da/foo",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
"parents": [
"93a8ce14f89156426b7fa981af8042da53f03aa0"
],
"phase": "draft",
"row": 4,
"tags": [
"tag2"
],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "create tag",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
"parents": [
"78896eb0e102174ce9278438a95e12543e4367a7"
],
"phase": "public",
"row": 5,
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "move foo",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "78896eb0e102174ce9278438a95e12543e4367a7",
"parents": [
"8d7c456572acf3557e8ed8a07286b10c408bcec5"
],
"phase": "public",
"row": 6,
"tags": [
"tag1"
],
"user": "test"
},
{
"bookmarks": [
"bookmark1"
],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "modify da/foo",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 1,
"width": -1
}
],
"node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
"parents": [
"f8bbb9024b10f93cdbb8d940337398291d40dea8"
],
"phase": "public",
"row": 7,
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 1,
"date": [
0.0,
0
],
"desc": "modify foo",
"edges": [
{
"bcolor": "",
"col": 0,
"color": 1,
"nextcol": 0,
"width": -1
},
{
"bcolor": "",
"col": 1,
"color": 2,
"nextcol": 0,
"width": -1
}
],
"node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
"parents": [
"06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
],
"phase": "public",
"row": 8,
"tags": [],
"user": "test"
},
{
"bookmarks": [],
"branch": "default",
"col": 0,
"color": 2,
"date": [
0.0,
0
],
"desc": "initial",
"edges": [],
"node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
"parents": [],
"phase": "public",
"row": 9,
"tags": [],
"user": "test"
}
],
"node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
}
Gregory Szorc
templates: add a stub template for json...
r24544
help/ shows help topics
$ request json-help
200 Script output follows
Gregory Szorc
json: implement {helptopics} template
r24590 {
"earlycommands": [
{
"summary": "add the specified files on the next commit",
"topic": "add"
},
{
"summary": "show changeset information by line for each file",
"topic": "annotate"
},
{
"summary": "make a copy of an existing repository",
"topic": "clone"
},
{
"summary": "commit the specified files or all outstanding changes",
"topic": "commit"
},
{
"summary": "diff repository (or selected files)",
"topic": "diff"
},
{
"summary": "dump the header and diffs for one or more changesets",
"topic": "export"
},
{
"summary": "forget the specified files on the next commit",
"topic": "forget"
},
{
"summary": "create a new repository in the given directory",
"topic": "init"
},
{
"summary": "show revision history of entire repository or files",
"topic": "log"
},
{
"summary": "merge another revision into working directory",
"topic": "merge"
},
{
"summary": "pull changes from the specified source",
"topic": "pull"
},
{
"summary": "push changes to the specified destination",
"topic": "push"
},
{
"summary": "remove the specified files on the next commit",
"topic": "remove"
},
{
"summary": "start stand-alone webserver",
"topic": "serve"
},
{
"summary": "show changed files in the working directory",
"topic": "status"
},
{
"summary": "summarize working directory state",
"topic": "summary"
},
{
"summary": "update working directory (or switch revisions)",
"topic": "update"
}
],
"othercommands": [
{
"summary": "add all new files, delete all missing files",
"topic": "addremove"
},
{
"summary": "create an unversioned archive of a repository revision",
"topic": "archive"
},
{
"summary": "reverse effect of earlier changeset",
"topic": "backout"
},
{
"summary": "subdivision search of changesets",
"topic": "bisect"
},
{
"summary": "create a new bookmark or list existing bookmarks",
"topic": "bookmarks"
},
{
"summary": "set or show the current branch name",
"topic": "branch"
},
{
"summary": "list repository named branches",
"topic": "branches"
},
{
Gregory Szorc
commands: update help for "bundle"...
r31794 "summary": "create a bundle file",
Gregory Szorc
json: implement {helptopics} template
r24590 "topic": "bundle"
},
{
"summary": "output the current or given revision of files",
"topic": "cat"
},
{
"summary": "show combined config settings from all hgrc files",
"topic": "config"
},
{
"summary": "mark files as copied for the next commit",
"topic": "copy"
},
{
"summary": "list tracked files",
"topic": "files"
},
{
"summary": "copy changes from other branches onto the current branch",
"topic": "graft"
},
{
Kevin Bullock
grep: rewrite help to better document current (confusing) behavior
r30009 "summary": "search revision history for a pattern in specified files",
Gregory Szorc
json: implement {helptopics} template
r24590 "topic": "grep"
},
{
"summary": "show branch heads",
"topic": "heads"
},
{
"summary": "show help for a given topic or a help overview",
"topic": "help"
},
{
"summary": "identify the working directory or specified revision",
"topic": "identify"
},
{
"summary": "import an ordered set of patches",
"topic": "import"
},
{
"summary": "show new changesets found in source",
"topic": "incoming"
},
{
"summary": "output the current or given revision of the project manifest",
"topic": "manifest"
},
{
"summary": "show changesets not found in the destination",
"topic": "outgoing"
},
{
"summary": "show aliases for remote repositories",
"topic": "paths"
},
{
"summary": "set or show the current phase name",
"topic": "phase"
},
{
"summary": "roll back an interrupted transaction",
"topic": "recover"
},
{
"summary": "rename files; equivalent of copy + remove",
"topic": "rename"
},
{
"summary": "redo merges or set/view the merge status of files",
"topic": "resolve"
},
{
"summary": "restore files to their checkout state",
"topic": "revert"
},
{
"summary": "print the root (top) of the current working directory",
"topic": "root"
},
{
"summary": "add one or more tags for the current or given revision",
"topic": "tag"
},
{
"summary": "list repository tags",
"topic": "tags"
},
{
Gregory Szorc
commands: update help for "unbundle"...
r31795 "summary": "apply one or more bundle files",
Gregory Szorc
json: implement {helptopics} template
r24590 "topic": "unbundle"
},
{
"summary": "verify the integrity of the repository",
"topic": "verify"
},
{
"summary": "output version and copyright information",
"topic": "version"
}
],
"topics": [
{
Gregory Szorc
help: document bundle specifications...
r31793 "summary": "Bundle File Formats",
"topic": "bundlespec"
},
{
Pierre-Yves David
color: update the help table...
r31129 "summary": "Colorizing Outputs",
"topic": "color"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "Configuration Files",
"topic": "config"
},
{
"summary": "Date Formats",
"topic": "dates"
},
{
David Demelier
help: add new deprecated topic...
r38019 "summary": "Deprecated Features",
"topic": "deprecated"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "Diff Formats",
"topic": "diffs"
},
{
"summary": "Environment Variables",
"topic": "environment"
},
{
"summary": "Using Additional Features",
"topic": "extensions"
},
{
"summary": "Specifying File Sets",
"topic": "filesets"
},
{
Rodrigo Damazio Bovendorp
help: adding a topic on flags...
r35036 "summary": "Command-line flags",
"topic": "flags"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "Glossary",
"topic": "glossary"
},
{
"summary": "Syntax for Mercurial Ignore Files",
"topic": "hgignore"
},
{
"summary": "Configuring hgweb",
"topic": "hgweb"
},
{
Gregory Szorc
help: add "internals" topic...
r27376 "summary": "Technical implementation topics",
"topic": "internals"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "Merge Tools",
"topic": "merge-tools"
},
{
Augie Fackler
pager: move most help to a new help topic and deprecate extension
r31061 "summary": "Pager Support",
"topic": "pager"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "File Name Patterns",
"topic": "patterns"
},
{
"summary": "Working with Phases",
"topic": "phases"
},
{
Martin von Zweigbergk
help: merge revsets.txt into revisions.txt...
r30769 "summary": "Specifying Revisions",
Gregory Szorc
json: implement {helptopics} template
r24590 "topic": "revisions"
},
{
Gregory Szorc
help: scripting help topic...
r25881 "summary": "Using Mercurial from scripts and automation",
"topic": "scripting"
},
{
Gregory Szorc
json: implement {helptopics} template
r24590 "summary": "Subrepositories",
"topic": "subrepos"
},
{
"summary": "Template Usage",
"topic": "templating"
},
{
"summary": "URL Paths",
"topic": "urls"
}
]
}
Gregory Szorc
templates: add a stub template for json...
r24544
help/{topic} shows an individual help topic
$ request json-help/phases
200 Script output follows
Gregory Szorc
json: implement {help} template...
r24591 {
"rawdoc": "Working with Phases\n*", (glob)
"topic": "phases"
}
av6
tests: move JSON escape test to test-hgweb-json.t...
r35149
Yuya Nishihara
hgweb: add error template to json so it won't crash
r39505 Error page shouldn't crash
$ request json-changeset/deadbeef
404 Not Found
{
"error": "unknown revision 'deadbeef'"
}
[1]
av6
tests: move JSON escape test to test-hgweb-json.t...
r35149 Commit message with Japanese Kanji 'Noh', which ends with '\x5c'
$ echo foo >> da/foo
$ HGENCODING=cp932 hg ci -m `$PYTHON -c 'print("\x94\x5c")'`
Commit message with null character
$ echo foo >> da/foo
>>> open('msg', 'wb').write('commit with null character: \0\n')
$ hg ci -l msg
$ rm msg
Stop and restart with HGENCODING=cp932
$ killdaemons.py
$ HGENCODING=cp932 hg serve -p $HGPORT -d --pid-file=hg.pid \
> -A access.log -E error.log
$ cat hg.pid >> $DAEMON_PIDS
Test json escape of multibyte characters
$ request json-filelog/tip/da/foo?revcount=2 | grep '"desc":'
"desc": "commit with null character: \u0000",
"desc": "\u80fd",