annotate tests/test-excessive-merge.t @ 24545:9e0c67e84896

json: implement {tags} template Tags is pretty easy to implement. Let's start there. The output is slightly different from `hg tags -Tjson`. For reference, the CLI has the following output: [ { "node": "e2049974f9a23176c2addb61d8f5b86e0d620490", "rev": 29880, "tag": "tip", "type": "" }, ... ] Our output has the format: { "node": "0aeb19ea57a6d223bacddda3871cb78f24b06510", "tags": [ { "node": "e2049974f9a23176c2addb61d8f5b86e0d620490", "tag": "tag1", "date": [1427775457.0, 25200] }, ... ] } "rev" is omitted because it isn't a reliable identifier. We shouldn't be exposing them in web APIs and giving the impression it remotely resembles a stable identifier. Perhaps we could one day hide this behind a config option (it might be useful to expose when running servers locally). The "type" of the tag isn't defined because this information isn't yet exposed to the hgweb templater (it could be in a follow-up) and because it is questionable whether different types should be exposed at all. (Should the web interface really be exposing "local" tags?) We use an object for the outer type instead of Array for a few reasons. First, it is extensible. If we ever need to throw more global properties into the output, we can do that without breaking backwards compatibility (property additions should be backwards compatible). Second, uniformity in web APIs is nice. Having everything return objects seems much saner than a mix of array and object. Third, there are security issues with arrays in older browsers. The JSON web services world almost never uses arrays as the main type for this reason. Another possibly controversial part about this patch is how dates are defined. While JSON has a Date type, it is based on the JavaScript Date type, which is widely considered a pile of garbage. It is a non-starter for this reason. Many of Mercurial's built-in date filters drop seconds resolution. So that's a non-starter as well, since we want the API to be lossless where possible. rfc3339date, rfc822date, isodatesec, and date are all lossless. However, they each require the client to perform string parsing on top of JSON decoding. While date parsing libraries are pretty ubiquitous, some languages don't have them out of the box. However, pretty much every programming language can deal with UNIX timestamps (which are just integers or floats). So, we choose to use Mercurial's internal date representation, which in JSON is modeled as float seconds since UNIX epoch and an integer timezone offset from UTC (keep in mind JavaScript/JSON models all "Numbers" as double prevision floating point numbers, so there isn't a difference between ints and floats in JSON).
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 31 Mar 2015 14:52:21 -0700
parents b87acfda5268
children b7a966ce89ed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
1 $ hg init
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
2
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
3 $ echo foo > a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
4 $ echo foo > b
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
5 $ hg add a b
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
6
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
7 $ hg ci -m "test"
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
8
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
9 $ echo blah > a
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
10
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
11 $ hg ci -m "branch a"
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
12
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
13 $ hg co 0
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
14 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
15
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
16 $ echo blah > b
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
17
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
18 $ hg ci -m "branch b"
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
19 created new head
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
20 $ HGMERGE=true hg merge 1
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
21 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
22 (branch merge, don't forget to commit)
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
23
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
24 $ hg ci -m "merge b/a -> blah"
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
25
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
26 $ hg co 1
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
28 $ HGMERGE=true hg merge 2
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
29 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
30 (branch merge, don't forget to commit)
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
31 $ hg ci -m "merge a/b -> blah"
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
32 created new head
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
33
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
34 $ hg log
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
35 changeset: 4:2ee31f665a86
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
36 tag: tip
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
37 parent: 1:96155394af80
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
38 parent: 2:92cc4c306b19
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
39 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
40 date: Thu Jan 01 00:00:00 1970 +0000
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
41 summary: merge a/b -> blah
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
42
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
43 changeset: 3:e16a66a37edd
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
44 parent: 2:92cc4c306b19
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
45 parent: 1:96155394af80
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
46 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
47 date: Thu Jan 01 00:00:00 1970 +0000
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
48 summary: merge b/a -> blah
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
49
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
50 changeset: 2:92cc4c306b19
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
51 parent: 0:5e0375449e74
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
52 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
53 date: Thu Jan 01 00:00:00 1970 +0000
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
54 summary: branch b
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
55
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
56 changeset: 1:96155394af80
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
57 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
58 date: Thu Jan 01 00:00:00 1970 +0000
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
59 summary: branch a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
60
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
61 changeset: 0:5e0375449e74
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
62 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11974
diff changeset
63 date: Thu Jan 01 00:00:00 1970 +0000
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
64 summary: test
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
65
14323
a79fea6b3e77 debugindex etc.: add --changelog and --manifest options
Sune Foldager <cryo@cyanite.org>
parents: 14182
diff changeset
66 $ hg debugindex --changelog
17132
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
67 rev offset length ..... linkrev nodeid p1 p2 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
68 0 0 60 ..... 0 5e0375449e74 000000000000 000000000000 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
69 1 60 62 ..... 1 96155394af80 5e0375449e74 000000000000 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
70 2 122 62 ..... 2 92cc4c306b19 5e0375449e74 000000000000 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
71 3 184 69 ..... 3 e16a66a37edd 92cc4c306b19 96155394af80 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
72 4 253 29 ..... 4 2ee31f665a86 96155394af80 92cc4c306b19 (re)
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
73
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
74 revision 1
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
75 $ hg manifest --debug 1
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
76 79d7492df40aa0fa093ec4209be78043c181f094 644 a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
77 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 b
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
78 revision 2
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
79 $ hg manifest --debug 2
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
80 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
81 79d7492df40aa0fa093ec4209be78043c181f094 644 b
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
82 revision 3
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
83 $ hg manifest --debug 3
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
84 79d7492df40aa0fa093ec4209be78043c181f094 644 a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
85 79d7492df40aa0fa093ec4209be78043c181f094 644 b
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
86 revision 4
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
87 $ hg manifest --debug 4
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
88 79d7492df40aa0fa093ec4209be78043c181f094 644 a
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
89 79d7492df40aa0fa093ec4209be78043c181f094 644 b
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
90
14182
ec5886db9dc6 tests: fix deprecated use of hg debugdata/debugindex
Sune Foldager <cryo@cyanite.org>
parents: 12156
diff changeset
91 $ hg debugindex a
17132
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
92 rev offset length ..... linkrev nodeid p1 p2 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
93 0 0 5 ..... 0 2ed2a3912a0b 000000000000 000000000000 (re)
b87acfda5268 tests: reduce spurious failures when run with generaldelta
Bryan O'Sullivan <bryano@fb.com>
parents: 14323
diff changeset
94 1 5 6 ..... 1 79d7492df40a 2ed2a3912a0b 000000000000 (re)
1716
ef8cd889a78b Refactor excessive merge detection, add test
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
95
11974
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
96 $ hg verify
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
97 checking changesets
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
98 checking manifests
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
99 crosschecking files in changesets and manifests
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
100 checking files
ccd581c66284 tests: unify test-excessive-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 3853
diff changeset
101 2 files, 5 changesets, 4 total revisions