Show More
@@ -0,0 +1,90 b'' | |||||
|
1 | = Mercurial 6.5 = | |||
|
2 | ||||
|
3 | As usual, a lot of patches don't make it to this list since they're more internal. | |||
|
4 | ||||
|
5 | == New Features == | |||
|
6 | ||||
|
7 | * Improved Python 3.12 compatiblity | |||
|
8 | * configitems: enable changegroup3 by default (unless using infinitepush) | |||
|
9 | * extras: expose 'retained_extras' for extensions to extend | |||
|
10 | * stabletailgraph: implement stable-tail sort | |||
|
11 | * stabletailgraph: naive version of leap computation | |||
|
12 | * bundle: introduce a "v3" spec | |||
|
13 | * clone-bundles: add a basic first version of automatic bundle generation | |||
|
14 | * clone-bundles: garbage collect older bundle when generating new ones | |||
|
15 | * clone-bundles: only regenerate the clone bundle when cached ration is low | |||
|
16 | * clone-bundles: also control automation based on absolute number of revisions | |||
|
17 | * clone-bundles: add a configuration to control auto-generation on changes | |||
|
18 | * clone-bundles: introduce a command to refresh bundle | |||
|
19 | * clone-bundles: add a command to clear all bundles | |||
|
20 | * clone-bundles: add an option to generate bundles in the background | |||
|
21 | * clonebundles: add support for inline (streaming) clonebundles | |||
|
22 | * clonebundles: adds a auto-generate.serve-inline option | |||
|
23 | * match: add `filepath:` pattern to match an exact filepath relative to the root | |||
|
24 | * hgweb: add "children" into the JSON template for a changeset | |||
|
25 | * hgweb: add support to explicitly access hidden changesets | |||
|
26 | * pull: add --remote-hidden option and pass it through peer creation | |||
|
27 | * hidden: add support for --remote-hidden to HTTP peer | |||
|
28 | * hidden: support passing --hidden with `serve --stdio` | |||
|
29 | * hidden: add support to explicitly access hidden changesets with SSH peers | |||
|
30 | * perf: introduce a `perf::stream-locked-section` command | |||
|
31 | * perf: add a function to find a stream version generator | |||
|
32 | * perf: add support for stream-v3 during benchmark | |||
|
33 | * perf: add a perf::stream-generate command | |||
|
34 | * perf: add a perf::stream-consume | |||
|
35 | * cli: make debugnodemap capable of inspecting an arbitrary nodemap | |||
|
36 | * rust: configure MSRV in Clippy | |||
|
37 | * rhg: make `rhg files` work if `ui.relative-files=true` is specified | |||
|
38 | * rhg: support `rhg files` with `ui.relative-paths=false` | |||
|
39 | * rhg: support `status --print0` | |||
|
40 | * tree-manifest: allow `debugupgraderepo` to run on tree manifest repo | |||
|
41 | * library: enable runpy invocation on mercurial package | |||
|
42 | * library: incorporate demandimport into runpy invocation | |||
|
43 | * exchange: allow passing no includes/excludes to `pull()` | |||
|
44 | ||||
|
45 | == New Experimental Features == | |||
|
46 | ||||
|
47 | * stream-clone: add an experimental v3 version of the protocol | |||
|
48 | * stream-clone: support streamv3 on the cli [hg bundle] | |||
|
49 | ||||
|
50 | == Bug Fixes == | |||
|
51 | ||||
|
52 | * mail: add a missing argument to properly override starttls | |||
|
53 | * bundle: include required phases when saving a bundle (issue6794) | |||
|
54 | * outgoing: fix common-heads computation from `missingroots` argument | |||
|
55 | * strip: do not include internal changeset in the strip backup | |||
|
56 | * bundle: abort if the user request bundling of internal changesets | |||
|
57 | * bundle: prevent implicit bundling of internal changeset | |||
|
58 | * encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings | |||
|
59 | * sha1dc: Make sure SHA1DC_BIGENDIAN is set on Darwin/PowerPC | |||
|
60 | * zstd: hack include order to ensure that our zstd.h is found | |||
|
61 | * dirstate: better error messages when dirstate is corrupted | |||
|
62 | * stream-clone: avoid opening a revlog in case we do not need it | |||
|
63 | * treemanifest: make `updatecaches` update the nodemaps for all directories | |||
|
64 | * rust-hg-core: move from `ouroboros` to `self_cell` | |||
|
65 | * rust-dependencies: switch from `users` to `whoami` | |||
|
66 | * dirstate-v2: actually fix the dirstate-v2 upgrade race | |||
|
67 | * dirstate: avoid leaking disk space in `hg debugrebuilddirstate` | |||
|
68 | * clonebundles: add warning if auto-generate is enabled without formats | |||
|
69 | * win32mbcs: unbyteify some strings for py3 support | |||
|
70 | * rust-revlog: fix incorrect results with NULL_NODE prefixes | |||
|
71 | * rust-revlog: fix RevlogEntry.data() for NULL_REVISION | |||
|
72 | ||||
|
73 | == Backwards Compatibility Changes == | |||
|
74 | ||||
|
75 | * infinitepush: aggressively deprecated infinite push | |||
|
76 | * narrow: indicated the default of 'Yes' when confirming auto-remove-includes | |||
|
77 | ||||
|
78 | == Internal API Changes == | |||
|
79 | ||||
|
80 | * Store walk was reworked to fix small race conditions in stream-clone and | |||
|
81 | greatly improve its API robustness and flexibility. | |||
|
82 | ||||
|
83 | == Miscellaneous == | |||
|
84 | ||||
|
85 | * Typechecking support was improved in a lot of places | |||
|
86 | * Removed more useless compat code for now unsupported Python versions | |||
|
87 | * Sped up zstd usage in Rust contexts | |||
|
88 | * revlog: add an exception hint when processing LFS flags without the extension | |||
|
89 | * ui: keep the progress bar around when writing if stdout is not a tty | |||
|
90 | * transaction: use a ".bck" extension for all backup file |
@@ -0,0 +1,39 b'' | |||||
|
1 | #require rust | |||
|
2 | ||||
|
3 | $ cat >> $HGRCPATH << EOF | |||
|
4 | > [format] | |||
|
5 | > use-dirstate-v2=1 | |||
|
6 | > [storage] | |||
|
7 | > dirstate-v2.slow-path=allow | |||
|
8 | > EOF | |||
|
9 | ||||
|
10 | $ hg init t | |||
|
11 | $ cd t | |||
|
12 | ||||
|
13 | $ for i in 1 2 3 4 5 6 7 8 9 10; do touch foobar$i; done | |||
|
14 | $ hg add . | |||
|
15 | adding foobar1 | |||
|
16 | adding foobar10 | |||
|
17 | adding foobar2 | |||
|
18 | adding foobar3 | |||
|
19 | adding foobar4 | |||
|
20 | adding foobar5 | |||
|
21 | adding foobar6 | |||
|
22 | adding foobar7 | |||
|
23 | adding foobar8 | |||
|
24 | adding foobar9 | |||
|
25 | $ hg commit -m "1" | |||
|
26 | ||||
|
27 | Check that there's no space leak on debugrebuilddirstate | |||
|
28 | ||||
|
29 | $ f --size .hg/dirstate* | |||
|
30 | .hg/dirstate: size=133 | |||
|
31 | .hg/dirstate.b870a51b: size=511 | |||
|
32 | $ hg debugrebuilddirstate | |||
|
33 | $ f --size .hg/dirstate* | |||
|
34 | .hg/dirstate: size=133 | |||
|
35 | .hg/dirstate.88698448: size=511 | |||
|
36 | $ hg debugrebuilddirstate | |||
|
37 | $ f --size .hg/dirstate* | |||
|
38 | .hg/dirstate: size=133 | |||
|
39 | .hg/dirstate.6b8ab34b: size=511 |
@@ -246,3 +246,5 b' f952be90b0514a576dcc8bbe758ce3847faba9bb' | |||||
246 | fc445f8abcf90b33db7c463816a1b3560681767f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmRTok8ZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVpZ5DACBv33k//ovzSbyH5/q+Xhk3TqNRY8IDOjoEhvDyu0bJHsvygOGXLUtHpQPth1RA4/c+AVNJrUeFvT02sLqqP2d9oSA9HEAYpOuzwgr1A+1o+Q2GyfD4cElP6KfiEe8oyFVOB0rfBgWNei1C0nnrhChQr5dOPR63uAFhHzkEsgsTFS7ONxZ1DHbe7gRV8OMMf1MatAtRzRexQJCqyNv7WodQdrKtjHqPKtlWl20dbwTHhzeiZbtjiTe0CVXVsOqnA1DQkO/IaiKQrn3zWdGY5ABbqQ1K0ceLcej4NFOeLo9ZrShndU3BuFUa9Dq9bnPYOI9wMqGoDh/GdTZkZEzBy5PTokY3AJHblbub49pi8YTenFcPdtd/v71AaNi3TKa45ZNhYVkPmRETYweHkLs3CIrSyeiBwU4RGuQZVD/GujAQB5yhk0w+LPMzBsHruD4vsgXwIraCzQIIJTjgyxKuAJGdGNUFYyxEpUkgz5G6MFrBKe8HO69y3Pm/qDNZ2maV8k= |
|
246 | fc445f8abcf90b33db7c463816a1b3560681767f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmRTok8ZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVpZ5DACBv33k//ovzSbyH5/q+Xhk3TqNRY8IDOjoEhvDyu0bJHsvygOGXLUtHpQPth1RA4/c+AVNJrUeFvT02sLqqP2d9oSA9HEAYpOuzwgr1A+1o+Q2GyfD4cElP6KfiEe8oyFVOB0rfBgWNei1C0nnrhChQr5dOPR63uAFhHzkEsgsTFS7ONxZ1DHbe7gRV8OMMf1MatAtRzRexQJCqyNv7WodQdrKtjHqPKtlWl20dbwTHhzeiZbtjiTe0CVXVsOqnA1DQkO/IaiKQrn3zWdGY5ABbqQ1K0ceLcej4NFOeLo9ZrShndU3BuFUa9Dq9bnPYOI9wMqGoDh/GdTZkZEzBy5PTokY3AJHblbub49pi8YTenFcPdtd/v71AaNi3TKa45ZNhYVkPmRETYweHkLs3CIrSyeiBwU4RGuQZVD/GujAQB5yhk0w+LPMzBsHruD4vsgXwIraCzQIIJTjgyxKuAJGdGNUFYyxEpUkgz5G6MFrBKe8HO69y3Pm/qDNZ2maV8k= | |
247 | da372c745e0f053bb7a64e74cccd15810d96341d 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSB7WkZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVoy+C/4zwO+Wxc3wr0aEzjVqAss7FuGS5e66H+0T3WzVgKIRMqiiOmUmmiNf+XloXlX4TOwoh9j9GNEpoZfV6TSwFSqV0LALaVIRRwrkJBDhnqw4eNBZbK5aBWNa2/21dkHecxF4KG3ai9kLwy2mtHxkDIy8T2LPvdx8pfNcYT4PZ19x2itqZLouBJqiZYehsqeMLNF2vRqkq+rQ+D2sFGLljgPo0JlpkOZ4IL7S/cqTOBG1sQ6KJK+hAE1kF1lhvK796VhKKXVnWVgqJLyg7ZI6168gxeFv5cyCtb+FUXJJ/5SOkxaCKJf3mg3DIYi3G7xjwB5CfUGW8A2qexgEjXeV42Mu7/Mkmn/aeTdL0UcRK3oBVHJwqt/fJlGFqVWt4/9g9KW5mJvTDQYBo/zjLyvKFEbnSLzhEP+9SvthCrtX0UYkKxOGi2M2Z7e9wgBB0gY8a36kA739lkNu6r3vH/FVh0aPTMWukLToELS90WgfViNr16lDnCeDjMgg97OKxWdOW6U= |
|
247 | da372c745e0f053bb7a64e74cccd15810d96341d 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSB7WkZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVoy+C/4zwO+Wxc3wr0aEzjVqAss7FuGS5e66H+0T3WzVgKIRMqiiOmUmmiNf+XloXlX4TOwoh9j9GNEpoZfV6TSwFSqV0LALaVIRRwrkJBDhnqw4eNBZbK5aBWNa2/21dkHecxF4KG3ai9kLwy2mtHxkDIy8T2LPvdx8pfNcYT4PZ19x2itqZLouBJqiZYehsqeMLNF2vRqkq+rQ+D2sFGLljgPo0JlpkOZ4IL7S/cqTOBG1sQ6KJK+hAE1kF1lhvK796VhKKXVnWVgqJLyg7ZI6168gxeFv5cyCtb+FUXJJ/5SOkxaCKJf3mg3DIYi3G7xjwB5CfUGW8A2qexgEjXeV42Mu7/Mkmn/aeTdL0UcRK3oBVHJwqt/fJlGFqVWt4/9g9KW5mJvTDQYBo/zjLyvKFEbnSLzhEP+9SvthCrtX0UYkKxOGi2M2Z7e9wgBB0gY8a36kA739lkNu6r3vH/FVh0aPTMWukLToELS90WgfViNr16lDnCeDjMgg97OKxWdOW6U= | |
248 | 271a4ab29605ffa0bae5d3208eaa21a95427ff92 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSUEeMZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVlJnC/98qGmpi0gHbsoCPfoxgV2uSE4XAXZXPvbHqKAVUVJbkQoS0L2jighUArPZsduRjD+nSf/jO951/DmnxIwXfF5qA2dP1eBnjSmXS3xslmqD7nUw+pP8mKUQvXky+AbiL5onWw4gRtsqTZg4DYnPMeaE/eIUy/j60kXsf6gaDkQSAF/+9vB5UcVI1z7gKY/nE5pGW6cS9kPd/BEg2icficaOHXcetQFi53Gcy5kLEaYc9f8RUrvc0Z9jDkZSlmTHfTLOY+1hlFZ2FRAvL1Ikh7Ks+85LWuqs1ZYIdB6ucudhLW1dGd/ZyD0iU82e0XrU/tm6oDBdeSFOy1AAXN5pern18VcPeaT/zGgN7DG1LW9jISbYFzLwvHwzTMKSVgq4HSfeTHiSKoWp0qAbcFHUYfC4L1Heqd/UfzVN/1/9eSj69Hbjff8+E6OOF15Ky2gtr8PSyP7WIu9rTueUUoWIMG99btq5OYvEbmWgHuHIcJBUEJOalvhrZePbTW3v22Eh45M= |
|
248 | 271a4ab29605ffa0bae5d3208eaa21a95427ff92 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSUEeMZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVlJnC/98qGmpi0gHbsoCPfoxgV2uSE4XAXZXPvbHqKAVUVJbkQoS0L2jighUArPZsduRjD+nSf/jO951/DmnxIwXfF5qA2dP1eBnjSmXS3xslmqD7nUw+pP8mKUQvXky+AbiL5onWw4gRtsqTZg4DYnPMeaE/eIUy/j60kXsf6gaDkQSAF/+9vB5UcVI1z7gKY/nE5pGW6cS9kPd/BEg2icficaOHXcetQFi53Gcy5kLEaYc9f8RUrvc0Z9jDkZSlmTHfTLOY+1hlFZ2FRAvL1Ikh7Ks+85LWuqs1ZYIdB6ucudhLW1dGd/ZyD0iU82e0XrU/tm6oDBdeSFOy1AAXN5pern18VcPeaT/zGgN7DG1LW9jISbYFzLwvHwzTMKSVgq4HSfeTHiSKoWp0qAbcFHUYfC4L1Heqd/UfzVN/1/9eSj69Hbjff8+E6OOF15Ky2gtr8PSyP7WIu9rTueUUoWIMG99btq5OYvEbmWgHuHIcJBUEJOalvhrZePbTW3v22Eh45M= | |
|
249 | bb42988c7e156931b0ff1e93732b98173ebbcb7f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSUPXUZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVvYTC/wP7f8RITHgCO8djHUsnRs60P2mlEJQ71TDA3dqgdBIr3tWMELfcZMZnOTtaw4eqKemLauxa69MHgj2y++VMnfJx1pW5G61G8ZFfLjwFvAqqmXnnT6RVjo7sPuKSkL28C9NWwrLIRk5SGWK52W56Slz0bW1yhJBOV8BEIgZM5ucs4froYTxgAP8xprbLyPIroAJEtPNU3mkOXuPPGQ/zGO9czJ9sfYHU3bPmskf3YLqWAKQdCmxQgv44QluRVWoek6caIUA04mJwwlBdCCPZnr8hvaptZeYv2hhPw7CzDfWwMkyBYzmoUAZIgu/eYPtDRtxeIlEYC2WP+DQy5R+kK+X/nfxe8kVL9USow5MZZ54tmPbrwUO/dkWOWiK5NyqYnFjBDaq24XKUoPC7p7mGkfzQPNCiKcQO3qcUtiIb7tzz0olWemD2z86ws8kaEK8GSOgpBK71KOzrPZt8B01Nb+seahftCN5HxALAJSM6VRxYJFgYMFFxid+zNwEstuNipo= | |||
|
250 | 3ffc7209bbae5804a53084c9dc2d41139e88c867 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSmyeIZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVn/CC/9l24Feazay+kN3rOCvRqOOQO0Xx47+Lx5xaC4mgSAs7fkefY0ru4gnKRQkYskIksUzJX0P6aGrS3RH3y+DzxPhha75Ufq1abD8c1NJ2mUzW/DnoEI9zKnprkUdet8cwwLzNDhuWqjG6DY1ETwWpYVHo01Yv5FjDOdbMfPJ92yyF2AxLNTjkHNNfn0dpJE+/Sz8WjKsjPtTB432ZhvmfDsWgW+fTOlVATEyRqP4vNMWxPKPYif7KvH5U8vPAvX4i5Ox+csNeFQTUGV6KfgpAjXuJc2AEGr644KfpiMIyvWvEDewPAoGR+BUBz8jjT5KqBxc/9RJ8wEruCZIEKXxMAta+G+wWJyXZgKU1UN4x6mQT4RscnvX/1jMZx7zzqTSq2fe0Ddw/ta2aZtbp0JLJ5NmqiFLaKdDDdTAAONn+dBLQMO0+NNm9bOOafqI8edsOw3WoXmOVxbpdBrzIP5x18qNRU9gcTxxPqN5yy97dhsKyRpdbMVruxp1NUWeTBywARI= |
@@ -262,3 +262,5 b' f952be90b0514a576dcc8bbe758ce3847faba9bb' | |||||
262 | fc445f8abcf90b33db7c463816a1b3560681767f 6.4.3 |
|
262 | fc445f8abcf90b33db7c463816a1b3560681767f 6.4.3 | |
263 | da372c745e0f053bb7a64e74cccd15810d96341d 6.4.4 |
|
263 | da372c745e0f053bb7a64e74cccd15810d96341d 6.4.4 | |
264 | 271a4ab29605ffa0bae5d3208eaa21a95427ff92 6.4.5 |
|
264 | 271a4ab29605ffa0bae5d3208eaa21a95427ff92 6.4.5 | |
|
265 | bb42988c7e156931b0ff1e93732b98173ebbcb7f 6.5rc0 | |||
|
266 | 3ffc7209bbae5804a53084c9dc2d41139e88c867 6.5 |
@@ -146,10 +146,8 b' testpats = [' | |||||
146 | r'\[[^\]]+==', |
|
146 | r'\[[^\]]+==', | |
147 | '[ foo == bar ] is a bashism, use [ foo = bar ] instead', |
|
147 | '[ foo == bar ] is a bashism, use [ foo = bar ] instead', | |
148 | ), |
|
148 | ), | |
149 | ( |
|
149 | (r'(^|\|\s*)egrep', "use grep -E for extended grep syntax"), | |
150 | r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w', |
|
150 | (r'(^|\|\s*)fgrep', "use grep -F for fixed string grepping"), | |
151 | "use egrep for extended grep syntax", |
|
|||
152 | ), |
|
|||
153 | (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"), |
|
151 | (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"), | |
154 | (r'(?<!!)/bin/', "don't use explicit paths for tools"), |
|
152 | (r'(?<!!)/bin/', "don't use explicit paths for tools"), | |
155 | (r'#!.*/bash', "don't use bash in shebang, use sh"), |
|
153 | (r'#!.*/bash', "don't use bash in shebang, use sh"), |
@@ -1,3 +1,24 b'' | |||||
|
1 | # Don't run pipelines on branch "merge", since we're fast-forward only. | |||
|
2 | # Gitlab sees a new branch (since e.g. `topic/stable/my-topic` becomes | |||
|
3 | # `branch/stable`), but the hash hasn't changed. There is no reason to | |||
|
4 | # re-run the CI in our case, since we haven't built up any specific automation. | |||
|
5 | # Right now it's just wasted CI and developer time. | |||
|
6 | # One can still run the pipeline manually via the web interface, | |||
|
7 | # like in the case of releases, to make *extra* sure that the actual branch | |||
|
8 | # has succeeded. | |||
|
9 | workflow: | |||
|
10 | rules: | |||
|
11 | - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE != "web" | |||
|
12 | when: never | |||
|
13 | - if: $CI_PIPELINE_SOURCE == "merge_request_event" | |||
|
14 | when: never | |||
|
15 | - if: $CI_PIPELINE_SOURCE == "push" | |||
|
16 | when: always | |||
|
17 | - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS | |||
|
18 | when: never | |||
|
19 | - if: $CI_COMMIT_BRANCH | |||
|
20 | when: always | |||
|
21 | ||||
1 | stages: |
|
22 | stages: | |
2 | - tests |
|
23 | - tests | |
3 |
|
24 |
@@ -9,9 +9,6 b' config = b"/path/to/repo/or/config"' | |||||
9 | # (consult "installed modules" path from 'hg debuginstall'): |
|
9 | # (consult "installed modules" path from 'hg debuginstall'): | |
10 | # import sys; sys.path.insert(0, "/path/to/python/lib") |
|
10 | # import sys; sys.path.insert(0, "/path/to/python/lib") | |
11 |
|
11 | |||
12 | # Uncomment to send python tracebacks to the browser if an error occurs: |
|
|||
13 | # import cgitb; cgitb.enable() |
|
|||
14 |
|
||||
15 | from mercurial import demandimport |
|
12 | from mercurial import demandimport | |
16 |
|
13 | |||
17 | demandimport.enable() |
|
14 | demandimport.enable() |
@@ -8,9 +8,6 b' config = b"/path/to/repo/or/config"' | |||||
8 | # (consult "installed modules" path from 'hg debuginstall'): |
|
8 | # (consult "installed modules" path from 'hg debuginstall'): | |
9 | #import sys; sys.path.insert(0, "/path/to/python/lib") |
|
9 | #import sys; sys.path.insert(0, "/path/to/python/lib") | |
10 |
|
10 | |||
11 | # Uncomment to send python tracebacks to the browser if an error occurs: |
|
|||
12 | #import cgitb; cgitb.enable() |
|
|||
13 |
|
||||
14 | # enable demandloading to reduce startup time |
|
11 | # enable demandloading to reduce startup time | |
15 | from mercurial import demandimport; demandimport.enable() |
|
12 | from mercurial import demandimport; demandimport.enable() | |
16 |
|
13 |
@@ -55,6 +55,9 b' IGNORES = {' | |||||
55 | 'builtins', |
|
55 | 'builtins', | |
56 | 'urwid.command_map', # for pudb |
|
56 | 'urwid.command_map', # for pudb | |
57 | 'lzma', |
|
57 | 'lzma', | |
|
58 | # setuptools uses this hack to inject it's own distutils at import time | |||
|
59 | 'setuptools', | |||
|
60 | '_distutils_hack.override', | |||
58 | } |
|
61 | } | |
59 |
|
62 | |||
60 | _pypy = '__pypy__' in sys.builtin_module_names |
|
63 | _pypy = '__pypy__' in sys.builtin_module_names |
@@ -248,7 +248,7 b' be controlled by the `clone-bundles.trig' | |||||
248 |
|
248 | |||
249 | This logic can be manually triggered using the `admin::clone-bundles-refresh` |
|
249 | This logic can be manually triggered using the `admin::clone-bundles-refresh` | |
250 | command, or automatically on each repository change if |
|
250 | command, or automatically on each repository change if | |
251 |
`clone-bundles.auto-generate.on-change` is set to `yes` |
|
251 | `clone-bundles.auto-generate.on-change` is set to `yes`:: | |
252 |
|
252 | |||
253 | [clone-bundles] |
|
253 | [clone-bundles] | |
254 | auto-generate.on-change=yes |
|
254 | auto-generate.on-change=yes | |
@@ -972,8 +972,16 b' def reposetup(ui, repo):' | |||||
972 | targets = repo.ui.configlist( |
|
972 | targets = repo.ui.configlist( | |
973 | b'clone-bundles', b'auto-generate.formats' |
|
973 | b'clone-bundles', b'auto-generate.formats' | |
974 | ) |
|
974 | ) | |
975 |
if enabled |
|
975 | if enabled: | |
976 | tr.addpostclose(CAT_POSTCLOSE, make_auto_bundler(self)) |
|
976 | if not targets: | |
|
977 | repo.ui.warn( | |||
|
978 | _( | |||
|
979 | b'clone-bundle auto-generate enabled, ' | |||
|
980 | b'but no formats specified: disabling generation\n' | |||
|
981 | ) | |||
|
982 | ) | |||
|
983 | else: | |||
|
984 | tr.addpostclose(CAT_POSTCLOSE, make_auto_bundler(self)) | |||
977 | return tr |
|
985 | return tr | |
978 |
|
986 | |||
979 | @localrepo.unfilteredmethod |
|
987 | @localrepo.unfilteredmethod |
@@ -82,7 +82,7 b' def decode(arg):' | |||||
82 | uarg = arg.decode(_encoding) |
|
82 | uarg = arg.decode(_encoding) | |
83 | if arg == uarg.encode(_encoding): |
|
83 | if arg == uarg.encode(_encoding): | |
84 | return uarg |
|
84 | return uarg | |
85 |
raise UnicodeError( |
|
85 | raise UnicodeError("Not local encoding") | |
86 | elif isinstance(arg, tuple): |
|
86 | elif isinstance(arg, tuple): | |
87 | return tuple(map(decode, arg)) |
|
87 | return tuple(map(decode, arg)) | |
88 | elif isinstance(arg, list): |
|
88 | elif isinstance(arg, list): | |
@@ -111,8 +111,8 b' def appendsep(s):' | |||||
111 | try: |
|
111 | try: | |
112 | us = decode(s) |
|
112 | us = decode(s) | |
113 | except UnicodeError: |
|
113 | except UnicodeError: | |
114 | us = s |
|
114 | us = s # TODO: how to handle this bytes case?? | |
115 |
if us and us[-1] not in |
|
115 | if us and us[-1] not in ':/\\': | |
116 | s += pycompat.ossep |
|
116 | s += pycompat.ossep | |
117 | return s |
|
117 | return s | |
118 |
|
118 | |||
@@ -148,13 +148,13 b' def wrapperforlistdir(func, args, kwds):' | |||||
148 | if args: |
|
148 | if args: | |
149 | args = list(args) |
|
149 | args = list(args) | |
150 | args[0] = appendsep(args[0]) |
|
150 | args[0] = appendsep(args[0]) | |
151 |
if |
|
151 | if 'path' in kwds: | |
152 |
kwds[ |
|
152 | kwds['path'] = appendsep(kwds['path']) | |
153 | return func(*args, **kwds) |
|
153 | return func(*args, **kwds) | |
154 |
|
154 | |||
155 |
|
155 | |||
156 | def wrapname(name, wrapper): |
|
156 | def wrapname(name: str, wrapper): | |
157 |
module, name = name.rsplit( |
|
157 | module, name = name.rsplit('.', 1) | |
158 | module = sys.modules[module] |
|
158 | module = sys.modules[module] | |
159 | func = getattr(module, name) |
|
159 | func = getattr(module, name) | |
160 |
|
160 | |||
@@ -168,7 +168,7 b' def wrapname(name, wrapper):' | |||||
168 | # List of functions to be wrapped. |
|
168 | # List of functions to be wrapped. | |
169 | # NOTE: os.path.dirname() and os.path.basename() are safe because |
|
169 | # NOTE: os.path.dirname() and os.path.basename() are safe because | |
170 | # they use result of os.path.split() |
|
170 | # they use result of os.path.split() | |
171 |
funcs = |
|
171 | funcs = '''os.path.join os.path.split os.path.splitext | |
172 | os.path.normpath os.makedirs mercurial.util.endswithsep |
|
172 | os.path.normpath os.makedirs mercurial.util.endswithsep | |
173 | mercurial.util.splitpath mercurial.util.fscasesensitive |
|
173 | mercurial.util.splitpath mercurial.util.fscasesensitive | |
174 | mercurial.util.fspath mercurial.util.pconvert mercurial.util.normpath |
|
174 | mercurial.util.fspath mercurial.util.pconvert mercurial.util.normpath | |
@@ -178,11 +178,11 b" funcs = b'''os.path.join os.path.split o" | |||||
178 | # These functions are required to be called with local encoded string |
|
178 | # These functions are required to be called with local encoded string | |
179 | # because they expects argument is local encoded string and cause |
|
179 | # because they expects argument is local encoded string and cause | |
180 | # problem with unicode string. |
|
180 | # problem with unicode string. | |
181 |
rfuncs = |
|
181 | rfuncs = '''mercurial.encoding.upper mercurial.encoding.lower | |
182 | mercurial.util._filenamebytestr''' |
|
182 | mercurial.util._filenamebytestr''' | |
183 |
|
183 | |||
184 | # List of Windows specific functions to be wrapped. |
|
184 | # List of Windows specific functions to be wrapped. | |
185 |
winfuncs = |
|
185 | winfuncs = '''os.path.splitunc''' | |
186 |
|
186 | |||
187 | # codec and alias names of sjis and big5 to be faked. |
|
187 | # codec and alias names of sjis and big5 to be faked. | |
188 | problematic_encodings = b'''big5 big5-tw csbig5 big5hkscs big5-hkscs |
|
188 | problematic_encodings = b'''big5 big5-tw csbig5 big5hkscs big5-hkscs | |
@@ -208,15 +208,15 b' def extsetup(ui):' | |||||
208 | if pycompat.iswindows: |
|
208 | if pycompat.iswindows: | |
209 | for f in winfuncs.split(): |
|
209 | for f in winfuncs.split(): | |
210 | wrapname(f, wrapper) |
|
210 | wrapname(f, wrapper) | |
211 |
wrapname( |
|
211 | wrapname("mercurial.util.listdir", wrapperforlistdir) | |
212 |
wrapname( |
|
212 | wrapname("mercurial.windows.listdir", wrapperforlistdir) | |
213 | # wrap functions to be called with local byte string arguments |
|
213 | # wrap functions to be called with local byte string arguments | |
214 | for f in rfuncs.split(): |
|
214 | for f in rfuncs.split(): | |
215 | wrapname(f, reversewrapper) |
|
215 | wrapname(f, reversewrapper) | |
216 | # Check sys.args manually instead of using ui.debug() because |
|
216 | # Check sys.args manually instead of using ui.debug() because | |
217 | # command line options is not yet applied when |
|
217 | # command line options is not yet applied when | |
218 | # extensions.loadall() is called. |
|
218 | # extensions.loadall() is called. | |
219 |
if |
|
219 | if '--debug' in sys.argv: | |
220 | ui.writenoi18n( |
|
220 | ui.writenoi18n( | |
221 | b"[win32mbcs] activated with encoding: %s\n" % _encoding |
|
221 | b"[win32mbcs] activated with encoding: %s\n" % _encoding | |
222 | ) |
|
222 | ) |
@@ -10,9 +10,6 b' config = b"/path/to/repo/or/config"' | |||||
10 | # (consult "installed modules" path from 'hg debuginstall'): |
|
10 | # (consult "installed modules" path from 'hg debuginstall'): | |
11 | # import sys; sys.path.insert(0, "/path/to/python/lib") |
|
11 | # import sys; sys.path.insert(0, "/path/to/python/lib") | |
12 |
|
12 | |||
13 | # Uncomment to send python tracebacks to the browser if an error occurs: |
|
|||
14 | # import cgitb; cgitb.enable() |
|
|||
15 |
|
||||
16 | from mercurial import demandimport |
|
13 | from mercurial import demandimport | |
17 |
|
14 | |||
18 | demandimport.enable() |
|
15 | demandimport.enable() |
@@ -4,7 +4,6 b'' | |||||
4 | # GNU General Public License version 2 or any later version. |
|
4 | # GNU General Public License version 2 or any later version. | |
5 |
|
5 | |||
6 |
|
6 | |||
7 | import struct |
|
|||
8 | from .i18n import _ |
|
7 | from .i18n import _ | |
9 |
|
8 | |||
10 | from . import ( |
|
9 | from . import ( | |
@@ -152,15 +151,13 b' class _dirstatemapcommon:' | |||||
152 | b'dirstate only has a docket in v2 format' |
|
151 | b'dirstate only has a docket in v2 format' | |
153 | ) |
|
152 | ) | |
154 | self._set_identity() |
|
153 | self._set_identity() | |
155 | try: |
|
154 | data = self._readdirstatefile() | |
|
155 | if data == b'' or data.startswith(docketmod.V2_FORMAT_MARKER): | |||
156 | self._docket = docketmod.DirstateDocket.parse( |
|
156 | self._docket = docketmod.DirstateDocket.parse( | |
157 |
|
|
157 | data, self._nodeconstants | |
158 | ) |
|
158 | ) | |
159 |
e |
|
159 | else: | |
160 | self._ui.debug(b"failed to read dirstate-v2 data") |
|
160 | raise error.CorruptedDirstate(b"dirstate is not in v2 format") | |
161 | raise error.CorruptedDirstate( |
|
|||
162 | b"failed to read dirstate-v2 data" |
|
|||
163 | ) |
|
|||
164 | return self._docket |
|
161 | return self._docket | |
165 |
|
162 | |||
166 | def _read_v2_data(self): |
|
163 | def _read_v2_data(self): |
@@ -964,6 +964,7 b' impl OwningDirstateMap {' | |||||
964 | map.root = Default::default(); |
|
964 | map.root = Default::default(); | |
965 | map.nodes_with_entry_count = 0; |
|
965 | map.nodes_with_entry_count = 0; | |
966 | map.nodes_with_copy_source_count = 0; |
|
966 | map.nodes_with_copy_source_count = 0; | |
|
967 | map.unreachable_bytes = map.on_disk.len() as u32; | |||
967 | }); |
|
968 | }); | |
968 | } |
|
969 | } | |
969 |
|
970 |
@@ -1,6 +1,6 b'' | |||||
1 | use crate::errors::HgError; |
|
1 | use crate::errors::HgError; | |
|
2 | use crate::revlog::Revision; | |||
2 | use crate::revlog::{Node, NodePrefix}; |
|
3 | use crate::revlog::{Node, NodePrefix}; | |
3 | use crate::revlog::{Revision, NULL_REVISION}; |
|
|||
4 | use crate::revlog::{Revlog, RevlogEntry, RevlogError}; |
|
4 | use crate::revlog::{Revlog, RevlogEntry, RevlogError}; | |
5 | use crate::utils::hg_path::HgPath; |
|
5 | use crate::utils::hg_path::HgPath; | |
6 | use crate::vfs::Vfs; |
|
6 | use crate::vfs::Vfs; | |
@@ -51,9 +51,6 b' impl Changelog {' | |||||
51 | &self, |
|
51 | &self, | |
52 | rev: Revision, |
|
52 | rev: Revision, | |
53 | ) -> Result<ChangelogRevisionData, RevlogError> { |
|
53 | ) -> Result<ChangelogRevisionData, RevlogError> { | |
54 | if rev == NULL_REVISION { |
|
|||
55 | return Ok(ChangelogRevisionData::null()); |
|
|||
56 | } |
|
|||
57 | self.entry_for_rev(rev)?.data() |
|
54 | self.entry_for_rev(rev)?.data() | |
58 | } |
|
55 | } | |
59 |
|
56 | |||
@@ -336,6 +333,11 b' message",' | |||||
336 | changelog.data_for_rev(NULL_REVISION)?, |
|
333 | changelog.data_for_rev(NULL_REVISION)?, | |
337 | ChangelogRevisionData::null() |
|
334 | ChangelogRevisionData::null() | |
338 | ); |
|
335 | ); | |
|
336 | // same with the intermediate entry object | |||
|
337 | assert_eq!( | |||
|
338 | changelog.entry_for_rev(NULL_REVISION)?.data()?, | |||
|
339 | ChangelogRevisionData::null() | |||
|
340 | ); | |||
339 | Ok(()) |
|
341 | Ok(()) | |
340 | } |
|
342 | } | |
341 | } |
|
343 | } |
@@ -225,20 +225,35 b' impl Revlog {' | |||||
225 | &self, |
|
225 | &self, | |
226 | node: NodePrefix, |
|
226 | node: NodePrefix, | |
227 | ) -> Result<Revision, RevlogError> { |
|
227 | ) -> Result<Revision, RevlogError> { | |
228 | if node.is_prefix_of(&NULL_NODE) { |
|
228 | let looked_up = if let Some(nodemap) = &self.nodemap { | |
229 | return Ok(NULL_REVISION); |
|
229 | nodemap | |
230 | } |
|
|||
231 |
|
||||
232 | if let Some(nodemap) = &self.nodemap { |
|
|||
233 | return nodemap |
|
|||
234 | .find_bin(&self.index, node)? |
|
230 | .find_bin(&self.index, node)? | |
235 |
.ok_or(RevlogError::InvalidRevision) |
|
231 | .ok_or(RevlogError::InvalidRevision) | |
236 | } |
|
232 | } else { | |
|
233 | self.rev_from_node_no_persistent_nodemap(node) | |||
|
234 | }; | |||
|
235 | ||||
|
236 | if node.is_prefix_of(&NULL_NODE) { | |||
|
237 | return match looked_up { | |||
|
238 | Ok(_) => Err(RevlogError::AmbiguousPrefix), | |||
|
239 | Err(RevlogError::InvalidRevision) => Ok(NULL_REVISION), | |||
|
240 | res => res, | |||
|
241 | }; | |||
|
242 | }; | |||
237 |
|
243 | |||
238 | // Fallback to linear scan when a persistent nodemap is not present. |
|
244 | looked_up | |
239 | // This happens when the persistent-nodemap experimental feature is not |
|
245 | } | |
240 | // enabled, or for small revlogs. |
|
246 | ||
241 | // |
|
247 | /// Same as `rev_from_node`, without using a persistent nodemap | |
|
248 | /// | |||
|
249 | /// This is used as fallback when a persistent nodemap is not present. | |||
|
250 | /// This happens when the persistent-nodemap experimental feature is not | |||
|
251 | /// enabled, or for small revlogs. | |||
|
252 | fn rev_from_node_no_persistent_nodemap( | |||
|
253 | &self, | |||
|
254 | node: NodePrefix, | |||
|
255 | ) -> Result<Revision, RevlogError> { | |||
|
256 | // Linear scan of the revlog | |||
242 | // TODO: consider building a non-persistent nodemap in memory to |
|
257 | // TODO: consider building a non-persistent nodemap in memory to | |
243 | // optimize these cases. |
|
258 | // optimize these cases. | |
244 | let mut found_by_prefix = None; |
|
259 | let mut found_by_prefix = None; | |
@@ -547,6 +562,9 b" impl<'revlog> RevlogEntry<'revlog> {" | |||||
547 |
|
562 | |||
548 | pub fn data(&self) -> Result<Cow<'revlog, [u8]>, HgError> { |
|
563 | pub fn data(&self) -> Result<Cow<'revlog, [u8]>, HgError> { | |
549 | let data = self.rawdata()?; |
|
564 | let data = self.rawdata()?; | |
|
565 | if self.rev == NULL_REVISION { | |||
|
566 | return Ok(data); | |||
|
567 | } | |||
550 | if self.is_censored() { |
|
568 | if self.is_censored() { | |
551 | return Err(HgError::CensoredNodeError); |
|
569 | return Err(HgError::CensoredNodeError); | |
552 | } |
|
570 | } | |
@@ -669,6 +687,13 b' mod tests {' | |||||
669 | assert_eq!(revlog.len(), 0); |
|
687 | assert_eq!(revlog.len(), 0); | |
670 | assert!(revlog.get_entry(0).is_err()); |
|
688 | assert!(revlog.get_entry(0).is_err()); | |
671 | assert!(!revlog.has_rev(0)); |
|
689 | assert!(!revlog.has_rev(0)); | |
|
690 | assert_eq!( | |||
|
691 | revlog.rev_from_node(NULL_NODE.into()).unwrap(), | |||
|
692 | NULL_REVISION | |||
|
693 | ); | |||
|
694 | let null_entry = revlog.get_entry(NULL_REVISION).ok().unwrap(); | |||
|
695 | assert_eq!(null_entry.revision(), NULL_REVISION); | |||
|
696 | assert!(null_entry.data().unwrap().is_empty()); | |||
672 | } |
|
697 | } | |
673 |
|
698 | |||
674 | #[test] |
|
699 | #[test] | |
@@ -740,4 +765,65 b' mod tests {' | |||||
740 | assert!(p2_entry.is_some()); |
|
765 | assert!(p2_entry.is_some()); | |
741 | assert_eq!(p2_entry.unwrap().revision(), 1); |
|
766 | assert_eq!(p2_entry.unwrap().revision(), 1); | |
742 | } |
|
767 | } | |
|
768 | ||||
|
769 | #[test] | |||
|
770 | fn test_nodemap() { | |||
|
771 | let temp = tempfile::tempdir().unwrap(); | |||
|
772 | let vfs = Vfs { base: temp.path() }; | |||
|
773 | ||||
|
774 | // building a revlog with a forced Node starting with zeros | |||
|
775 | // This is a corruption, but it does not preclude using the nodemap | |||
|
776 | // if we don't try and access the data | |||
|
777 | let node0 = Node::from_hex("00d2a3912a0b24502043eae84ee4b279c18b90dd") | |||
|
778 | .unwrap(); | |||
|
779 | let node1 = Node::from_hex("b004912a8510032a0350a74daa2803dadfb00e12") | |||
|
780 | .unwrap(); | |||
|
781 | let entry0_bytes = IndexEntryBuilder::new() | |||
|
782 | .is_first(true) | |||
|
783 | .with_version(1) | |||
|
784 | .with_inline(true) | |||
|
785 | .with_offset(INDEX_ENTRY_SIZE) | |||
|
786 | .with_node(node0) | |||
|
787 | .build(); | |||
|
788 | let entry1_bytes = IndexEntryBuilder::new() | |||
|
789 | .with_offset(INDEX_ENTRY_SIZE) | |||
|
790 | .with_node(node1) | |||
|
791 | .build(); | |||
|
792 | let contents = vec![entry0_bytes, entry1_bytes] | |||
|
793 | .into_iter() | |||
|
794 | .flatten() | |||
|
795 | .collect_vec(); | |||
|
796 | std::fs::write(temp.path().join("foo.i"), contents).unwrap(); | |||
|
797 | let revlog = Revlog::open(&vfs, "foo.i", None, false).unwrap(); | |||
|
798 | ||||
|
799 | // accessing the data shows the corruption | |||
|
800 | revlog.get_entry(0).unwrap().data().unwrap_err(); | |||
|
801 | ||||
|
802 | assert_eq!(revlog.rev_from_node(NULL_NODE.into()).unwrap(), -1); | |||
|
803 | assert_eq!(revlog.rev_from_node(node0.into()).unwrap(), 0); | |||
|
804 | assert_eq!(revlog.rev_from_node(node1.into()).unwrap(), 1); | |||
|
805 | assert_eq!( | |||
|
806 | revlog | |||
|
807 | .rev_from_node(NodePrefix::from_hex("000").unwrap()) | |||
|
808 | .unwrap(), | |||
|
809 | -1 | |||
|
810 | ); | |||
|
811 | assert_eq!( | |||
|
812 | revlog | |||
|
813 | .rev_from_node(NodePrefix::from_hex("b00").unwrap()) | |||
|
814 | .unwrap(), | |||
|
815 | 1 | |||
|
816 | ); | |||
|
817 | // RevlogError does not implement PartialEq | |||
|
818 | // (ultimately because io::Error does not) | |||
|
819 | match revlog | |||
|
820 | .rev_from_node(NodePrefix::from_hex("00").unwrap()) | |||
|
821 | .expect_err("Expected to give AmbiguousPrefix error") | |||
|
822 | { | |||
|
823 | RevlogError::AmbiguousPrefix => (), | |||
|
824 | e => { | |||
|
825 | panic!("Got another error than AmbiguousPrefix: {:?}", e); | |||
|
826 | } | |||
|
827 | }; | |||
|
828 | } | |||
743 | } |
|
829 | } |
@@ -112,7 +112,10 b" issetuptools = os.name == 'nt' or 'FORCE" | |||||
112 | if issetuptools: |
|
112 | if issetuptools: | |
113 | from setuptools import setup |
|
113 | from setuptools import setup | |
114 | else: |
|
114 | else: | |
115 | from distutils.core import setup |
|
115 | try: | |
|
116 | from distutils.core import setup | |||
|
117 | except ModuleNotFoundError: | |||
|
118 | from setuptools import setup | |||
116 | from distutils.ccompiler import new_compiler |
|
119 | from distutils.ccompiler import new_compiler | |
117 | from distutils.core import Command, Extension |
|
120 | from distutils.core import Command, Extension | |
118 | from distutils.dist import Distribution |
|
121 | from distutils.dist import Distribution |
@@ -3,12 +3,11 b'' | |||||
3 | """dummy SMTP server for use in tests""" |
|
3 | """dummy SMTP server for use in tests""" | |
4 |
|
4 | |||
5 |
|
5 | |||
6 | import asyncore |
|
|||
7 | import optparse |
|
6 | import optparse | |
8 |
import s |
|
7 | import os | |
|
8 | import socket | |||
9 | import ssl |
|
9 | import ssl | |
10 | import sys |
|
10 | import sys | |
11 | import traceback |
|
|||
12 |
|
11 | |||
13 | from mercurial import ( |
|
12 | from mercurial import ( | |
14 | pycompat, |
|
13 | pycompat, | |
@@ -18,54 +17,97 b' from mercurial import (' | |||||
18 | ) |
|
17 | ) | |
19 |
|
18 | |||
20 |
|
19 | |||
|
20 | if os.environ.get('HGIPV6', '0') == '1': | |||
|
21 | family = socket.AF_INET6 | |||
|
22 | else: | |||
|
23 | family = socket.AF_INET | |||
|
24 | ||||
|
25 | ||||
21 | def log(msg): |
|
26 | def log(msg): | |
22 | sys.stdout.write(msg) |
|
27 | sys.stdout.write(msg) | |
23 | sys.stdout.flush() |
|
28 | sys.stdout.flush() | |
24 |
|
29 | |||
25 |
|
30 | |||
26 | class dummysmtpserver(smtpd.SMTPServer): |
|
31 | def mocksmtpserversession(conn, addr): | |
27 | def __init__(self, localaddr): |
|
32 | conn.send(b'220 smtp.example.com ESMTP\r\n') | |
28 | smtpd.SMTPServer.__init__(self, localaddr, remoteaddr=None) |
|
33 | ||
|
34 | line = conn.recv(1024) | |||
|
35 | if not line.lower().startswith(b'ehlo '): | |||
|
36 | log('no hello: %s\n' % line) | |||
|
37 | return | |||
|
38 | ||||
|
39 | conn.send(b'250 Hello\r\n') | |||
29 |
|
40 | |||
30 | def process_message(self, peer, mailfrom, rcpttos, data, **kwargs): |
|
41 | line = conn.recv(1024) | |
31 | log('%s from=%s to=%s\n' % (peer[0], mailfrom, ', '.join(rcpttos))) |
|
42 | if not line.lower().startswith(b'mail from:'): | |
|
43 | log('no mail from: %s\n' % line) | |||
|
44 | return | |||
|
45 | mailfrom = line[10:].decode().rstrip() | |||
|
46 | if mailfrom.startswith('<') and mailfrom.endswith('>'): | |||
|
47 | mailfrom = mailfrom[1:-1] | |||
|
48 | ||||
|
49 | conn.send(b'250 Ok\r\n') | |||
32 |
|
50 | |||
33 | def handle_error(self): |
|
51 | rcpttos = [] | |
34 | # On Windows, a bad SSL connection sometimes generates a WSAECONNRESET. |
|
52 | while True: | |
35 | # The default handler will shutdown this server, and then both the |
|
53 | line = conn.recv(1024) | |
36 | # current connection and subsequent ones fail on the client side with |
|
54 | if not line.lower().startswith(b'rcpt to:'): | |
37 | # "No connection could be made because the target machine actively |
|
55 | break | |
38 | # refused it". If we eat the error, then the client properly aborts in |
|
56 | rcptto = line[8:].decode().rstrip() | |
39 | # the expected way, and the server is available for subsequent requests. |
|
57 | if rcptto.startswith('<') and rcptto.endswith('>'): | |
40 | traceback.print_exc() |
|
58 | rcptto = rcptto[1:-1] | |
|
59 | rcpttos.append(rcptto) | |||
|
60 | ||||
|
61 | conn.send(b'250 Ok\r\n') | |||
|
62 | ||||
|
63 | if not line.lower().strip() == b'data': | |||
|
64 | log('no rcpt to or data: %s' % line) | |||
|
65 | ||||
|
66 | conn.send(b'354 Go ahead\r\n') | |||
|
67 | ||||
|
68 | data = b'' | |||
|
69 | while True: | |||
|
70 | line = conn.recv(1024) | |||
|
71 | if not line: | |||
|
72 | log('connection closed before end of data') | |||
|
73 | break | |||
|
74 | data += line | |||
|
75 | if data.endswith(b'\r\n.\r\n'): | |||
|
76 | data = data[:-5] | |||
|
77 | break | |||
|
78 | ||||
|
79 | conn.send(b'250 Ok\r\n') | |||
|
80 | ||||
|
81 | log( | |||
|
82 | '%s from=%s to=%s\n%s\n' | |||
|
83 | % (addr[0], mailfrom, ', '.join(rcpttos), data.decode()) | |||
|
84 | ) | |||
41 |
|
85 | |||
42 |
|
86 | |||
43 | class dummysmtpsecureserver(dummysmtpserver): |
|
87 | def run(host, port, certificate): | |
44 | def __init__(self, localaddr, certfile): |
|
88 | ui = uimod.ui.load() | |
45 | dummysmtpserver.__init__(self, localaddr) |
|
89 | with socket.socket(family, socket.SOCK_STREAM) as s: | |
46 | self._certfile = certfile |
|
90 | s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | |
47 |
|
91 | s.bind((host, port)) | ||
48 | def handle_accept(self): |
|
92 | # log('listening at %s:%d\n' % (host, port)) | |
49 | pair = self.accept() |
|
93 | s.listen(1) | |
50 | if not pair: |
|
|||
51 | return |
|
|||
52 | conn, addr = pair |
|
|||
53 | ui = uimod.ui.load() |
|
|||
54 | try: |
|
94 | try: | |
55 | # wrap_socket() would block, but we don't care |
|
95 | while True: | |
56 | conn = sslutil.wrapserversocket(conn, ui, certfile=self._certfile) |
|
96 | conn, addr = s.accept() | |
57 | except ssl.SSLError: |
|
97 | if certificate: | |
58 | log('%s ssl error\n' % addr[0]) |
|
98 | try: | |
59 | conn.close() |
|
99 | conn = sslutil.wrapserversocket( | |
60 | return |
|
100 | conn, ui, certfile=certificate | |
61 | smtpd.SMTPChannel(self, conn, addr) |
|
101 | ) | |
62 |
|
102 | except ssl.SSLError as e: | ||
63 |
|
103 | log('%s ssl error: %s\n' % (addr[0], e)) | ||
64 | def run(): |
|
104 | conn.close() | |
65 | try: |
|
105 | continue | |
66 | asyncore.loop() |
|
106 | log("connection from %s:%s\n" % addr) | |
67 | except KeyboardInterrupt: |
|
107 | mocksmtpserversession(conn, addr) | |
68 | pass |
|
108 | conn.close() | |
|
109 | except KeyboardInterrupt: | |||
|
110 | pass | |||
69 |
|
111 | |||
70 |
|
112 | |||
71 | def _encodestrsonly(v): |
|
113 | def _encodestrsonly(v): | |
@@ -93,26 +135,18 b' def main():' | |||||
93 | op.add_option('--pid-file', metavar='FILE') |
|
135 | op.add_option('--pid-file', metavar='FILE') | |
94 | op.add_option('--tls', choices=['none', 'smtps'], default='none') |
|
136 | op.add_option('--tls', choices=['none', 'smtps'], default='none') | |
95 | op.add_option('--certificate', metavar='FILE') |
|
137 | op.add_option('--certificate', metavar='FILE') | |
|
138 | op.add_option('--logfile', metavar='FILE') | |||
96 |
|
139 | |||
97 | opts, args = op.parse_args() |
|
140 | opts, args = op.parse_args() | |
98 |
if opts.tls == 'smtps' |
|
141 | if (opts.tls == 'smtps') != bool(opts.certificate): | |
99 | op.error('--certificate must be specified') |
|
142 | op.error('--certificate must be specified with --tls=smtps') | |
100 |
|
||||
101 | addr = (opts.address, opts.port) |
|
|||
102 |
|
||||
103 | def init(): |
|
|||
104 | if opts.tls == 'none': |
|
|||
105 | dummysmtpserver(addr) |
|
|||
106 | else: |
|
|||
107 | dummysmtpsecureserver(addr, opts.certificate) |
|
|||
108 | log('listening at %s:%d\n' % addr) |
|
|||
109 |
|
143 | |||
110 | server.runservice( |
|
144 | server.runservice( | |
111 | bytesvars(opts), |
|
145 | bytesvars(opts), | |
112 | initfn=init, |
|
146 | runfn=lambda: run(opts.address, opts.port, opts.certificate), | |
113 | runfn=run, |
|
|||
114 | runargs=[pycompat.sysexecutable, pycompat.fsencode(__file__)] |
|
147 | runargs=[pycompat.sysexecutable, pycompat.fsencode(__file__)] | |
115 | + pycompat.sysargv[1:], |
|
148 | + pycompat.sysargv[1:], | |
|
149 | logfile=opts.logfile, | |||
116 | ) |
|
150 | ) | |
117 |
|
151 | |||
118 |
|
152 |
@@ -69,5 +69,5 b' ls_l() {' | |||||
69 | } |
|
69 | } | |
70 |
|
70 | |||
71 | identifyrflcaps() { |
|
71 | identifyrflcaps() { | |
72 |
xargs -n 1 echo | |
|
72 | xargs -n 1 echo | grep -E '(remotefilelog|getflogheads|getfile)' | sort | |
73 | } |
|
73 | } |
@@ -51,12 +51,12 b' hg subrepos are shared into existence on' | |||||
51 | $ hg -R clone1 update -C tip |
|
51 | $ hg -R clone1 update -C tip | |
52 | cloning subrepo subrepo from $TESTTMP/test/subrepo |
|
52 | cloning subrepo subrepo from $TESTTMP/test/subrepo | |
53 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
53 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
54 |
$ find share2 | |
|
54 | $ find share2 | grep -E 'sharedpath|00.+\.i' | sort | |
55 | share2/.hg/sharedpath |
|
55 | share2/.hg/sharedpath | |
56 | share2/subrepo/.hg/sharedpath |
|
56 | share2/subrepo/.hg/sharedpath | |
57 | $ hg -R share2 unshare |
|
57 | $ hg -R share2 unshare | |
58 | unsharing subrepo 'subrepo' |
|
58 | unsharing subrepo 'subrepo' | |
59 |
$ find share2 | |
|
59 | $ find share2 | grep -E 'sharedpath|00.+\.i' | sort | |
60 | share2/.hg/00changelog.i |
|
60 | share2/.hg/00changelog.i | |
61 | share2/.hg/sharedpath.old |
|
61 | share2/.hg/sharedpath.old | |
62 | share2/.hg/store/00changelog.i |
|
62 | share2/.hg/store/00changelog.i | |
@@ -566,7 +566,7 b' old file -- date clamped to 1980' | |||||
566 | $ hg add old |
|
566 | $ hg add old | |
567 | $ hg commit -m old |
|
567 | $ hg commit -m old | |
568 | $ hg archive ../old.zip |
|
568 | $ hg archive ../old.zip | |
569 |
$ unzip -l ../old.zip | grep -v -- ----- | |
|
569 | $ unzip -l ../old.zip | grep -v -- ----- | grep -E -v files$ | |
570 | Archive: ../old.zip |
|
570 | Archive: ../old.zip | |
571 | \s*Length.* (re) |
|
571 | \s*Length.* (re) | |
572 | *172*80*00:00*old/.hg_archival.txt (glob) |
|
572 | *172*80*00:00*old/.hg_archival.txt (glob) |
@@ -57,7 +57,7 b' another bad extension' | |||||
57 |
|
57 | |||
58 | show traceback |
|
58 | show traceback | |
59 |
|
59 | |||
60 |
$ hg -q help help --traceback 2>&1 | |
|
60 | $ hg -q help help --traceback 2>&1 | grep -E ' extension|^Exception|Traceback|ImportError|ModuleNotFound' | |
61 | *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow |
|
61 | *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow | |
62 | Traceback (most recent call last): |
|
62 | Traceback (most recent call last): | |
63 | Exception: bit bucket overflow |
|
63 | Exception: bit bucket overflow | |
@@ -88,7 +88,7 b' show traceback for ImportError of hgext.' | |||||
88 | $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ |
|
88 | $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ | |
89 | > | grep -v '^ ' \ |
|
89 | > | grep -v '^ ' \ | |
90 | > | filterlog \ |
|
90 | > | filterlog \ | |
91 |
> | |
|
91 | > | grep -E 'extension..[^p]|^Exception|Traceback|ImportError|^YYYY|not import|ModuleNotFound' | |
92 | YYYY/MM/DD HH:MM:SS (PID)> loading extensions |
|
92 | YYYY/MM/DD HH:MM:SS (PID)> loading extensions | |
93 | YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries |
|
93 | YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries | |
94 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg |
|
94 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg |
@@ -393,7 +393,7 b" a '*' entry in blackbox.track is interpr" | |||||
393 | > EOF |
|
393 | > EOF | |
394 | (only look for entries with specific logged sources, otherwise this test is |
|
394 | (only look for entries with specific logged sources, otherwise this test is | |
395 | pretty brittle) |
|
395 | pretty brittle) | |
396 |
$ hg blackbox | |
|
396 | $ hg blackbox | grep -E '\[command(finish)?\]' | |
397 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [commandfinish]> --config *blackbox.track=* --config *blackbox.logsource=True* init track_star exited 0 after * seconds (glob) |
|
397 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [commandfinish]> --config *blackbox.track=* --config *blackbox.logsource=True* init track_star exited 0 after * seconds (glob) | |
398 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [command]> blackbox |
|
398 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [command]> blackbox | |
399 | $ cd $TESTTMP |
|
399 | $ cd $TESTTMP |
@@ -230,17 +230,17 b' test shelving' | |||||
230 | make the bookmark move by updating it on a, and then pulling with a local change |
|
230 | make the bookmark move by updating it on a, and then pulling with a local change | |
231 | # add a commit to a |
|
231 | # add a commit to a | |
232 | $ cd ../a |
|
232 | $ cd ../a | |
233 |
$ hg up -C X | |
|
233 | $ hg up -C X |grep -F "activating bookmark X" | |
234 | (activating bookmark X) |
|
234 | (activating bookmark X) | |
235 | # go back to b, and check out X |
|
235 | # go back to b, and check out X | |
236 | $ cd ../b |
|
236 | $ cd ../b | |
237 |
$ hg up -C X | |
|
237 | $ hg up -C X |grep -F "activating bookmark X" | |
238 | (activating bookmark X) |
|
238 | (activating bookmark X) | |
239 | # update and push from a |
|
239 | # update and push from a | |
240 | $ make_changes ../a |
|
240 | $ make_changes ../a | |
241 | created new head |
|
241 | created new head | |
242 | $ echo "more" >> test |
|
242 | $ echo "more" >> test | |
243 |
$ hg pull -u 2>&1 | |
|
243 | $ hg pull -u 2>&1 | grep -F -v TESTTMP| grep -F -v "searching for changes" | grep -F -v adding | |
244 | pulling from $TESTTMP/a |
|
244 | pulling from $TESTTMP/a | |
245 | updating bookmark X |
|
245 | updating bookmark X | |
246 | added 1 changesets with 0 changes to 0 files (+1 heads) |
|
246 | added 1 changesets with 0 changes to 0 files (+1 heads) |
@@ -70,7 +70,7 b' by default, system() should be redirecte' | |||||
70 |
|
70 | |||
71 | $ touch foo |
|
71 | $ touch foo | |
72 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am channeled --edit 2>&1 \ |
|
72 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am channeled --edit 2>&1 \ | |
73 |
> | |
|
73 | > | grep -E "HG:|run 'cat" | |
74 | chg: debug: * run 'cat "*"' at '$TESTTMP/editor' (glob) |
|
74 | chg: debug: * run 'cat "*"' at '$TESTTMP/editor' (glob) | |
75 | HG: Enter commit message. Lines beginning with 'HG:' are removed. |
|
75 | HG: Enter commit message. Lines beginning with 'HG:' are removed. | |
76 | HG: Leave message empty to abort commit. |
|
76 | HG: Leave message empty to abort commit. | |
@@ -84,7 +84,7 b' but no redirection should be made if out' | |||||
84 | $ touch bar |
|
84 | $ touch bar | |
85 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am bufferred --edit \ |
|
85 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am bufferred --edit \ | |
86 | > --config extensions.pushbuffer="$TESTTMP/pushbuffer.py" 2>&1 \ |
|
86 | > --config extensions.pushbuffer="$TESTTMP/pushbuffer.py" 2>&1 \ | |
87 |
> | |
|
87 | > | grep -E "HG:|run 'cat" | |
88 | [1] |
|
88 | [1] | |
89 |
|
89 | |||
90 | check that commit commands succeeded: |
|
90 | check that commit commands succeeded: | |
@@ -237,14 +237,14 b' isolate socket directory for stable resu' | |||||
237 |
|
237 | |||
238 | warm up server: |
|
238 | warm up server: | |
239 |
|
239 | |||
240 |
$ CHGDEBUG= chg log 2>&1 | |
|
240 | $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' | |
241 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
|
241 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) | |
242 |
|
242 | |||
243 | new server should be started if extension modified: |
|
243 | new server should be started if extension modified: | |
244 |
|
244 | |||
245 | $ sleep 1 |
|
245 | $ sleep 1 | |
246 | $ touch dummyext.py |
|
246 | $ touch dummyext.py | |
247 |
$ CHGDEBUG= chg log 2>&1 | |
|
247 | $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' | |
248 | chg: debug: * instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob) |
|
248 | chg: debug: * instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob) | |
249 | chg: debug: * instruction: reconnect (glob) |
|
249 | chg: debug: * instruction: reconnect (glob) | |
250 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
|
250 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) | |
@@ -252,7 +252,7 b' new server should be started if extensio' | |||||
252 | old server will shut down, while new server should still be reachable: |
|
252 | old server will shut down, while new server should still be reachable: | |
253 |
|
253 | |||
254 | $ sleep 2 |
|
254 | $ sleep 2 | |
255 |
$ CHGDEBUG= chg log 2>&1 | ( |
|
255 | $ CHGDEBUG= chg log 2>&1 | (grep -E 'instruction|start' || true) | |
256 |
|
256 | |||
257 | socket file should never be unlinked by old server: |
|
257 | socket file should never be unlinked by old server: | |
258 | (simulates unowned socket by updating mtime, which makes sure server exits |
|
258 | (simulates unowned socket by updating mtime, which makes sure server exits | |
@@ -268,7 +268,7 b' at polling cycle)' | |||||
268 | since no server is reachable from socket file, new server should be started: |
|
268 | since no server is reachable from socket file, new server should be started: | |
269 | (this test makes sure that old server shut down automatically) |
|
269 | (this test makes sure that old server shut down automatically) | |
270 |
|
270 | |||
271 |
$ CHGDEBUG= chg log 2>&1 | |
|
271 | $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' | |
272 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
|
272 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) | |
273 |
|
273 | |||
274 | shut down servers and restore environment: |
|
274 | shut down servers and restore environment: | |
@@ -495,7 +495,7 b' share the same server' | |||||
495 | > } |
|
495 | > } | |
496 | $ newchg() { |
|
496 | $ newchg() { | |
497 | > chg --kill-chg-daemon |
|
497 | > chg --kill-chg-daemon | |
498 |
> filteredchg "$@" | |
|
498 | > filteredchg "$@" | grep -E -v 'start cmdserver' || true | |
499 | > } |
|
499 | > } | |
500 | (--profile isn't permanently on just because it was specified when chg was |
|
500 | (--profile isn't permanently on just because it was specified when chg was | |
501 | started) |
|
501 | started) | |
@@ -561,12 +561,12 b' If CHGHG is not set, chg will set it bef' | |||||
561 | $ hg --kill-chg-daemon |
|
561 | $ hg --kill-chg-daemon | |
562 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ |
|
562 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ | |
563 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ |
|
563 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ | |
564 |
> | |
|
564 | > | grep -E 'CHGHG|start' | |
565 | chg: debug: * start cmdserver at * (glob) |
|
565 | chg: debug: * start cmdserver at * (glob) | |
566 | CHGHG=/*/install/bin/hg (glob) |
|
566 | CHGHG=/*/install/bin/hg (glob) | |
567 |
|
567 | |||
568 | Running the same command a second time shouldn't spawn a new command server. |
|
568 | Running the same command a second time shouldn't spawn a new command server. | |
569 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ |
|
569 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ | |
570 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ |
|
570 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ | |
571 |
> | |
|
571 | > | grep -E 'CHGHG|start' | |
572 | CHGHG=/*/install/bin/hg (glob) |
|
572 | CHGHG=/*/install/bin/hg (glob) |
@@ -12,8 +12,6 b' initialize repository' | |||||
12 | $ cat >hgweb.cgi <<HGWEB |
|
12 | $ cat >hgweb.cgi <<HGWEB | |
13 | > # |
|
13 | > # | |
14 | > # An example CGI script to use hgweb, edit as necessary |
|
14 | > # An example CGI script to use hgweb, edit as necessary | |
15 | > import cgitb |
|
|||
16 | > cgitb.enable() |
|
|||
17 | > from mercurial import demandimport; demandimport.enable() |
|
15 | > from mercurial import demandimport; demandimport.enable() | |
18 | > from mercurial.hgweb import hgweb |
|
16 | > from mercurial.hgweb import hgweb | |
19 | > from mercurial.hgweb import wsgicgi |
|
17 | > from mercurial.hgweb import wsgicgi |
@@ -245,7 +245,7 b' The resulting clone should not use share' | |||||
245 |
|
245 | |||
246 | $ hg clone --quiet --stream -U http://localhost:$HGPORT clone-from-share |
|
246 | $ hg clone --quiet --stream -U http://localhost:$HGPORT clone-from-share | |
247 | $ hg -R clone-from-share verify -q |
|
247 | $ hg -R clone-from-share verify -q | |
248 |
$ hg debugrequires -R clone-from-share | |
|
248 | $ hg debugrequires -R clone-from-share | grep -E 'share$' | |
249 | [1] |
|
249 | [1] | |
250 |
|
250 | |||
251 | $ killdaemons.py |
|
251 | $ killdaemons.py |
@@ -714,7 +714,7 b' Test clone from the repository in (emula' | |||||
714 | $ hg -R src commit -m '#0' |
|
714 | $ hg -R src commit -m '#0' | |
715 | $ hg -R src log -q |
|
715 | $ hg -R src log -q | |
716 | 0:e1bab28bca43 |
|
716 | 0:e1bab28bca43 | |
717 |
$ hg -R src debugrevlog -c | |
|
717 | $ hg -R src debugrevlog -c | grep -E 'format|flags' | |
718 | format : 0 |
|
718 | format : 0 | |
719 | flags : (none) |
|
719 | flags : (none) | |
720 | $ hg root -R src -T json | sed 's|\\\\|\\|g' |
|
720 | $ hg root -R src -T json | sed 's|\\\\|\\|g' |
@@ -10,7 +10,6 b' initial setup' | |||||
10 | > |
|
10 | > | |
11 | > [clone-bundles] |
|
11 | > [clone-bundles] | |
12 | > auto-generate.on-change = yes |
|
12 | > auto-generate.on-change = yes | |
13 | > auto-generate.formats = v2 |
|
|||
14 | > upload-command = cp "\$HGCB_BUNDLE_PATH" "$TESTTMP"/final-upload/ |
|
13 | > upload-command = cp "\$HGCB_BUNDLE_PATH" "$TESTTMP"/final-upload/ | |
15 | > delete-command = rm -f "$TESTTMP/final-upload/\$HGCB_BASENAME" |
|
14 | > delete-command = rm -f "$TESTTMP/final-upload/\$HGCB_BASENAME" | |
16 | > url-template = file://$TESTTMP/final-upload/{basename} |
|
15 | > url-template = file://$TESTTMP/final-upload/{basename} | |
@@ -25,9 +24,36 b' initial setup' | |||||
25 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
24 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
26 | $ cd client |
|
25 | $ cd client | |
27 |
|
26 | |||
|
27 | Test bundles are not generated if formats are not given | |||
|
28 | ======================================================= | |||
|
29 | ||||
|
30 | $ touch noformats | |||
|
31 | $ hg -q commit -A -m 'add noformats' | |||
|
32 | $ hg push | |||
|
33 | pushing to $TESTTMP/server | |||
|
34 | searching for changes | |||
|
35 | clone-bundle auto-generate enabled, but no formats specified: disabling generation | |||
|
36 | adding changesets | |||
|
37 | adding manifests | |||
|
38 | adding file changes | |||
|
39 | added 1 changesets with 1 changes to 1 files | |||
|
40 | $ test -f ../server/.hg/clonebundles.manifest | |||
|
41 | [1] | |||
|
42 | $ hg debugstrip -r tip | |||
|
43 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |||
|
44 | saved backup bundle to $TESTTMP/client/.hg/strip-backup/4823cdad4f38-4b2c3b65-backup.hg | |||
|
45 | $ hg --cwd ../server debugstrip -r tip | |||
|
46 | saved backup bundle to $TESTTMP/server/.hg/strip-backup/4823cdad4f38-4b2c3b65-backup.hg | |||
|
47 | clone-bundle auto-generate enabled, but no formats specified: disabling generation | |||
|
48 | clone-bundle auto-generate enabled, but no formats specified: disabling generation | |||
|
49 | ||||
28 | Test bundles are generated on push |
|
50 | Test bundles are generated on push | |
29 | ================================== |
|
51 | ================================== | |
30 |
|
52 | |||
|
53 | $ cat >> ../server/.hg/hgrc << EOF | |||
|
54 | > [clone-bundles] | |||
|
55 | > auto-generate.formats = v2 | |||
|
56 | > EOF | |||
31 | $ touch foo |
|
57 | $ touch foo | |
32 | $ hg -q commit -A -m 'add foo' |
|
58 | $ hg -q commit -A -m 'add foo' | |
33 | $ touch bar |
|
59 | $ touch bar |
@@ -36,7 +36,7 b' Tests about metadataonlyctx' | |||||
36 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
36 | date: Thu Jan 01 00:00:00 1970 +0000 | |
37 | summary: Changed |
|
37 | summary: Changed | |
38 |
|
38 | |||
39 |
$ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | |
|
39 | $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | grep -E '^RuntimeError' | |
40 | RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1 |
|
40 | RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1 | |
41 |
|
41 | |||
42 | $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'user=foo <foo@example.com>' |
|
42 | $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'user=foo <foo@example.com>' |
@@ -408,7 +408,7 b' test profile-benchmark option' | |||||
408 |
|
408 | |||
409 | Function to check that statprof ran |
|
409 | Function to check that statprof ran | |
410 | $ statprofran () { |
|
410 | $ statprofran () { | |
411 |
> |
|
411 | > grep -E 'Sample count:|No samples recorded' > /dev/null | |
412 | > } |
|
412 | > } | |
413 | $ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.profile-benchmark=yes 2>&1 | statprofran |
|
413 | $ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.profile-benchmark=yes 2>&1 | statprofran | |
414 |
|
414 |
@@ -108,7 +108,7 b' merge file6 from trunk to v1_2' | |||||
108 |
|
108 | |||
109 | cvs rlog output |
|
109 | cvs rlog output | |
110 |
|
110 | |||
111 |
$ cvscall -q rlog proj | |
|
111 | $ cvscall -q rlog proj | grep -E '^(RCS file|revision)' | |
112 | RCS file: $TESTTMP/cvsrepo/proj/file1,v |
|
112 | RCS file: $TESTTMP/cvsrepo/proj/file1,v | |
113 | revision 1.1 |
|
113 | revision 1.1 | |
114 | RCS file: $TESTTMP/cvsrepo/proj/Attic/file2,v |
|
114 | RCS file: $TESTTMP/cvsrepo/proj/Attic/file2,v |
@@ -1,7 +1,7 b'' | |||||
1 | #require svn svn-bindings |
|
1 | #require svn svn-bindings | |
2 |
|
2 | |||
3 | $ filter_svn_output () { |
|
3 | $ filter_svn_output () { | |
4 |
> |
|
4 | > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true | |
5 | > } |
|
5 | > } | |
6 |
|
6 | |||
7 | $ cat <<EOF >> $HGRCPATH |
|
7 | $ cat <<EOF >> $HGRCPATH |
@@ -1,7 +1,7 b'' | |||||
1 | #require svn svn-bindings |
|
1 | #require svn svn-bindings | |
2 |
|
2 | |||
3 | $ filter_svn_output () { |
|
3 | $ filter_svn_output () { | |
4 |
> |
|
4 | > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true | |
5 | > } |
|
5 | > } | |
6 |
|
6 | |||
7 | $ cat >> $HGRCPATH <<EOF |
|
7 | $ cat >> $HGRCPATH <<EOF |
@@ -1649,7 +1649,7 b' We upgrade a repository that is not usin' | |||||
1649 | > [format] |
|
1649 | > [format] | |
1650 | > exp-use-copies-side-data-changeset = yes |
|
1650 | > exp-use-copies-side-data-changeset = yes | |
1651 | > EOF |
|
1651 | > EOF | |
1652 |
$ hg debugformat -v | |
|
1652 | $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' | |
1653 | copies-sdc: no yes no |
|
1653 | copies-sdc: no yes no | |
1654 | revlog-v2: no no no |
|
1654 | revlog-v2: no no no | |
1655 | changelog-v2: no yes no |
|
1655 | changelog-v2: no yes no | |
@@ -1675,7 +1675,7 b' We upgrade a repository that is not usin' | |||||
1675 | > enabled=yes |
|
1675 | > enabled=yes | |
1676 | > numcpus=8 |
|
1676 | > numcpus=8 | |
1677 | > EOF |
|
1677 | > EOF | |
1678 |
$ hg debugformat -v | |
|
1678 | $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' | |
1679 | copies-sdc: no yes no |
|
1679 | copies-sdc: no yes no | |
1680 | revlog-v2: no no no |
|
1680 | revlog-v2: no no no | |
1681 | changelog-v2: no yes no |
|
1681 | changelog-v2: no yes no | |
@@ -2919,14 +2919,14 b' In this case, the file hash from "f-2" i' | |||||
2919 |
|
2919 | |||
2920 | Details on this hash ordering pick: |
|
2920 | Details on this hash ordering pick: | |
2921 |
|
2921 | |||
2922 |
$ hg manifest --debug 'desc("g-1")' | |
|
2922 | $ hg manifest --debug 'desc("g-1")' | grep -E 'd$' | |
2923 | 17ec97e605773eb44a117d1136b3849bcdc1924f 644 d (no-changeset !) |
|
2923 | 17ec97e605773eb44a117d1136b3849bcdc1924f 644 d (no-changeset !) | |
2924 | 5cce88bf349f7c742bb440f2c53f81db9c294279 644 d (changeset !) |
|
2924 | 5cce88bf349f7c742bb440f2c53f81db9c294279 644 d (changeset !) | |
2925 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("g-1")' d |
|
2925 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("g-1")' d | |
2926 | A d |
|
2926 | A d | |
2927 | a (no-changeset no-compatibility !) |
|
2927 | a (no-changeset no-compatibility !) | |
2928 |
|
2928 | |||
2929 |
$ hg manifest --debug 'desc("f-2")' | |
|
2929 | $ hg manifest --debug 'desc("f-2")' | grep -E 'd$' | |
2930 | 7b79e2fe0c8924e0e598a82f048a7b024afa4d96 644 d (no-changeset !) |
|
2930 | 7b79e2fe0c8924e0e598a82f048a7b024afa4d96 644 d (no-changeset !) | |
2931 | ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !) |
|
2931 | ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !) | |
2932 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("f-2")' d |
|
2932 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("f-2")' d |
@@ -32,13 +32,13 b' Check that copies are recorded correctly' | |||||
32 | $ hg init repo |
|
32 | $ hg init repo | |
33 | $ cd repo |
|
33 | $ cd repo | |
34 | #if sidedata |
|
34 | #if sidedata | |
35 |
$ hg debugformat -v | |
|
35 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
36 | format-variant repo config default |
|
36 | format-variant repo config default | |
37 | copies-sdc: yes yes no |
|
37 | copies-sdc: yes yes no | |
38 | revlog-v2: no no no |
|
38 | revlog-v2: no no no | |
39 | changelog-v2: yes yes no |
|
39 | changelog-v2: yes yes no | |
40 | #else |
|
40 | #else | |
41 |
$ hg debugformat -v | |
|
41 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
42 | format-variant repo config default |
|
42 | format-variant repo config default | |
43 | copies-sdc: no no no |
|
43 | copies-sdc: no no no | |
44 | revlog-v2: no no no |
|
44 | revlog-v2: no no no | |
@@ -419,7 +419,7 b' Test upgrading/downgrading to sidedata s' | |||||
419 |
|
419 | |||
420 | downgrading |
|
420 | downgrading | |
421 |
|
421 | |||
422 |
$ hg debugformat -v | |
|
422 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
423 | format-variant repo config default |
|
423 | format-variant repo config default | |
424 | copies-sdc: yes yes no |
|
424 | copies-sdc: yes yes no | |
425 | revlog-v2: no no no |
|
425 | revlog-v2: no no no | |
@@ -445,7 +445,7 b' downgrading' | |||||
445 | processed revlogs: |
|
445 | processed revlogs: | |
446 | - changelog |
|
446 | - changelog | |
447 |
|
447 | |||
448 |
$ hg debugformat -v | |
|
448 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
449 | format-variant repo config default |
|
449 | format-variant repo config default | |
450 | copies-sdc: no no no |
|
450 | copies-sdc: no no no | |
451 | revlog-v2: no no no |
|
451 | revlog-v2: no no no | |
@@ -470,7 +470,7 b' upgrading' | |||||
470 | processed revlogs: |
|
470 | processed revlogs: | |
471 | - changelog |
|
471 | - changelog | |
472 |
|
472 | |||
473 |
$ hg debugformat -v | |
|
473 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
474 | format-variant repo config default |
|
474 | format-variant repo config default | |
475 | copies-sdc: yes yes no |
|
475 | copies-sdc: yes yes no | |
476 | revlog-v2: no no no |
|
476 | revlog-v2: no no no |
@@ -15,16 +15,16 b" Ensure debuild doesn't run the testsuite" | |||||
15 | $ ls *.deb | grep -v 'dbg' |
|
15 | $ ls *.deb | grep -v 'dbg' | |
16 | mercurial_*.deb (glob) |
|
16 | mercurial_*.deb (glob) | |
17 | should have .so and .py |
|
17 | should have .so and .py | |
18 |
$ dpkg --contents mercurial_*.deb | |
|
18 | $ dpkg --contents mercurial_*.deb | grep -E '(localrepo|parsers)' | |
19 | * ./usr/lib/python3/dist-packages/mercurial/cext/parsers*.so (glob) |
|
19 | * ./usr/lib/python3/dist-packages/mercurial/cext/parsers*.so (glob) | |
20 | * ./usr/lib/python3/dist-packages/mercurial/localrepo.py (glob) |
|
20 | * ./usr/lib/python3/dist-packages/mercurial/localrepo.py (glob) | |
21 | * ./usr/lib/python3/dist-packages/mercurial/pure/parsers.py (glob) |
|
21 | * ./usr/lib/python3/dist-packages/mercurial/pure/parsers.py (glob) | |
22 | should have zsh completions |
|
22 | should have zsh completions | |
23 |
$ dpkg --contents mercurial_*.deb | |
|
23 | $ dpkg --contents mercurial_*.deb | grep -E 'zsh.*[^/]$' | |
24 | * ./usr/share/zsh/vendor-completions/_hg (glob) |
|
24 | * ./usr/share/zsh/vendor-completions/_hg (glob) | |
25 | should have chg |
|
25 | should have chg | |
26 |
$ dpkg --contents mercurial_*.deb | |
|
26 | $ dpkg --contents mercurial_*.deb | grep -E 'chg$' | |
27 | * ./usr/bin/chg (glob) |
|
27 | * ./usr/bin/chg (glob) | |
28 | chg should come with a man page |
|
28 | chg should come with a man page | |
29 |
$ dpkg --contents mercurial_*.deb | |
|
29 | $ dpkg --contents mercurial_*.deb | grep -E 'man.*chg' | |
30 | * ./usr/share/man/man1/chg.1.gz (glob) |
|
30 | * ./usr/share/man/man1/chg.1.gz (glob) |
@@ -576,7 +576,7 b' Test cache warming command' | |||||
576 | Test debugcolor |
|
576 | Test debugcolor | |
577 |
|
577 | |||
578 | #if no-windows |
|
578 | #if no-windows | |
579 |
$ hg debugcolor --style --color always | |
|
579 | $ hg debugcolor --style --color always | grep -E 'mode|style|log\.' | |
580 | color mode: 'ansi' |
|
580 | color mode: 'ansi' | |
581 | available style: |
|
581 | available style: | |
582 | \x1b[0;33mlog.changeset\x1b[0m: \x1b[0;33myellow\x1b[0m (esc) |
|
582 | \x1b[0;33mlog.changeset\x1b[0m: \x1b[0;33myellow\x1b[0m (esc) |
@@ -191,7 +191,7 b' Stripping from a transaction' | |||||
191 | $ echo a > a |
|
191 | $ echo a > a | |
192 | $ hg add a |
|
192 | $ hg add a | |
193 | $ hg commit -m a |
|
193 | $ hg commit -m a | |
194 |
$ hg stripintr 2>&1 | |
|
194 | $ hg stripintr 2>&1 | grep -E -v '^(\*\*| )' | |
195 | Traceback (most recent call last): |
|
195 | Traceback (most recent call last): | |
196 | *ProgrammingError: cannot strip from inside a transaction (glob) |
|
196 | *ProgrammingError: cannot strip from inside a transaction (glob) | |
197 |
|
197 | |||
@@ -384,7 +384,7 b' Stripping from a transaction' | |||||
384 |
|
384 | |||
385 | Test programming error failure: |
|
385 | Test programming error failure: | |
386 |
|
386 | |||
387 |
$ hg buggytransaction 2>&1 | |
|
387 | $ hg buggytransaction 2>&1 | grep -E -v '^ ' | |
388 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) |
|
388 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) | |
389 | ** which supports versions unknown of Mercurial. |
|
389 | ** which supports versions unknown of Mercurial. | |
390 | ** Please disable "buggylocking" and try your action again. |
|
390 | ** Please disable "buggylocking" and try your action again. | |
@@ -396,7 +396,7 b' Test programming error failure:' | |||||
396 | Traceback (most recent call last): |
|
396 | Traceback (most recent call last): | |
397 | *ProgrammingError: transaction requires locking (glob) |
|
397 | *ProgrammingError: transaction requires locking (glob) | |
398 |
|
398 | |||
399 |
$ hg programmingerror 2>&1 | |
|
399 | $ hg programmingerror 2>&1 | grep -E -v '^ ' | |
400 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) |
|
400 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) | |
401 | ** which supports versions unknown of Mercurial. |
|
401 | ** which supports versions unknown of Mercurial. | |
402 | ** Please disable "buggylocking" and try your action again. |
|
402 | ** Please disable "buggylocking" and try your action again. |
@@ -10,8 +10,8 b' Set up a v1 repo' | |||||
10 | $ hg init repo |
|
10 | $ hg init repo | |
11 | $ cd repo |
|
11 | $ cd repo | |
12 | $ echo a > a |
|
12 | $ echo a > a | |
13 | $ hg add a |
|
13 | $ touch file-with-somewhat-long-name-to-make-dirstate-v1-bigger-than-v2 | |
14 | $ hg commit -m a |
|
14 | $ hg commit -Aqm a | |
15 | $ hg debugrequires | grep dirstate |
|
15 | $ hg debugrequires | grep dirstate | |
16 | [1] |
|
16 | [1] | |
17 | $ ls -1 .hg/dirstate* |
|
17 | $ ls -1 .hg/dirstate* | |
@@ -22,7 +22,7 b' Copy v1 dirstate' | |||||
22 |
|
22 | |||
23 | Upgrade it to v2 |
|
23 | Upgrade it to v2 | |
24 |
|
24 | |||
25 |
$ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | |
|
25 | $ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | grep -E 'added:|removed:' | |
26 | added: dirstate-v2 |
|
26 | added: dirstate-v2 | |
27 | $ hg debugrequires | grep dirstate |
|
27 | $ hg debugrequires | grep dirstate | |
28 | dirstate-v2 |
|
28 | dirstate-v2 |
@@ -22,10 +22,10 b' built using docker.' | |||||
22 |
|
22 | |||
23 | main deb should have .so but no .py |
|
23 | main deb should have .so but no .py | |
24 | $ ar x mercurial_*.deb |
|
24 | $ ar x mercurial_*.deb | |
25 |
$ tar tf data.tar* | |
|
25 | $ tar tf data.tar* | grep -E '(localrepo|parsers)' | |
26 | ./usr/lib/python2.7/dist-packages/mercurial/parsers*.so (glob) |
|
26 | ./usr/lib/python2.7/dist-packages/mercurial/parsers*.so (glob) | |
27 | mercurial-common should have .py but no .so or .pyc |
|
27 | mercurial-common should have .py but no .so or .pyc | |
28 | $ ar x mercurial-common_*.deb |
|
28 | $ ar x mercurial-common_*.deb | |
29 |
$ tar tf data.tar* | |
|
29 | $ tar tf data.tar* | grep -E '(localrepo|parsers)' | |
30 | ./usr/lib/python2.7/dist-packages/mercurial/pure/parsers.py |
|
30 | ./usr/lib/python2.7/dist-packages/mercurial/pure/parsers.py | |
31 | ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py |
|
31 | ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py |
@@ -1375,7 +1375,7 b' accessed.' | |||||
1375 | throw external 1.0.0 |
|
1375 | throw external 1.0.0 | |
1376 |
|
1376 | |||
1377 | No declared supported version, extension complains: |
|
1377 | No declared supported version, extension complains: | |
1378 |
$ hg --config extensions.throw=throw.py throw 2>&1 | |
|
1378 | $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' | |
1379 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1379 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 | |
1380 | ** which supports versions unknown of Mercurial. |
|
1380 | ** which supports versions unknown of Mercurial. | |
1381 | ** Please disable "throw" and try your action again. |
|
1381 | ** Please disable "throw" and try your action again. | |
@@ -1387,7 +1387,7 b' No declared supported version, extension' | |||||
1387 | empty declaration of supported version, extension complains (but doesn't choke if |
|
1387 | empty declaration of supported version, extension complains (but doesn't choke if | |
1388 | the value is improperly a str instead of bytes): |
|
1388 | the value is improperly a str instead of bytes): | |
1389 | $ echo "testedwith = ''" >> throw.py |
|
1389 | $ echo "testedwith = ''" >> throw.py | |
1390 |
$ hg --config extensions.throw=throw.py throw 2>&1 | |
|
1390 | $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' | |
1391 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1391 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 | |
1392 | ** which supports versions unknown of Mercurial. |
|
1392 | ** which supports versions unknown of Mercurial. | |
1393 | ** Please disable "throw" and try your action again. |
|
1393 | ** Please disable "throw" and try your action again. | |
@@ -1401,7 +1401,7 b' improperly a str instead of bytes):' | |||||
1401 | $ echo 'buglink = "http://example.com/bts"' >> throw.py |
|
1401 | $ echo 'buglink = "http://example.com/bts"' >> throw.py | |
1402 | $ rm -f throw.pyc throw.pyo |
|
1402 | $ rm -f throw.pyc throw.pyo | |
1403 | $ rm -Rf __pycache__ |
|
1403 | $ rm -Rf __pycache__ | |
1404 |
$ hg --config extensions.throw=throw.py throw 2>&1 | |
|
1404 | $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' | |
1405 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1405 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 | |
1406 | ** which supports versions unknown of Mercurial. |
|
1406 | ** which supports versions unknown of Mercurial. | |
1407 | ** Please disable "throw" and try your action again. |
|
1407 | ** Please disable "throw" and try your action again. | |
@@ -1418,7 +1418,7 b' If the extensions declare outdated versi' | |||||
1418 | $ rm -f throw.pyc throw.pyo |
|
1418 | $ rm -f throw.pyc throw.pyo | |
1419 | $ rm -Rf __pycache__ |
|
1419 | $ rm -Rf __pycache__ | |
1420 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1420 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ | |
1421 |
> throw 2>&1 | |
|
1421 | > throw 2>&1 | grep -E '^\*\*' | |
1422 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) |
|
1422 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) | |
1423 | ** which supports versions 1.9 of Mercurial. |
|
1423 | ** which supports versions 1.9 of Mercurial. | |
1424 | ** Please disable "older" and try your action again. |
|
1424 | ** Please disable "older" and try your action again. | |
@@ -1432,7 +1432,7 b' One extension only tested with older, on' | |||||
1432 | $ rm -f older.pyc older.pyo |
|
1432 | $ rm -f older.pyc older.pyo | |
1433 | $ rm -Rf __pycache__ |
|
1433 | $ rm -Rf __pycache__ | |
1434 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1434 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ | |
1435 |
> throw 2>&1 | |
|
1435 | > throw 2>&1 | grep -E '^\*\*' | |
1436 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) |
|
1436 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) | |
1437 | ** which supports versions 1.9 of Mercurial. |
|
1437 | ** which supports versions 1.9 of Mercurial. | |
1438 | ** Please disable "older" and try your action again. |
|
1438 | ** Please disable "older" and try your action again. | |
@@ -1446,7 +1446,7 b' Older extension is tested with current v' | |||||
1446 | $ rm -f older.pyc older.pyo |
|
1446 | $ rm -f older.pyc older.pyo | |
1447 | $ rm -Rf __pycache__ |
|
1447 | $ rm -Rf __pycache__ | |
1448 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1448 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ | |
1449 |
> throw 2>&1 | |
|
1449 | > throw 2>&1 | grep -E '^\*\*' | |
1450 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1450 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 | |
1451 | ** which supports versions 2.1 of Mercurial. |
|
1451 | ** which supports versions 2.1 of Mercurial. | |
1452 | ** Please disable "throw" and try your action again. |
|
1452 | ** Please disable "throw" and try your action again. | |
@@ -1457,7 +1457,7 b' Older extension is tested with current v' | |||||
1457 |
|
1457 | |||
1458 | Ability to point to a different point |
|
1458 | Ability to point to a different point | |
1459 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1459 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ | |
1460 |
> --config ui.supportcontact='Your Local Goat Lenders' throw 2>&1 | |
|
1460 | > --config ui.supportcontact='Your Local Goat Lenders' throw 2>&1 | grep -E '^\*\*' | |
1461 | ** unknown exception encountered, please report by visiting |
|
1461 | ** unknown exception encountered, please report by visiting | |
1462 | ** Your Local Goat Lenders |
|
1462 | ** Your Local Goat Lenders | |
1463 | ** Python * (glob) |
|
1463 | ** Python * (glob) | |
@@ -1472,7 +1472,7 b' Declare the version as supporting this h' | |||||
1472 | > fi |
|
1472 | > fi | |
1473 | $ rm -f throw.pyc throw.pyo |
|
1473 | $ rm -f throw.pyc throw.pyo | |
1474 | $ rm -Rf __pycache__ |
|
1474 | $ rm -Rf __pycache__ | |
1475 |
$ hg --config extensions.throw=throw.py throw 2>&1 | |
|
1475 | $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' | |
1476 | ** unknown exception encountered, please report by visiting |
|
1476 | ** unknown exception encountered, please report by visiting | |
1477 | ** https://mercurial-scm.org/wiki/BugTracker |
|
1477 | ** https://mercurial-scm.org/wiki/BugTracker | |
1478 | ** Python * (glob) |
|
1478 | ** Python * (glob) | |
@@ -1484,7 +1484,7 b' Patch version is ignored during compatib' | |||||
1484 | $ echo "util.version = lambda:b'3.2.2'" >> throw.py |
|
1484 | $ echo "util.version = lambda:b'3.2.2'" >> throw.py | |
1485 | $ rm -f throw.pyc throw.pyo |
|
1485 | $ rm -f throw.pyc throw.pyo | |
1486 | $ rm -Rf __pycache__ |
|
1486 | $ rm -Rf __pycache__ | |
1487 |
$ hg --config extensions.throw=throw.py throw 2>&1 | |
|
1487 | $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' | |
1488 | ** unknown exception encountered, please report by visiting |
|
1488 | ** unknown exception encountered, please report by visiting | |
1489 | ** https://mercurial-scm.org/wiki/BugTracker |
|
1489 | ** https://mercurial-scm.org/wiki/BugTracker | |
1490 | ** Python * (glob) |
|
1490 | ** Python * (glob) | |
@@ -1595,7 +1595,7 b' Refuse to load extensions with minimum v' | |||||
1595 | > util.version = lambda: b'3.6' |
|
1595 | > util.version = lambda: b'3.6' | |
1596 | > minimumhgversion = b'3.7' |
|
1596 | > minimumhgversion = b'3.7' | |
1597 | > EOF |
|
1597 | > EOF | |
1598 |
$ hg --config extensions.minversion=minversion2.py version 2>&1 | |
|
1598 | $ hg --config extensions.minversion=minversion2.py version 2>&1 | grep -E '\(third' | |
1599 | (third party extension minversion requires version 3.7 or newer of Mercurial (current: 3.6); disabling) |
|
1599 | (third party extension minversion requires version 3.7 or newer of Mercurial (current: 3.6); disabling) | |
1600 |
|
1600 | |||
1601 | Can load version that is only off by point release |
|
1601 | Can load version that is only off by point release | |
@@ -1605,7 +1605,7 b' Can load version that is only off by poi' | |||||
1605 | > util.version = lambda: b'3.6.1' |
|
1605 | > util.version = lambda: b'3.6.1' | |
1606 | > minimumhgversion = b'3.6' |
|
1606 | > minimumhgversion = b'3.6' | |
1607 | > EOF |
|
1607 | > EOF | |
1608 |
$ hg --config extensions.minversion=minversion3.py version 2>&1 | |
|
1608 | $ hg --config extensions.minversion=minversion3.py version 2>&1 | grep -E '\(third' | |
1609 | [1] |
|
1609 | [1] | |
1610 |
|
1610 | |||
1611 | Can load minimum version identical to current |
|
1611 | Can load minimum version identical to current | |
@@ -1615,7 +1615,7 b' Can load minimum version identical to cu' | |||||
1615 | > util.version = lambda: b'3.5' |
|
1615 | > util.version = lambda: b'3.5' | |
1616 | > minimumhgversion = b'3.5' |
|
1616 | > minimumhgversion = b'3.5' | |
1617 | > EOF |
|
1617 | > EOF | |
1618 |
$ hg --config extensions.minversion=minversion3.py version 2>&1 | |
|
1618 | $ hg --config extensions.minversion=minversion3.py version 2>&1 | grep -E '\(third' | |
1619 | [1] |
|
1619 | [1] | |
1620 |
|
1620 | |||
1621 | Don't explode on py3 with a bad version number (both str vs bytes, and not enough |
|
1621 | Don't explode on py3 with a bad version number (both str vs bytes, and not enough |
@@ -215,7 +215,7 b' Ensure the data got to the server OK' | |||||
215 | raise error.Abort(msg) |
|
215 | raise error.Abort(msg) | |
216 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
|
216 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. | |
217 | *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. |
|
217 | *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. | |
218 |
$ hg st 2>&1 | |
|
218 | $ hg st 2>&1 | grep -E 'cannot register multiple processors|flagprocessorext' | |
219 | File "*/tests/flagprocessorext.py", line *, in extsetup (glob) |
|
219 | File "*/tests/flagprocessorext.py", line *, in extsetup (glob) | |
220 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
|
220 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. | |
221 | *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. |
|
221 | *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. |
@@ -358,7 +358,7 b' Status should be consistent for both sys' | |||||
358 | $ hg status |
|
358 | $ hg status | |
359 | heads mismatch, rebuilding dagcache |
|
359 | heads mismatch, rebuilding dagcache | |
360 | M beta |
|
360 | M beta | |
361 |
$ git status | |
|
361 | $ git status | grep -E -v '^$|^ \(use ' | |
362 | On branch master |
|
362 | On branch master | |
363 | Changes not staged for commit: |
|
363 | Changes not staged for commit: | |
364 | modified: beta |
|
364 | modified: beta |
@@ -799,7 +799,7 b' Disabled extension gets suggested' | |||||
799 |
|
799 | |||
800 | Checking that help adapts based on the config: |
|
800 | Checking that help adapts based on the config: | |
801 |
|
801 | |||
802 |
$ hg help diff --config ui.tweakdefaults=true | |
|
802 | $ hg help diff --config ui.tweakdefaults=true | grep -E -e '^ *(-g|config)' | |
803 | -g --[no-]git use git extended diff format (default: on from |
|
803 | -g --[no-]git use git extended diff format (default: on from | |
804 | config) |
|
804 | config) | |
805 |
|
805 | |||
@@ -1585,7 +1585,7 b' Help subsection:' | |||||
1585 | Show nested definitions |
|
1585 | Show nested definitions | |
1586 | ("profiling.type"[break]"ls"[break]"stat"[break]) |
|
1586 | ("profiling.type"[break]"ls"[break]"stat"[break]) | |
1587 |
|
1587 | |||
1588 |
$ hg help config.type | |
|
1588 | $ hg help config.type | grep -E '^$'|wc -l | |
1589 | \s*3 (re) |
|
1589 | \s*3 (re) | |
1590 |
|
1590 | |||
1591 | $ hg help config.profiling.type.ls |
|
1591 | $ hg help config.profiling.type.ls | |
@@ -1598,7 +1598,7 b' Show nested definitions' | |||||
1598 |
|
1598 | |||
1599 | Separate sections from subsections |
|
1599 | Separate sections from subsections | |
1600 |
|
1600 | |||
1601 |
$ hg help config.format | |
|
1601 | $ hg help config.format | grep -E '^ ("|-)|^\s*$' | uniq | |
1602 | "format" |
|
1602 | "format" | |
1603 | -------- |
|
1603 | -------- | |
1604 |
|
1604 | |||
@@ -1660,7 +1660,7 b' note to use help -c for general hg help ' | |||||
1660 |
|
1660 | |||
1661 | Test templating help |
|
1661 | Test templating help | |
1662 |
|
1662 | |||
1663 |
$ hg help templating | |
|
1663 | $ hg help templating | grep -E '(desc|diffstat|firstline|nonempty) ' | |
1664 | desc String. The text of the changeset description. |
|
1664 | desc String. The text of the changeset description. | |
1665 | diffstat String. Statistics of changes with the following format: |
|
1665 | diffstat String. Statistics of changes with the following format: | |
1666 | firstline Any text. Returns the first line of text. |
|
1666 | firstline Any text. Returns the first line of text. | |
@@ -1701,12 +1701,12 b' Test help hooks' | |||||
1701 |
|
1701 | |||
1702 | help -c should only show debug --debug |
|
1702 | help -c should only show debug --debug | |
1703 |
|
1703 | |||
1704 |
$ hg help -c --debug| |
|
1704 | $ hg help -c --debug|grep -E debug|wc -l|grep -E '^\s*0\s*$' | |
1705 | [1] |
|
1705 | [1] | |
1706 |
|
1706 | |||
1707 | help -c should only show deprecated for -v |
|
1707 | help -c should only show deprecated for -v | |
1708 |
|
1708 | |||
1709 |
$ hg help -c -v| |
|
1709 | $ hg help -c -v|grep -E DEPRECATED|wc -l|grep -E '^\s*0\s*$' | |
1710 | [1] |
|
1710 | [1] | |
1711 |
|
1711 | |||
1712 | Test -s / --system |
|
1712 | Test -s / --system | |
@@ -1720,11 +1720,11 b' Test -s / --system' | |||||
1720 |
|
1720 | |||
1721 | Test -e / -c / -k combinations |
|
1721 | Test -e / -c / -k combinations | |
1722 |
|
1722 | |||
1723 |
$ hg help -c| |
|
1723 | $ hg help -c|grep -E '^[A-Z].*:|^ debug' | |
1724 | Commands: |
|
1724 | Commands: | |
1725 |
$ hg help -e| |
|
1725 | $ hg help -e|grep -E '^[A-Z].*:|^ debug' | |
1726 | Extensions: |
|
1726 | Extensions: | |
1727 |
$ hg help -k| |
|
1727 | $ hg help -k|grep -E '^[A-Z].*:|^ debug' | |
1728 | Topics: |
|
1728 | Topics: | |
1729 | Commands: |
|
1729 | Commands: | |
1730 | Extensions: |
|
1730 | Extensions: | |
@@ -1735,11 +1735,11 b' Test -e / -c / -k combinations' | |||||
1735 | [10] |
|
1735 | [10] | |
1736 | $ hg help -e schemes |head -1 |
|
1736 | $ hg help -e schemes |head -1 | |
1737 | schemes extension - extend schemes with shortcuts to repository swarms |
|
1737 | schemes extension - extend schemes with shortcuts to repository swarms | |
1738 |
$ hg help -c -k dates | |
|
1738 | $ hg help -c -k dates |grep -E '^(Topics|Extensions|Commands):' | |
1739 | Commands: |
|
1739 | Commands: | |
1740 |
$ hg help -e -k a | |
|
1740 | $ hg help -e -k a |grep -E '^(Topics|Extensions|Commands):' | |
1741 | Extensions: |
|
1741 | Extensions: | |
1742 |
$ hg help -e -c -k date | |
|
1742 | $ hg help -e -c -k date |grep -E '^(Topics|Extensions|Commands):' | |
1743 | Extensions: |
|
1743 | Extensions: | |
1744 | Commands: |
|
1744 | Commands: | |
1745 | $ hg help -c commit > /dev/null |
|
1745 | $ hg help -c commit > /dev/null |
@@ -69,7 +69,7 b' repo page should send CSP by default, in' | |||||
69 |
|
69 | |||
70 | nonce should not be added to html if CSP doesn't use it |
|
70 | nonce should not be added to html if CSP doesn't use it | |
71 |
|
71 | |||
72 |
$ get-with-headers.py localhost:$HGPORT repo1/graph/tip | |
|
72 | $ get-with-headers.py localhost:$HGPORT repo1/graph/tip | grep -E 'content-security-policy|<script' | |
73 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> |
|
73 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> | |
74 | <script type="text/javascript"> |
|
74 | <script type="text/javascript"> | |
75 | <script type="text/javascript"> |
|
75 | <script type="text/javascript"> | |
@@ -104,7 +104,7 b' repo page should have nonce, no ETag' | |||||
104 |
|
104 | |||
105 | nonce should be added to html when used |
|
105 | nonce should be added to html when used | |
106 |
|
106 | |||
107 |
$ get-with-headers.py localhost:$HGPORT repo1/graph/tip content-security-policy | |
|
107 | $ get-with-headers.py localhost:$HGPORT repo1/graph/tip content-security-policy | grep -E 'content-security-policy|<script' | |
108 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) |
|
108 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) | |
109 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> |
|
109 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> | |
110 | <script type="text/javascript" nonce="*"> (glob) |
|
110 | <script type="text/javascript" nonce="*"> (glob) | |
@@ -125,7 +125,7 b' static page sends CSP' | |||||
125 |
|
125 | |||
126 | nonce included in <script> and headers |
|
126 | nonce included in <script> and headers | |
127 |
|
127 | |||
128 |
$ get-with-headers.py localhost:$HGPORT graph/tip content-security-policy | |
|
128 | $ get-with-headers.py localhost:$HGPORT graph/tip content-security-policy | grep -E 'content-security-policy|<script' | |
129 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) |
|
129 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) | |
130 | <script type="text/javascript" src="/static/mercurial.js"></script> |
|
130 | <script type="text/javascript" src="/static/mercurial.js"></script> | |
131 | <script type="text/javascript" nonce="*"> (glob) |
|
131 | <script type="text/javascript" nonce="*"> (glob) |
@@ -318,7 +318,7 b' set up hgweb with git diffs + noprefix' | |||||
318 | patch header and diffstat |
|
318 | patch header and diffstat | |
319 |
|
319 | |||
320 | $ get-with-headers.py localhost:$HGPORT 'rev/0' \ |
|
320 | $ get-with-headers.py localhost:$HGPORT 'rev/0' \ | |
321 |
> | |
|
321 | > | grep -E 'files changed|---|\+\+\+' | |
322 | 2 files changed, 2 insertions(+), 0 deletions(-) |
|
322 | 2 files changed, 2 insertions(+), 0 deletions(-) | |
323 | <span id="l1.2" class="minusline">--- /dev/null</span><a href="#l1.2"></a> |
|
323 | <span id="l1.2" class="minusline">--- /dev/null</span><a href="#l1.2"></a> | |
324 | <span id="l1.3" class="plusline">+++ a</span><a href="#l1.3"></a> |
|
324 | <span id="l1.3" class="plusline">+++ a</span><a href="#l1.3"></a> |
@@ -37,7 +37,7 b' Set up the repo' | |||||
37 |
|
37 | |||
38 | (De)referencing symbolic revisions (paper) |
|
38 | (De)referencing symbolic revisions (paper) | |
39 |
|
39 | |||
40 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper' | |
|
40 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper' | grep -E $REVLINKS | |
41 | <li><a href="/graph/tip?style=paper">graph</a></li> |
|
41 | <li><a href="/graph/tip?style=paper">graph</a></li> | |
42 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
|
42 | <li><a href="/rev/tip?style=paper">changeset</a></li> | |
43 | <li><a href="/file/tip?style=paper">browse</a></li> |
|
43 | <li><a href="/file/tip?style=paper">browse</a></li> | |
@@ -52,7 +52,7 b' Set up the repo' | |||||
52 | <a href="/shortlog/tip?revcount=120&style=paper">more</a> |
|
52 | <a href="/shortlog/tip?revcount=120&style=paper">more</a> | |
53 | | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> |
|
53 | | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> | |
54 |
|
54 | |||
55 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=paper' | |
|
55 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=paper' | grep -E $REVLINKS | |
56 | <li><a href="/shortlog/tip?style=paper">log</a></li> |
|
56 | <li><a href="/shortlog/tip?style=paper">log</a></li> | |
57 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
|
57 | <li><a href="/rev/tip?style=paper">changeset</a></li> | |
58 | <li><a href="/file/tip?style=paper">browse</a></li> |
|
58 | <li><a href="/file/tip?style=paper">browse</a></li> | |
@@ -67,7 +67,7 b' Set up the repo' | |||||
67 | <a href="/graph/tip?revcount=120&style=paper">more</a> |
|
67 | <a href="/graph/tip?revcount=120&style=paper">more</a> | |
68 | | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> |
|
68 | | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> | |
69 |
|
69 | |||
70 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=paper' | |
|
70 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=paper' | grep -E $REVLINKS | |
71 | <li><a href="/shortlog/tip?style=paper">log</a></li> |
|
71 | <li><a href="/shortlog/tip?style=paper">log</a></li> | |
72 | <li><a href="/graph/tip?style=paper">graph</a></li> |
|
72 | <li><a href="/graph/tip?style=paper">graph</a></li> | |
73 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
|
73 | <li><a href="/rev/tip?style=paper">changeset</a></li> | |
@@ -77,24 +77,24 b' Set up the repo' | |||||
77 | <a href="/file/tip/dir/?style=paper"> |
|
77 | <a href="/file/tip/dir/?style=paper"> | |
78 | <a href="/file/tip/foo?style=paper"> |
|
78 | <a href="/file/tip/foo?style=paper"> | |
79 |
|
79 | |||
80 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=paper' | |
|
80 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=paper' | grep -E $REVLINKS | |
81 | <a href="/shortlog/default?style=paper" class="open"> |
|
81 | <a href="/shortlog/default?style=paper" class="open"> | |
82 | <a href="/shortlog/9d8c40cba617?style=paper" class="open"> |
|
82 | <a href="/shortlog/9d8c40cba617?style=paper" class="open"> | |
83 |
|
83 | |||
84 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=paper' | |
|
84 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=paper' | grep -E $REVLINKS | |
85 | <a href="/rev/tip?style=paper"> |
|
85 | <a href="/rev/tip?style=paper"> | |
86 | <a href="/rev/9d8c40cba617?style=paper"> |
|
86 | <a href="/rev/9d8c40cba617?style=paper"> | |
87 |
|
87 | |||
88 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=paper' | |
|
88 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=paper' | grep -E $REVLINKS | |
89 | <a href="/rev/xyzzy?style=paper"> |
|
89 | <a href="/rev/xyzzy?style=paper"> | |
90 | <a href="/rev/a7c1559b7bba?style=paper"> |
|
90 | <a href="/rev/a7c1559b7bba?style=paper"> | |
91 |
|
91 | |||
92 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper&rev=all()' | |
|
92 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper&rev=all()' | grep -E $REVLINKS | |
93 | <a href="/rev/9d8c40cba617?style=paper">third</a> |
|
93 | <a href="/rev/9d8c40cba617?style=paper">third</a> | |
94 | <a href="/rev/a7c1559b7bba?style=paper">second</a> |
|
94 | <a href="/rev/a7c1559b7bba?style=paper">second</a> | |
95 | <a href="/rev/43c799df6e75?style=paper">first</a> |
|
95 | <a href="/rev/43c799df6e75?style=paper">first</a> | |
96 |
|
96 | |||
97 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=paper' | |
|
97 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=paper' | grep -E $REVLINKS | |
98 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
98 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
99 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
99 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
100 | <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li> |
|
100 | <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li> | |
@@ -105,7 +105,7 b' Set up the repo' | |||||
105 | <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td> |
|
105 | <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td> | |
106 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=paper">foo</a> </td> |
|
106 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=paper">foo</a> </td> | |
107 |
|
107 | |||
108 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=paper' | |
|
108 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=paper' | grep -E $REVLINKS | |
109 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
109 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
110 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
110 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
111 | <li><a href="/file/xyzzy?style=paper">browse</a></li> |
|
111 | <li><a href="/file/xyzzy?style=paper">browse</a></li> | |
@@ -119,7 +119,7 b' Set up the repo' | |||||
119 | <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a> |
|
119 | <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a> | |
120 | | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> |
|
120 | | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> | |
121 |
|
121 | |||
122 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=paper' | |
|
122 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=paper' | grep -E $REVLINKS | |
123 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
123 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
124 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
124 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
125 | <li><a href="/file/xyzzy?style=paper">browse</a></li> |
|
125 | <li><a href="/file/xyzzy?style=paper">browse</a></li> | |
@@ -133,7 +133,7 b' Set up the repo' | |||||
133 | <a href="/graph/xyzzy?revcount=120&style=paper">more</a> |
|
133 | <a href="/graph/xyzzy?revcount=120&style=paper">more</a> | |
134 | | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> |
|
134 | | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> | |
135 |
|
135 | |||
136 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=paper' | |
|
136 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=paper' | grep -E $REVLINKS | |
137 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
137 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
138 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
138 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
139 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
139 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
@@ -143,7 +143,7 b' Set up the repo' | |||||
143 | <a href="/file/xyzzy/dir/?style=paper"> |
|
143 | <a href="/file/xyzzy/dir/?style=paper"> | |
144 | <a href="/file/xyzzy/foo?style=paper"> |
|
144 | <a href="/file/xyzzy/foo?style=paper"> | |
145 |
|
145 | |||
146 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=paper' | |
|
146 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=paper' | grep -E $REVLINKS | |
147 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
147 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
148 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
148 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
149 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
149 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
@@ -158,7 +158,7 b' Set up the repo' | |||||
158 | <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> |
|
158 | <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> | |
159 | <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> |
|
159 | <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> | |
160 |
|
160 | |||
161 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=paper' | |
|
161 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=paper' | grep -E $REVLINKS | |
162 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> |
|
162 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> | |
163 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> |
|
163 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> | |
164 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
164 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
@@ -181,7 +181,7 b' Set up the repo' | |||||
181 | <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a> |
|
181 | <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a> | |
182 | | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a> |
|
182 | | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a> | |
183 |
|
183 | |||
184 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=paper' | |
|
184 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=paper' | grep -E $REVLINKS | |
185 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
185 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
186 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
186 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
187 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
187 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
@@ -205,7 +205,7 b' Set up the repo' | |||||
205 | <a href="/diff/a7c1559b7bba/foo?style=paper">diff</a> |
|
205 | <a href="/diff/a7c1559b7bba/foo?style=paper">diff</a> | |
206 | <a href="/rev/a7c1559b7bba?style=paper">changeset</a> |
|
206 | <a href="/rev/a7c1559b7bba?style=paper">changeset</a> | |
207 |
|
207 | |||
208 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=paper' | |
|
208 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=paper' | grep -E $REVLINKS | |
209 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
209 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
210 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
210 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
211 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
211 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
@@ -220,7 +220,7 b' Set up the repo' | |||||
220 | <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> |
|
220 | <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> | |
221 | <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> |
|
221 | <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> | |
222 |
|
222 | |||
223 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=paper' | |
|
223 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=paper' | grep -E $REVLINKS | |
224 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
224 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> | |
225 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
225 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> | |
226 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
226 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> | |
@@ -237,7 +237,7 b' Set up the repo' | |||||
237 |
|
237 | |||
238 | (De)referencing symbolic revisions (coal) |
|
238 | (De)referencing symbolic revisions (coal) | |
239 |
|
239 | |||
240 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal' | |
|
240 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal' | grep -E $REVLINKS | |
241 | <li><a href="/graph/tip?style=coal">graph</a></li> |
|
241 | <li><a href="/graph/tip?style=coal">graph</a></li> | |
242 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
|
242 | <li><a href="/rev/tip?style=coal">changeset</a></li> | |
243 | <li><a href="/file/tip?style=coal">browse</a></li> |
|
243 | <li><a href="/file/tip?style=coal">browse</a></li> | |
@@ -252,7 +252,7 b' Set up the repo' | |||||
252 | <a href="/shortlog/tip?revcount=120&style=coal">more</a> |
|
252 | <a href="/shortlog/tip?revcount=120&style=coal">more</a> | |
253 | | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> |
|
253 | | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> | |
254 |
|
254 | |||
255 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=coal' | |
|
255 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=coal' | grep -E $REVLINKS | |
256 | <li><a href="/shortlog/tip?style=coal">log</a></li> |
|
256 | <li><a href="/shortlog/tip?style=coal">log</a></li> | |
257 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
|
257 | <li><a href="/rev/tip?style=coal">changeset</a></li> | |
258 | <li><a href="/file/tip?style=coal">browse</a></li> |
|
258 | <li><a href="/file/tip?style=coal">browse</a></li> | |
@@ -267,7 +267,7 b' Set up the repo' | |||||
267 | <a href="/graph/tip?revcount=120&style=coal">more</a> |
|
267 | <a href="/graph/tip?revcount=120&style=coal">more</a> | |
268 | | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> |
|
268 | | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> | |
269 |
|
269 | |||
270 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=coal' | |
|
270 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=coal' | grep -E $REVLINKS | |
271 | <li><a href="/shortlog/tip?style=coal">log</a></li> |
|
271 | <li><a href="/shortlog/tip?style=coal">log</a></li> | |
272 | <li><a href="/graph/tip?style=coal">graph</a></li> |
|
272 | <li><a href="/graph/tip?style=coal">graph</a></li> | |
273 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
|
273 | <li><a href="/rev/tip?style=coal">changeset</a></li> | |
@@ -277,24 +277,24 b' Set up the repo' | |||||
277 | <a href="/file/tip/dir/?style=coal"> |
|
277 | <a href="/file/tip/dir/?style=coal"> | |
278 | <a href="/file/tip/foo?style=coal"> |
|
278 | <a href="/file/tip/foo?style=coal"> | |
279 |
|
279 | |||
280 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=coal' | |
|
280 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=coal' | grep -E $REVLINKS | |
281 | <a href="/shortlog/default?style=coal" class="open"> |
|
281 | <a href="/shortlog/default?style=coal" class="open"> | |
282 | <a href="/shortlog/9d8c40cba617?style=coal" class="open"> |
|
282 | <a href="/shortlog/9d8c40cba617?style=coal" class="open"> | |
283 |
|
283 | |||
284 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=coal' | |
|
284 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=coal' | grep -E $REVLINKS | |
285 | <a href="/rev/tip?style=coal"> |
|
285 | <a href="/rev/tip?style=coal"> | |
286 | <a href="/rev/9d8c40cba617?style=coal"> |
|
286 | <a href="/rev/9d8c40cba617?style=coal"> | |
287 |
|
287 | |||
288 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=coal' | |
|
288 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=coal' | grep -E $REVLINKS | |
289 | <a href="/rev/xyzzy?style=coal"> |
|
289 | <a href="/rev/xyzzy?style=coal"> | |
290 | <a href="/rev/a7c1559b7bba?style=coal"> |
|
290 | <a href="/rev/a7c1559b7bba?style=coal"> | |
291 |
|
291 | |||
292 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal&rev=all()' | |
|
292 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal&rev=all()' | grep -E $REVLINKS | |
293 | <a href="/rev/9d8c40cba617?style=coal">third</a> |
|
293 | <a href="/rev/9d8c40cba617?style=coal">third</a> | |
294 | <a href="/rev/a7c1559b7bba?style=coal">second</a> |
|
294 | <a href="/rev/a7c1559b7bba?style=coal">second</a> | |
295 | <a href="/rev/43c799df6e75?style=coal">first</a> |
|
295 | <a href="/rev/43c799df6e75?style=coal">first</a> | |
296 |
|
296 | |||
297 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=coal' | |
|
297 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=coal' | grep -E $REVLINKS | |
298 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
298 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
299 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
299 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
300 | <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li> |
|
300 | <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li> | |
@@ -305,7 +305,7 b' Set up the repo' | |||||
305 | <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td> |
|
305 | <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td> | |
306 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=coal">foo</a> </td> |
|
306 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=coal">foo</a> </td> | |
307 |
|
307 | |||
308 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=coal' | |
|
308 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=coal' | grep -E $REVLINKS | |
309 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
309 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
310 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
310 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
311 | <li><a href="/file/xyzzy?style=coal">browse</a></li> |
|
311 | <li><a href="/file/xyzzy?style=coal">browse</a></li> | |
@@ -319,7 +319,7 b' Set up the repo' | |||||
319 | <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a> |
|
319 | <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a> | |
320 | | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> |
|
320 | | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> | |
321 |
|
321 | |||
322 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=coal' | |
|
322 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=coal' | grep -E $REVLINKS | |
323 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
323 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
324 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
324 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
325 | <li><a href="/file/xyzzy?style=coal">browse</a></li> |
|
325 | <li><a href="/file/xyzzy?style=coal">browse</a></li> | |
@@ -333,7 +333,7 b' Set up the repo' | |||||
333 | <a href="/graph/xyzzy?revcount=120&style=coal">more</a> |
|
333 | <a href="/graph/xyzzy?revcount=120&style=coal">more</a> | |
334 | | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> |
|
334 | | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> | |
335 |
|
335 | |||
336 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=coal' | |
|
336 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=coal' | grep -E $REVLINKS | |
337 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
337 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
338 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
338 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
339 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
339 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
@@ -343,7 +343,7 b' Set up the repo' | |||||
343 | <a href="/file/xyzzy/dir/?style=coal"> |
|
343 | <a href="/file/xyzzy/dir/?style=coal"> | |
344 | <a href="/file/xyzzy/foo?style=coal"> |
|
344 | <a href="/file/xyzzy/foo?style=coal"> | |
345 |
|
345 | |||
346 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=coal' | |
|
346 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=coal' | grep -E $REVLINKS | |
347 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
347 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
348 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
348 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
349 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
349 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
@@ -358,7 +358,7 b' Set up the repo' | |||||
358 | <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> |
|
358 | <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> | |
359 | <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> |
|
359 | <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> | |
360 |
|
360 | |||
361 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=coal' | |
|
361 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=coal' | grep -E $REVLINKS | |
362 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> |
|
362 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> | |
363 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> |
|
363 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> | |
364 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
364 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
@@ -381,7 +381,7 b' Set up the repo' | |||||
381 | <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a> |
|
381 | <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a> | |
382 | | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a> |
|
382 | | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a> | |
383 |
|
383 | |||
384 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=coal' | |
|
384 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=coal' | grep -E $REVLINKS | |
385 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
385 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
386 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
386 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
387 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
387 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
@@ -405,7 +405,7 b' Set up the repo' | |||||
405 | <a href="/diff/a7c1559b7bba/foo?style=coal">diff</a> |
|
405 | <a href="/diff/a7c1559b7bba/foo?style=coal">diff</a> | |
406 | <a href="/rev/a7c1559b7bba?style=coal">changeset</a> |
|
406 | <a href="/rev/a7c1559b7bba?style=coal">changeset</a> | |
407 |
|
407 | |||
408 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=coal' | |
|
408 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=coal' | grep -E $REVLINKS | |
409 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
409 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
410 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
410 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
411 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
411 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
@@ -420,7 +420,7 b' Set up the repo' | |||||
420 | <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> |
|
420 | <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> | |
421 | <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> |
|
421 | <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> | |
422 |
|
422 | |||
423 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=coal' | |
|
423 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=coal' | grep -E $REVLINKS | |
424 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
424 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> | |
425 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
425 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> | |
426 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
426 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> | |
@@ -437,7 +437,7 b' Set up the repo' | |||||
437 |
|
437 | |||
438 | (De)referencing symbolic revisions (gitweb) |
|
438 | (De)referencing symbolic revisions (gitweb) | |
439 |
|
439 | |||
440 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=gitweb' | |
|
440 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=gitweb' | grep -E $REVLINKS | |
441 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
|
441 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | | |
442 | <a class="list" href="/rev/9d8c40cba617?style=gitweb"> |
|
442 | <a class="list" href="/rev/9d8c40cba617?style=gitweb"> | |
443 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | |
|
443 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | | |
@@ -457,7 +457,7 b' Set up the repo' | |||||
457 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
457 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | | |
458 | <a href="/file/9d8c40cba617?style=gitweb">files</a> |
|
458 | <a href="/file/9d8c40cba617?style=gitweb">files</a> | |
459 |
|
459 | |||
460 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb' | |
|
460 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb' | grep -E $REVLINKS | |
461 | <a href="/log/tip?style=gitweb">changelog</a> | |
|
461 | <a href="/log/tip?style=gitweb">changelog</a> | | |
462 | <a href="/graph/tip?style=gitweb">graph</a> | |
|
462 | <a href="/graph/tip?style=gitweb">graph</a> | | |
463 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
|
463 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | | |
@@ -473,7 +473,7 b' Set up the repo' | |||||
473 | <a href="/file/43c799df6e75?style=gitweb">files</a> |
|
473 | <a href="/file/43c799df6e75?style=gitweb">files</a> | |
474 | <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> |
|
474 | <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> | |
475 |
|
475 | |||
476 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=gitweb' | |
|
476 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=gitweb' | grep -E $REVLINKS | |
477 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | |
|
477 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | | |
478 | <a href="/graph/tip?style=gitweb">graph</a> | |
|
478 | <a href="/graph/tip?style=gitweb">graph</a> | | |
479 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
|
479 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | | |
@@ -486,7 +486,7 b' Set up the repo' | |||||
486 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> |
|
486 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> | |
487 | <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> |
|
487 | <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> | |
488 |
|
488 | |||
489 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=gitweb' | |
|
489 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=gitweb' | grep -E $REVLINKS | |
490 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | |
|
490 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | | |
491 | <a href="/log/tip?style=gitweb">changelog</a> | |
|
491 | <a href="/log/tip?style=gitweb">changelog</a> | | |
492 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
|
492 | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | | |
@@ -500,25 +500,25 b' Set up the repo' | |||||
500 | <a href="/graph/tip?revcount=120&style=gitweb">more</a> |
|
500 | <a href="/graph/tip?revcount=120&style=gitweb">more</a> | |
501 | | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> |
|
501 | | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> | |
502 |
|
502 | |||
503 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=gitweb' | |
|
503 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=gitweb' | grep -E $REVLINKS | |
504 | <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td> |
|
504 | <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td> | |
505 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | |
|
505 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | | |
506 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
506 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | | |
507 | <a href="/file/9d8c40cba617?style=gitweb">files</a> |
|
507 | <a href="/file/9d8c40cba617?style=gitweb">files</a> | |
508 |
|
508 | |||
509 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=gitweb' | |
|
509 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=gitweb' | grep -E $REVLINKS | |
510 | <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td> |
|
510 | <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td> | |
511 | <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> | |
|
511 | <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> | | |
512 | <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> | |
|
512 | <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> | | |
513 | <a href="/file/a7c1559b7bba?style=gitweb">files</a> |
|
513 | <a href="/file/a7c1559b7bba?style=gitweb">files</a> | |
514 |
|
514 | |||
515 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=gitweb' | |
|
515 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=gitweb' | grep -E $REVLINKS | |
516 | <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td> |
|
516 | <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td> | |
517 | <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> | |
|
517 | <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> | | |
518 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
518 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | | |
519 | <a href="/file/9d8c40cba617?style=gitweb">files</a> |
|
519 | <a href="/file/9d8c40cba617?style=gitweb">files</a> | |
520 |
|
520 | |||
521 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=gitweb' | |
|
521 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=gitweb' | grep -E $REVLINKS | |
522 | <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> | |
|
522 | <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> | | |
523 | <a href="/file/tip/dir?style=gitweb">dir</a> |
|
523 | <a href="/file/tip/dir?style=gitweb">dir</a> | |
524 | <a href="/file/tip/dir/?style=gitweb"></a> |
|
524 | <a href="/file/tip/dir/?style=gitweb"></a> | |
@@ -528,7 +528,7 b' Set up the repo' | |||||
528 | <a href="/log/tip/foo?style=gitweb">revisions</a> | |
|
528 | <a href="/log/tip/foo?style=gitweb">revisions</a> | | |
529 | <a href="/annotate/tip/foo?style=gitweb">annotate</a> |
|
529 | <a href="/annotate/tip/foo?style=gitweb">annotate</a> | |
530 |
|
530 | |||
531 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb&rev=all()' | |
|
531 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb&rev=all()' | grep -E $REVLINKS | |
532 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
|
532 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
533 | <a class="title" href="/rev/9d8c40cba617?style=gitweb"> |
|
533 | <a class="title" href="/rev/9d8c40cba617?style=gitweb"> | |
534 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/> |
|
534 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/> | |
@@ -537,7 +537,7 b' Set up the repo' | |||||
537 | <a class="title" href="/rev/43c799df6e75?style=gitweb"> |
|
537 | <a class="title" href="/rev/43c799df6e75?style=gitweb"> | |
538 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> |
|
538 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> | |
539 |
|
539 | |||
540 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=gitweb' | |
|
540 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=gitweb' | grep -E $REVLINKS | |
541 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
541 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | | |
542 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
542 | <a href="/log/xyzzy?style=gitweb">changelog</a> | | |
543 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
|
543 | <a href="/graph/xyzzy?style=gitweb">graph</a> | | |
@@ -554,7 +554,7 b' Set up the repo' | |||||
554 | <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> | |
|
554 | <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> | | |
555 | <a href="/log/a7c1559b7bba/foo?style=gitweb">revisions</a> |
|
555 | <a href="/log/a7c1559b7bba/foo?style=gitweb">revisions</a> | |
556 |
|
556 | |||
557 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=gitweb' | |
|
557 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=gitweb' | grep -E $REVLINKS | |
558 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
558 | <a href="/log/xyzzy?style=gitweb">changelog</a> | | |
559 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
|
559 | <a href="/graph/xyzzy?style=gitweb">graph</a> | | |
560 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | |
|
560 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | | |
@@ -567,7 +567,7 b' Set up the repo' | |||||
567 | <a href="/file/43c799df6e75?style=gitweb">files</a> |
|
567 | <a href="/file/43c799df6e75?style=gitweb">files</a> | |
568 | <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> |
|
568 | <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> | |
569 |
|
569 | |||
570 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=gitweb' | |
|
570 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=gitweb' | grep -E $REVLINKS | |
571 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
571 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | | |
572 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
|
572 | <a href="/graph/xyzzy?style=gitweb">graph</a> | | |
573 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | |
|
573 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | | |
@@ -578,7 +578,7 b' Set up the repo' | |||||
578 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> |
|
578 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> | |
579 | <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> |
|
579 | <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> | |
580 |
|
580 | |||
581 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=gitweb' | |
|
581 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=gitweb' | grep -E $REVLINKS | |
582 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
582 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | | |
583 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
583 | <a href="/log/xyzzy?style=gitweb">changelog</a> | | |
584 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | |
|
584 | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | | |
@@ -591,7 +591,7 b' Set up the repo' | |||||
591 | <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a> |
|
591 | <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a> | |
592 | | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> |
|
592 | | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> | |
593 |
|
593 | |||
594 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=gitweb' | |
|
594 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=gitweb' | grep -E $REVLINKS | |
595 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> | |
|
595 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> | | |
596 | <a href="/file/xyzzy/dir?style=gitweb">dir</a> |
|
596 | <a href="/file/xyzzy/dir?style=gitweb">dir</a> | |
597 | <a href="/file/xyzzy/dir/?style=gitweb"></a> |
|
597 | <a href="/file/xyzzy/dir/?style=gitweb"></a> | |
@@ -601,7 +601,7 b' Set up the repo' | |||||
601 | <a href="/log/xyzzy/foo?style=gitweb">revisions</a> | |
|
601 | <a href="/log/xyzzy/foo?style=gitweb">revisions</a> | | |
602 | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> |
|
602 | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> | |
603 |
|
603 | |||
604 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=gitweb' | |
|
604 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=gitweb' | grep -E $REVLINKS | |
605 | <a href="/file/xyzzy/?style=gitweb">files</a> | |
|
605 | <a href="/file/xyzzy/?style=gitweb">files</a> | | |
606 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
606 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | | |
607 | <a href="/file/tip/foo?style=gitweb">latest</a> | |
|
607 | <a href="/file/tip/foo?style=gitweb">latest</a> | | |
@@ -614,7 +614,7 b' Set up the repo' | |||||
614 | <a class="list" href="/file/43c799df6e75/foo?style=gitweb"> |
|
614 | <a class="list" href="/file/43c799df6e75/foo?style=gitweb"> | |
615 | <a class="list" href="/file/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td> |
|
615 | <a class="list" href="/file/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td> | |
616 |
|
616 | |||
617 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=gitweb' | |
|
617 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=gitweb' | grep -E $REVLINKS | |
618 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
|
618 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | | |
619 | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> | |
|
619 | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> | | |
620 | <a href="/diff/xyzzy/foo?style=gitweb">diff</a> | |
|
620 | <a href="/diff/xyzzy/foo?style=gitweb">diff</a> | | |
@@ -633,7 +633,7 b' Set up the repo' | |||||
633 | <a href="/log/xyzzy/foo?revcount=120&style=gitweb">more</a> |
|
633 | <a href="/log/xyzzy/foo?revcount=120&style=gitweb">more</a> | |
634 | <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a> |
|
634 | <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a> | |
635 |
|
635 | |||
636 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | |
|
636 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | grep -E $REVLINKS | |
637 | <a href="/file/xyzzy/?style=gitweb">files</a> | |
|
637 | <a href="/file/xyzzy/?style=gitweb">files</a> | | |
638 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
638 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | | |
639 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
|
639 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | | |
@@ -655,7 +655,7 b' Set up the repo' | |||||
655 | <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
|
655 | <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> | |
656 | <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> |
|
656 | <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> | |
657 |
|
657 | |||
658 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=gitweb' | |
|
658 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=gitweb' | grep -E $REVLINKS | |
659 | <a href="/file/xyzzy?style=gitweb">files</a> | |
|
659 | <a href="/file/xyzzy?style=gitweb">files</a> | | |
660 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
660 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | | |
661 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
|
661 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | | |
@@ -668,7 +668,7 b' Set up the repo' | |||||
668 | <a class="list" href="/diff/43c799df6e75/foo?style=gitweb"> |
|
668 | <a class="list" href="/diff/43c799df6e75/foo?style=gitweb"> | |
669 | <a class="list" href="/diff/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a> |
|
669 | <a class="list" href="/diff/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a> | |
670 |
|
670 | |||
671 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | |
|
671 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | grep -E $REVLINKS | |
672 | <a href="/file/xyzzy?style=gitweb">files</a> | |
|
672 | <a href="/file/xyzzy?style=gitweb">files</a> | | |
673 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
673 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | | |
674 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
|
674 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | | |
@@ -683,7 +683,7 b' Set up the repo' | |||||
683 |
|
683 | |||
684 | (De)referencing symbolic revisions (monoblue) |
|
684 | (De)referencing symbolic revisions (monoblue) | |
685 |
|
685 | |||
686 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=monoblue' | |
|
686 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=monoblue' | grep -E $REVLINKS | |
687 | <li><a href="/archive/tip.zip">zip</a></li> |
|
687 | <li><a href="/archive/tip.zip">zip</a></li> | |
688 | <a href="/rev/9d8c40cba617?style=monoblue"> |
|
688 | <a href="/rev/9d8c40cba617?style=monoblue"> | |
689 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
|
689 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | | |
@@ -703,7 +703,7 b' Set up the repo' | |||||
703 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
703 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | | |
704 | <a href="/file/9d8c40cba617?style=monoblue">files</a> |
|
704 | <a href="/file/9d8c40cba617?style=monoblue">files</a> | |
705 |
|
705 | |||
706 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue' | |
|
706 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue' | grep -E $REVLINKS | |
707 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
707 | <li><a href="/graph/tip?style=monoblue">graph</a></li> | |
708 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
708 | <li><a href="/file/tip?style=monoblue">files</a></li> | |
709 | <li><a href="/archive/tip.zip">zip</a></li> |
|
709 | <li><a href="/archive/tip.zip">zip</a></li> | |
@@ -718,7 +718,7 b' Set up the repo' | |||||
718 | <a href="/file/43c799df6e75?style=monoblue">files</a> |
|
718 | <a href="/file/43c799df6e75?style=monoblue">files</a> | |
719 | <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> |
|
719 | <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> | |
720 |
|
720 | |||
721 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=monoblue' | |
|
721 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=monoblue' | grep -E $REVLINKS | |
722 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
722 | <li><a href="/graph/tip?style=monoblue">graph</a></li> | |
723 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
723 | <li><a href="/file/tip?style=monoblue">files</a></li> | |
724 | <li><a href="/archive/tip.zip">zip</a></li> |
|
724 | <li><a href="/archive/tip.zip">zip</a></li> | |
@@ -727,7 +727,7 b' Set up the repo' | |||||
727 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> |
|
727 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> | |
728 | <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> |
|
728 | <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> | |
729 |
|
729 | |||
730 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=monoblue' | |
|
730 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=monoblue' | grep -E $REVLINKS | |
731 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
731 | <li><a href="/file/tip?style=monoblue">files</a></li> | |
732 | <li><a href="/archive/tip.zip">zip</a></li> |
|
732 | <li><a href="/archive/tip.zip">zip</a></li> | |
733 | <a href="/rev/9d8c40cba617?style=monoblue">third</a> |
|
733 | <a href="/rev/9d8c40cba617?style=monoblue">third</a> | |
@@ -737,25 +737,25 b' Set up the repo' | |||||
737 | <a href="/graph/tip?revcount=120&style=monoblue">more</a> |
|
737 | <a href="/graph/tip?revcount=120&style=monoblue">more</a> | |
738 | | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> |
|
738 | | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> | |
739 |
|
739 | |||
740 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=monoblue' | |
|
740 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=monoblue' | grep -E $REVLINKS | |
741 | <td><a href="/rev/tip?style=monoblue">tip</a></td> |
|
741 | <td><a href="/rev/tip?style=monoblue">tip</a></td> | |
742 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
|
742 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | | |
743 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
743 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | | |
744 | <a href="/file/9d8c40cba617?style=monoblue">files</a> |
|
744 | <a href="/file/9d8c40cba617?style=monoblue">files</a> | |
745 |
|
745 | |||
746 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=monoblue' | |
|
746 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=monoblue' | grep -E $REVLINKS | |
747 | <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td> |
|
747 | <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td> | |
748 | <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> | |
|
748 | <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> | | |
749 | <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> | |
|
749 | <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> | | |
750 | <a href="/file/a7c1559b7bba?style=monoblue">files</a> |
|
750 | <a href="/file/a7c1559b7bba?style=monoblue">files</a> | |
751 |
|
751 | |||
752 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=monoblue' | |
|
752 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=monoblue' | grep -E $REVLINKS | |
753 | <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td> |
|
753 | <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td> | |
754 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
|
754 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | | |
755 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
755 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | | |
756 | <a href="/file/9d8c40cba617?style=monoblue">files</a> |
|
756 | <a href="/file/9d8c40cba617?style=monoblue">files</a> | |
757 |
|
757 | |||
758 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=monoblue' | |
|
758 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=monoblue' | grep -E $REVLINKS | |
759 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
759 | <li><a href="/graph/tip?style=monoblue">graph</a></li> | |
760 | <li><a href="/rev/tip?style=monoblue">changeset</a></li> |
|
760 | <li><a href="/rev/tip?style=monoblue">changeset</a></li> | |
761 | <li><a href="/archive/tip.zip">zip</a></li> |
|
761 | <li><a href="/archive/tip.zip">zip</a></li> | |
@@ -767,13 +767,13 b' Set up the repo' | |||||
767 | <a href="/log/tip/foo?style=monoblue">revisions</a> | |
|
767 | <a href="/log/tip/foo?style=monoblue">revisions</a> | | |
768 | <a href="/annotate/tip/foo?style=monoblue">annotate</a> |
|
768 | <a href="/annotate/tip/foo?style=monoblue">annotate</a> | |
769 |
|
769 | |||
770 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue&rev=all()' | |
|
770 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue&rev=all()' | grep -E $REVLINKS | |
771 | <li><a href="/archive/tip.zip">zip</a></li> |
|
771 | <li><a href="/archive/tip.zip">zip</a></li> | |
772 | <a class="title" href="/rev/9d8c40cba617?style=monoblue"> |
|
772 | <a class="title" href="/rev/9d8c40cba617?style=monoblue"> | |
773 | <a class="title" href="/rev/a7c1559b7bba?style=monoblue"> |
|
773 | <a class="title" href="/rev/a7c1559b7bba?style=monoblue"> | |
774 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> |
|
774 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> | |
775 |
|
775 | |||
776 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=monoblue' | |
|
776 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=monoblue' | grep -E $REVLINKS | |
777 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
777 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
778 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
778 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
779 | <li><a href="/raw-rev/xyzzy">raw</a></li> |
|
779 | <li><a href="/raw-rev/xyzzy">raw</a></li> | |
@@ -789,7 +789,7 b' Set up the repo' | |||||
789 | <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> | |
|
789 | <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> | | |
790 | <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a> |
|
790 | <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a> | |
791 |
|
791 | |||
792 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=monoblue' | |
|
792 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=monoblue' | grep -E $REVLINKS | |
793 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
793 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
794 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
794 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
795 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
|
795 | <li><a href="/archive/xyzzy.zip">zip</a></li> | |
@@ -801,7 +801,7 b' Set up the repo' | |||||
801 | <a href="/file/43c799df6e75?style=monoblue">files</a> |
|
801 | <a href="/file/43c799df6e75?style=monoblue">files</a> | |
802 | <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> |
|
802 | <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> | |
803 |
|
803 | |||
804 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=monoblue' | |
|
804 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=monoblue' | grep -E $REVLINKS | |
805 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
805 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
806 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
806 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
807 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
|
807 | <li><a href="/archive/xyzzy.zip">zip</a></li> | |
@@ -809,7 +809,7 b' Set up the repo' | |||||
809 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> |
|
809 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> | |
810 | <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> |
|
810 | <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> | |
811 |
|
811 | |||
812 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=monoblue' | |
|
812 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=monoblue' | grep -E $REVLINKS | |
813 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
813 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
814 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
|
814 | <li><a href="/archive/xyzzy.zip">zip</a></li> | |
815 | <a href="/rev/a7c1559b7bba?style=monoblue">second</a> |
|
815 | <a href="/rev/a7c1559b7bba?style=monoblue">second</a> | |
@@ -818,7 +818,7 b' Set up the repo' | |||||
818 | <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a> |
|
818 | <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a> | |
819 | | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> |
|
819 | | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> | |
820 |
|
820 | |||
821 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=monoblue' | |
|
821 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=monoblue' | grep -E $REVLINKS | |
822 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
822 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
823 | <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li> |
|
823 | <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li> | |
824 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
|
824 | <li><a href="/archive/xyzzy.zip">zip</a></li> | |
@@ -830,7 +830,7 b' Set up the repo' | |||||
830 | <a href="/log/xyzzy/foo?style=monoblue">revisions</a> | |
|
830 | <a href="/log/xyzzy/foo?style=monoblue">revisions</a> | | |
831 | <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a> |
|
831 | <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a> | |
832 |
|
832 | |||
833 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=monoblue' | |
|
833 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=monoblue' | grep -E $REVLINKS | |
834 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
834 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
835 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> |
|
835 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> | |
836 | <li><a href="/file/tip/foo?style=monoblue">latest</a></li> |
|
836 | <li><a href="/file/tip/foo?style=monoblue">latest</a></li> | |
@@ -843,7 +843,7 b' Set up the repo' | |||||
843 | <a href="/file/43c799df6e75/foo?style=monoblue"> |
|
843 | <a href="/file/43c799df6e75/foo?style=monoblue"> | |
844 | <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a> |
|
844 | <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a> | |
845 |
|
845 | |||
846 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=monoblue' | |
|
846 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=monoblue' | grep -E $REVLINKS | |
847 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
847 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
848 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
848 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
849 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
|
849 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> | |
@@ -861,7 +861,7 b' Set up the repo' | |||||
861 | <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a> |
|
861 | <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a> | |
862 | <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a> <a href="/log/tip/foo?style=monoblue">tip</a> |
|
862 | <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a> <a href="/log/tip/foo?style=monoblue">tip</a> | |
863 |
|
863 | |||
864 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | |
|
864 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | grep -E $REVLINKS | |
865 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
865 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
866 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> |
|
866 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> | |
867 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
|
867 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> | |
@@ -883,7 +883,7 b' Set up the repo' | |||||
883 | <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
|
883 | <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> | |
884 | <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> |
|
884 | <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> | |
885 |
|
885 | |||
886 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=monoblue' | |
|
886 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=monoblue' | grep -E $REVLINKS | |
887 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
887 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
888 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
888 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
889 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
|
889 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> | |
@@ -896,7 +896,7 b' Set up the repo' | |||||
896 | <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd> |
|
896 | <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd> | |
897 | <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd> |
|
897 | <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd> | |
898 |
|
898 | |||
899 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | |
|
899 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | grep -E $REVLINKS | |
900 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
900 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> | |
901 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
901 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> | |
902 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
|
902 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> | |
@@ -911,7 +911,7 b' Set up the repo' | |||||
911 |
|
911 | |||
912 | (De)referencing symbolic revisions (spartan) |
|
912 | (De)referencing symbolic revisions (spartan) | |
913 |
|
913 | |||
914 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan' | |
|
914 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan' | grep -E $REVLINKS | |
915 | <a href="/log/tip?style=spartan">changelog</a> |
|
915 | <a href="/log/tip?style=spartan">changelog</a> | |
916 | <a href="/graph/tip?style=spartan">graph</a> |
|
916 | <a href="/graph/tip?style=spartan">graph</a> | |
917 | <a href="/file/tip/?style=spartan">files</a> |
|
917 | <a href="/file/tip/?style=spartan">files</a> | |
@@ -922,7 +922,7 b' Set up the repo' | |||||
922 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> |
|
922 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> | |
923 | navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> |
|
923 | navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> | |
924 |
|
924 | |||
925 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=spartan' | |
|
925 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=spartan' | grep -E $REVLINKS | |
926 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
926 | <a href="/shortlog/tip?style=spartan">shortlog</a> | |
927 | <a href="/graph/tip?style=spartan">graph</a> |
|
927 | <a href="/graph/tip?style=spartan">graph</a> | |
928 | <a href="/file/tip?style=spartan">files</a> |
|
928 | <a href="/file/tip?style=spartan">files</a> | |
@@ -939,7 +939,7 b' Set up the repo' | |||||
939 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> |
|
939 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> | |
940 | navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> |
|
940 | navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> | |
941 |
|
941 | |||
942 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=spartan' | |
|
942 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=spartan' | grep -E $REVLINKS | |
943 | <a href="/log/tip?style=spartan">changelog</a> |
|
943 | <a href="/log/tip?style=spartan">changelog</a> | |
944 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
944 | <a href="/shortlog/tip?style=spartan">shortlog</a> | |
945 | <a href="/file/tip/?style=spartan">files</a> |
|
945 | <a href="/file/tip/?style=spartan">files</a> | |
@@ -949,13 +949,13 b' Set up the repo' | |||||
949 | <a href="/rev/43c799df6e75?style=spartan">first</a> |
|
949 | <a href="/rev/43c799df6e75?style=spartan">first</a> | |
950 | navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> |
|
950 | navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> | |
951 |
|
951 | |||
952 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=spartan' | |
|
952 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=spartan' | grep -E $REVLINKS | |
953 | <a href="/rev/9d8c40cba617?style=spartan">tip</a> |
|
953 | <a href="/rev/9d8c40cba617?style=spartan">tip</a> | |
954 |
|
954 | |||
955 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=spartan' | |
|
955 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=spartan' | grep -E $REVLINKS | |
956 | <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a> |
|
956 | <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a> | |
957 |
|
957 | |||
958 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=spartan' | |
|
958 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=spartan' | grep -E $REVLINKS | |
959 | <a href="/log/tip?style=spartan">changelog</a> |
|
959 | <a href="/log/tip?style=spartan">changelog</a> | |
960 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
960 | <a href="/shortlog/tip?style=spartan">shortlog</a> | |
961 | <a href="/graph/tip?style=spartan">graph</a> |
|
961 | <a href="/graph/tip?style=spartan">graph</a> | |
@@ -966,7 +966,7 b' Set up the repo' | |||||
966 | <a href="/file/tip/dir/?style=spartan"> |
|
966 | <a href="/file/tip/dir/?style=spartan"> | |
967 | <td><a href="/file/tip/foo?style=spartan">foo</a></td> |
|
967 | <td><a href="/file/tip/foo?style=spartan">foo</a></td> | |
968 |
|
968 | |||
969 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan&rev=all()' | |
|
969 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan&rev=all()' | grep -E $REVLINKS | |
970 | <a href="/archive/tip.zip">zip</a> |
|
970 | <a href="/archive/tip.zip">zip</a> | |
971 | <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> |
|
971 | <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> | |
972 | <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a> |
|
972 | <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a> | |
@@ -982,7 +982,7 b' Set up the repo' | |||||
982 | <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th> |
|
982 | <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th> | |
983 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> |
|
983 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> | |
984 |
|
984 | |||
985 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=spartan' | |
|
985 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=spartan' | grep -E $REVLINKS | |
986 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
986 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
987 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
987 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
988 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
988 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
@@ -994,7 +994,7 b' Set up the repo' | |||||
994 | <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> |
|
994 | <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> | |
995 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td> |
|
995 | <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td> | |
996 |
|
996 | |||
997 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=spartan' | |
|
997 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=spartan' | grep -E $REVLINKS | |
998 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
998 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
999 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
999 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
1000 | <a href="/file/xyzzy/?style=spartan">files</a> |
|
1000 | <a href="/file/xyzzy/?style=spartan">files</a> | |
@@ -1004,7 +1004,7 b' Set up the repo' | |||||
1004 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> |
|
1004 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> | |
1005 | navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> |
|
1005 | navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> | |
1006 |
|
1006 | |||
1007 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=spartan' | |
|
1007 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=spartan' | grep -E $REVLINKS | |
1008 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1008 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1009 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1009 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
1010 | <a href="/file/xyzzy?style=spartan">files</a> |
|
1010 | <a href="/file/xyzzy?style=spartan">files</a> | |
@@ -1018,7 +1018,7 b' Set up the repo' | |||||
1018 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> |
|
1018 | <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> | |
1019 | navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> |
|
1019 | navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> | |
1020 |
|
1020 | |||
1021 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=spartan' | |
|
1021 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=spartan' | grep -E $REVLINKS | |
1022 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1022 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
1023 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1023 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1024 | <a href="/file/xyzzy/?style=spartan">files</a> |
|
1024 | <a href="/file/xyzzy/?style=spartan">files</a> | |
@@ -1027,7 +1027,7 b' Set up the repo' | |||||
1027 | <a href="/rev/43c799df6e75?style=spartan">first</a> |
|
1027 | <a href="/rev/43c799df6e75?style=spartan">first</a> | |
1028 | navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> |
|
1028 | navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> | |
1029 |
|
1029 | |||
1030 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=spartan' | |
|
1030 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=spartan' | grep -E $REVLINKS | |
1031 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1031 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
1032 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1032 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1033 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1033 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
@@ -1038,7 +1038,7 b' Set up the repo' | |||||
1038 | <a href="/file/xyzzy/dir/?style=spartan"> |
|
1038 | <a href="/file/xyzzy/dir/?style=spartan"> | |
1039 | <td><a href="/file/xyzzy/foo?style=spartan">foo</a></td> |
|
1039 | <td><a href="/file/xyzzy/foo?style=spartan">foo</a></td> | |
1040 |
|
1040 | |||
1041 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=spartan' | |
|
1041 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=spartan' | grep -E $REVLINKS | |
1042 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1042 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
1043 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1043 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1044 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1044 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
@@ -1051,7 +1051,7 b' Set up the repo' | |||||
1051 | <a href="/file/43c799df6e75/foo?style=spartan"> |
|
1051 | <a href="/file/43c799df6e75/foo?style=spartan"> | |
1052 | <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td> |
|
1052 | <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td> | |
1053 |
|
1053 | |||
1054 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=spartan' | |
|
1054 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=spartan' | grep -E $REVLINKS | |
1055 | href="/atom-log/tip/foo" title="Atom feed for test:foo"> |
|
1055 | href="/atom-log/tip/foo" title="Atom feed for test:foo"> | |
1056 | href="/rss-log/tip/foo" title="RSS feed for test:foo"> |
|
1056 | href="/rss-log/tip/foo" title="RSS feed for test:foo"> | |
1057 | <a href="/file/xyzzy/foo?style=spartan">file</a> |
|
1057 | <a href="/file/xyzzy/foo?style=spartan">file</a> | |
@@ -1068,7 +1068,7 b' Set up the repo' | |||||
1068 | <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a> |
|
1068 | <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a> | |
1069 | <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a> |
|
1069 | <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a> | |
1070 |
|
1070 | |||
1071 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=spartan' | |
|
1071 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=spartan' | grep -E $REVLINKS | |
1072 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1072 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
1073 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1073 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1074 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1074 | <a href="/graph/xyzzy?style=spartan">graph</a> | |
@@ -1090,7 +1090,7 b' Set up the repo' | |||||
1090 | <a href="/diff/a7c1559b7bba/foo?style=spartan">diff</a> |
|
1090 | <a href="/diff/a7c1559b7bba/foo?style=spartan">diff</a> | |
1091 | <a href="/rev/a7c1559b7bba?style=spartan">changeset</a> |
|
1091 | <a href="/rev/a7c1559b7bba?style=spartan">changeset</a> | |
1092 |
|
1092 | |||
1093 |
$ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=spartan' | |
|
1093 | $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=spartan' | grep -E $REVLINKS | |
1094 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1094 | <a href="/log/xyzzy?style=spartan">changelog</a> | |
1095 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1095 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> | |
1096 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1096 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -783,19 +783,19 b' phase changes are refreshed (issue4061)' | |||||
783 |
|
783 | |||
784 | access bookmarks |
|
784 | access bookmarks | |
785 |
|
785 | |||
786 |
$ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | |
|
786 | $ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | grep -E '^200|changeset 0:' | |
787 | 200 Script output follows |
|
787 | 200 Script output follows | |
788 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> |
|
788 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> | |
789 |
|
789 | |||
790 |
$ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | |
|
790 | $ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | grep -E '^200|changeset 0:' | |
791 | 200 Script output follows |
|
791 | 200 Script output follows | |
792 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> |
|
792 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> | |
793 |
|
793 | |||
794 |
$ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | |
|
794 | $ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | grep -E '^200|changeset 0:' | |
795 | 200 Script output follows |
|
795 | 200 Script output follows | |
796 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> |
|
796 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> | |
797 |
|
797 | |||
798 |
$ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | |
|
798 | $ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | grep -E '^200|changeset 0:' | |
799 | 200 Script output follows |
|
799 | 200 Script output follows | |
800 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> |
|
800 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> | |
801 |
|
801 |
@@ -236,7 +236,7 b' tip before edit' | |||||
236 |
|
236 | |||
237 | $ hg --config progress.debug=1 --debug \ |
|
237 | $ hg --config progress.debug=1 --debug \ | |
238 | > histedit 1ddb6c90f2ee --commands - 2>&1 <<EOF | \ |
|
238 | > histedit 1ddb6c90f2ee --commands - 2>&1 <<EOF | \ | |
239 |
> |
|
239 | > grep -E 'editing|unresolved' | |
240 | > pick 1ddb6c90f2ee e |
|
240 | > pick 1ddb6c90f2ee e | |
241 | > fold 10c36dd37515 f |
|
241 | > fold 10c36dd37515 f | |
242 | > EOF |
|
242 | > EOF |
@@ -975,7 +975,7 b' test python hooks' | |||||
975 | (run with --traceback for stack trace) |
|
975 | (run with --traceback for stack trace) | |
976 | [255] |
|
976 | [255] | |
977 |
|
977 | |||
978 |
$ hg pull ../a --traceback 2>&1 | |
|
978 | $ hg pull ../a --traceback 2>&1 | grep -E 'pulling|searching|^exception|Traceback|SyntaxError|ImportError|ModuleNotFoundError|HookLoadError|abort' | |
979 | pulling from ../a |
|
979 | pulling from ../a | |
980 | searching for changes |
|
980 | searching for changes | |
981 | exception from first failed import attempt: |
|
981 | exception from first failed import attempt: | |
@@ -1142,7 +1142,7 b' make sure --traceback works on hook impo' | |||||
1142 | $ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc |
|
1142 | $ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc | |
1143 |
|
1143 | |||
1144 | $ echo a >> a |
|
1144 | $ echo a >> a | |
1145 |
$ hg --traceback commit -ma 2>&1 | |
|
1145 | $ hg --traceback commit -ma 2>&1 | grep -E '^exception|ImportError|ModuleNotFoundError|Traceback|HookLoadError|abort' | |
1146 | exception from first failed import attempt: |
|
1146 | exception from first failed import attempt: | |
1147 | Traceback (most recent call last): |
|
1147 | Traceback (most recent call last): | |
1148 | ModuleNotFoundError: No module named 'somebogusmodule' |
|
1148 | ModuleNotFoundError: No module named 'somebogusmodule' |
@@ -371,7 +371,7 b' plain diff in email, no subject, no mess' | |||||
371 | new changesets 80971e65b431 |
|
371 | new changesets 80971e65b431 | |
372 | updating to branch default |
|
372 | updating to branch default | |
373 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
373 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
374 |
$ |
|
374 | $ grep -E -v '^(Subject|email)' msg.patch | hg --cwd b import - | |
375 | applying patch from stdin |
|
375 | applying patch from stdin | |
376 | abort: empty commit message |
|
376 | abort: empty commit message | |
377 | [10] |
|
377 | [10] |
@@ -26,7 +26,7 b' https://bz.mercurial-scm.org/show_bug.cg' | |||||
26 |
|
26 | |||
27 | $ hg log -r . --debug | grep files |
|
27 | $ hg log -r . --debug | grep files | |
28 | [1] |
|
28 | [1] | |
29 |
$ hg log -r . --debug -T json | |
|
29 | $ hg log -r . --debug -T json | grep -E '(added|removed|modified)' | |
30 | "added": [], |
|
30 | "added": [], | |
31 | "modified": [], |
|
31 | "modified": [], | |
32 | "removed": [], |
|
32 | "removed": [], |
@@ -186,7 +186,7 b' conditional above.' | |||||
186 | share_dst/.hg/largefiles/dirstate |
|
186 | share_dst/.hg/largefiles/dirstate | |
187 | share_dst/.hg/largefiles/undo.backup.dirstate.bck |
|
187 | share_dst/.hg/largefiles/undo.backup.dirstate.bck | |
188 |
|
188 | |||
189 |
$ find src/.hg/largefiles/* | |
|
189 | $ find src/.hg/largefiles/* | grep -E "(dirstate|$hash)" | sort | |
190 | src/.hg/largefiles/dirstate |
|
190 | src/.hg/largefiles/dirstate | |
191 | src/.hg/largefiles/e2fb5f2139d086ded2cb600d5a91a196e76bf020 |
|
191 | src/.hg/largefiles/e2fb5f2139d086ded2cb600d5a91a196e76bf020 | |
192 |
|
192 |
@@ -411,7 +411,7 b' the GET/PUT request.' | |||||
411 | > -A $TESTTMP/access.log -E $TESTTMP/errors.log |
|
411 | > -A $TESTTMP/access.log -E $TESTTMP/errors.log | |
412 | $ mv hg.pid $DAEMON_PIDS |
|
412 | $ mv hg.pid $DAEMON_PIDS | |
413 |
|
413 | |||
414 |
$ hg clone --debug http://localhost:$HGPORT1 auth_clone | |
|
414 | $ hg clone --debug http://localhost:$HGPORT1 auth_clone | grep -E '^[{}]| ' | |
415 | { |
|
415 | { | |
416 | "objects": [ |
|
416 | "objects": [ | |
417 | { |
|
417 | { | |
@@ -460,7 +460,7 b' Test that Digest Auth fails gracefully b' | |||||
460 | (api=http://localhost:$HGPORT1/.git/info/lfs/objects/batch, action=upload) |
|
460 | (api=http://localhost:$HGPORT1/.git/info/lfs/objects/batch, action=upload) | |
461 | [50] |
|
461 | [50] | |
462 |
|
462 | |||
463 |
$ hg -R auth_clone --debug push | |
|
463 | $ hg -R auth_clone --debug push | grep -E '^[{}]| ' | |
464 | { |
|
464 | { | |
465 | "objects": [ |
|
465 | "objects": [ | |
466 | { |
|
466 | { |
@@ -116,7 +116,7 b' lfs requirement' | |||||
116 |
|
116 | |||
117 | $ hg debugrequires -R $TESTTMP/server/ | grep lfs |
|
117 | $ hg debugrequires -R $TESTTMP/server/ | grep lfs | |
118 | [1] |
|
118 | [1] | |
119 |
$ hg push -v | |
|
119 | $ hg push -v | grep -E -v '^(uncompressed| )' | |
120 | pushing to $TESTTMP/server |
|
120 | pushing to $TESTTMP/server | |
121 | searching for changes |
|
121 | searching for changes | |
122 | lfs: found f11e77c257047a398492d8d6cb9f6acf3aa7c4384bb23080b43546053e183e4b in the local lfs store |
|
122 | lfs: found f11e77c257047a398492d8d6cb9f6acf3aa7c4384bb23080b43546053e183e4b in the local lfs store |
@@ -41,7 +41,7 b' Spot-check some randomly selected files:' | |||||
41 | ./usr/local/share/zsh/site-functions/_hg 100644 0/0 |
|
41 | ./usr/local/share/zsh/site-functions/_hg 100644 0/0 | |
42 | $ grep bash-completion/completions/hg boms.txt | cut -d ' ' -f 1,2,3 |
|
42 | $ grep bash-completion/completions/hg boms.txt | cut -d ' ' -f 1,2,3 | |
43 | ./usr/local/share/bash-completion-completions/hg 100644 0/0 |
|
43 | ./usr/local/share/bash-completion-completions/hg 100644 0/0 | |
44 |
$ |
|
44 | $ grep -E 'man[15]' boms.txt | cut -d ' ' -f 1,2,3 | |
45 | ./usr/local/share/man/man1 40755 0/0 |
|
45 | ./usr/local/share/man/man1 40755 0/0 | |
46 | ./usr/local/share/man/man1/chg.1 100644 0/0 |
|
46 | ./usr/local/share/man/man1/chg.1 100644 0/0 | |
47 | ./usr/local/share/man/man1/hg.1 100644 0/0 |
|
47 | ./usr/local/share/man/man1/hg.1 100644 0/0 | |
@@ -57,7 +57,7 b' Spot-check some randomly selected files:' | |||||
57 | ./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0 |
|
57 | ./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0 | |
58 | ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0 |
|
58 | ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0 | |
59 | ./Library/Python/2.7/site-packages/mercurial/localrepo.pyo 100644 0/0 |
|
59 | ./Library/Python/2.7/site-packages/mercurial/localrepo.pyo 100644 0/0 | |
60 |
$ |
|
60 | $ grep -E 'bin/' boms.txt | cut -d ' ' -f 1,2,3 | |
61 | ./usr/local/bin/chg 100755 0/0 |
|
61 | ./usr/local/bin/chg 100755 0/0 | |
62 | ./usr/local/bin/hg 100755 0/0 |
|
62 | ./usr/local/bin/hg 100755 0/0 | |
63 |
|
63 |
@@ -1581,8 +1581,6 b' Test that secret mq patch does not break' | |||||
1581 | > from mercurial import demandimport; demandimport.enable() |
|
1581 | > from mercurial import demandimport; demandimport.enable() | |
1582 | > from mercurial.hgweb import hgweb |
|
1582 | > from mercurial.hgweb import hgweb | |
1583 | > from mercurial.hgweb import wsgicgi |
|
1583 | > from mercurial.hgweb import wsgicgi | |
1584 | > import cgitb |
|
|||
1585 | > cgitb.enable() |
|
|||
1586 | > app = hgweb(b'.', b'test') |
|
1584 | > app = hgweb(b'.', b'test') | |
1587 | > wsgicgi.launch(app) |
|
1585 | > wsgicgi.launch(app) | |
1588 | > HGWEB |
|
1586 | > HGWEB |
@@ -54,7 +54,7 b' create full repo' | |||||
54 |
|
54 | |||
55 | $ hg update -r 'desc("outside 4a")' |
|
55 | $ hg update -r 'desc("outside 4a")' | |
56 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
56 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
57 |
$ hg merge -r 'desc("outside 4b")' 2>&1 | |
|
57 | $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
58 | merging outside/f |
|
58 | merging outside/f | |
59 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
59 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
60 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
60 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
@@ -66,7 +66,7 b' create full repo' | |||||
66 | $ echo 6 > outside/f |
|
66 | $ echo 6 > outside/f | |
67 | $ hg commit -Aqm 'outside 6' |
|
67 | $ hg commit -Aqm 'outside 6' | |
68 |
|
68 | |||
69 |
$ hg merge -r 'desc("outside 4c")' 2>&1 | |
|
69 | $ hg merge -r 'desc("outside 4c")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
70 | merging outside/f |
|
70 | merging outside/f | |
71 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
71 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
72 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
72 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
@@ -78,7 +78,7 b' create full repo' | |||||
78 | $ echo 8 > outside/f |
|
78 | $ echo 8 > outside/f | |
79 | $ hg commit -Aqm 'outside 8' |
|
79 | $ hg commit -Aqm 'outside 8' | |
80 |
|
80 | |||
81 |
$ hg merge -r 'desc("outside 4d")' 2>&1 | |
|
81 | $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
82 | merging outside/f |
|
82 | merging outside/f | |
83 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
83 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
84 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
84 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -71,7 +71,7 b' Can merge in when no files outside narro' | |||||
71 | Can merge conflicting changes inside narrow spec |
|
71 | Can merge conflicting changes inside narrow spec | |
72 |
|
72 | |||
73 | $ hg update -q 'desc("modify inside/f1")' |
|
73 | $ hg update -q 'desc("modify inside/f1")' | |
74 |
$ hg merge 'desc("conflicting inside/f1")' 2>&1 | |
|
74 | $ hg merge 'desc("conflicting inside/f1")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
75 | merging inside/f1 |
|
75 | merging inside/f1 | |
76 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
76 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
77 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
77 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -69,7 +69,7 b' Can rebase onto conflicting changes insi' | |||||
69 | $ hg update -q 0 |
|
69 | $ hg update -q 0 | |
70 | $ echo conflicting > inside/f1 |
|
70 | $ echo conflicting > inside/f1 | |
71 | $ hg ci -qm 'conflicting inside/f1' |
|
71 | $ hg ci -qm 'conflicting inside/f1' | |
72 |
$ hg rebase -d 'desc("modify inside/f1")' 2>&1 | |
|
72 | $ hg rebase -d 'desc("modify inside/f1")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
73 | rebasing 6:cdce97fbf653 tip "conflicting inside/f1" |
|
73 | rebasing 6:cdce97fbf653 tip "conflicting inside/f1" | |
74 | merging inside/f1 |
|
74 | merging inside/f1 | |
75 | unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
|
75 | unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
@@ -55,7 +55,7 b' create full repo' | |||||
55 |
|
55 | |||
56 | $ hg update -r 'desc("outside 4a")' |
|
56 | $ hg update -r 'desc("outside 4a")' | |
57 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
57 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
58 |
$ hg merge -r 'desc("outside 4b")' 2>&1 | |
|
58 | $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
59 | merging outside/f |
|
59 | merging outside/f | |
60 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
60 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
61 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
61 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
@@ -67,7 +67,7 b' create full repo' | |||||
67 | $ echo 6 > outside/f |
|
67 | $ echo 6 > outside/f | |
68 | $ hg commit -Aqm 'outside 6' |
|
68 | $ hg commit -Aqm 'outside 6' | |
69 |
|
69 | |||
70 |
$ hg merge -r 'desc("outside 4c")' 2>&1 | |
|
70 | $ hg merge -r 'desc("outside 4c")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
71 | merging outside/f |
|
71 | merging outside/f | |
72 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
72 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
73 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
73 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
@@ -79,7 +79,7 b' create full repo' | |||||
79 | $ echo 8 > outside/f |
|
79 | $ echo 8 > outside/f | |
80 | $ hg commit -Aqm 'outside 8' |
|
80 | $ hg commit -Aqm 'outside 8' | |
81 |
|
81 | |||
82 |
$ hg merge -r 'desc("outside 4d")' 2>&1 | |
|
82 | $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
83 | merging outside/f |
|
83 | merging outside/f | |
84 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
84 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
85 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
85 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |
@@ -279,7 +279,7 b' Incremental test case: show a pull can p' | |||||
279 | $ cd ../pullmaster |
|
279 | $ cd ../pullmaster | |
280 | $ hg update -r 'desc("outside 4a")' |
|
280 | $ hg update -r 'desc("outside 4a")' | |
281 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
281 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
282 |
$ hg merge -r 'desc("outside 4b")' 2>&1 | |
|
282 | $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
283 | merging inside/f |
|
283 | merging inside/f | |
284 | merging outside/f |
|
284 | merging outside/f | |
285 | 0 files updated, 0 files merged, 0 files removed, 2 files unresolved |
|
285 | 0 files updated, 0 files merged, 0 files removed, 2 files unresolved | |
@@ -293,7 +293,7 b' Incremental test case: show a pull can p' | |||||
293 |
|
293 | |||
294 | $ hg update -r 'desc("outside 4c")' |
|
294 | $ hg update -r 'desc("outside 4c")' | |
295 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
295 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
296 |
$ hg merge -r 'desc("outside 4d")' 2>&1 | |
|
296 | $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' | |
297 | merging inside/f |
|
297 | merging inside/f | |
298 | merging outside/f |
|
298 | merging outside/f | |
299 | 0 files updated, 0 files merged, 0 files removed, 2 files unresolved |
|
299 | 0 files updated, 0 files merged, 0 files removed, 2 files unresolved |
@@ -9,9 +9,6 b' before d74fc8dec2b4 still work.' | |||||
9 | > # |
|
9 | > # | |
10 | > # An example CGI script to use hgweb, edit as necessary |
|
10 | > # An example CGI script to use hgweb, edit as necessary | |
11 | > |
|
11 | > | |
12 | > import cgitb |
|
|||
13 | > cgitb.enable() |
|
|||
14 | > |
|
|||
15 | > from mercurial import demandimport; demandimport.enable() |
|
12 | > from mercurial import demandimport; demandimport.enable() | |
16 | > from mercurial.hgweb import hgweb |
|
13 | > from mercurial.hgweb import hgweb | |
17 | > from mercurial.hgweb import wsgicgi |
|
14 | > from mercurial.hgweb import wsgicgi | |
@@ -35,9 +32,6 b' before d74fc8dec2b4 still work.' | |||||
35 | > # |
|
32 | > # | |
36 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
33 | > # An example CGI script to export multiple hgweb repos, edit as necessary | |
37 | > |
|
34 | > | |
38 | > import cgitb |
|
|||
39 | > cgitb.enable() |
|
|||
40 | > |
|
|||
41 | > from mercurial import demandimport; demandimport.enable() |
|
35 | > from mercurial import demandimport; demandimport.enable() | |
42 | > from mercurial.hgweb import hgwebdir |
|
36 | > from mercurial.hgweb import hgwebdir | |
43 | > from mercurial.hgweb import wsgicgi |
|
37 | > from mercurial.hgweb import wsgicgi |
@@ -9,9 +9,6 b' This is a rudimentary test of the CGI fi' | |||||
9 | > # |
|
9 | > # | |
10 | > # An example CGI script to use hgweb, edit as necessary |
|
10 | > # An example CGI script to use hgweb, edit as necessary | |
11 | > |
|
11 | > | |
12 | > import cgitb |
|
|||
13 | > cgitb.enable() |
|
|||
14 | > |
|
|||
15 | > from mercurial import demandimport; demandimport.enable() |
|
12 | > from mercurial import demandimport; demandimport.enable() | |
16 | > from mercurial.hgweb import hgweb |
|
13 | > from mercurial.hgweb import hgweb | |
17 | > from mercurial.hgweb import wsgicgi |
|
14 | > from mercurial.hgweb import wsgicgi | |
@@ -32,9 +29,6 b' This is a rudimentary test of the CGI fi' | |||||
32 | > # |
|
29 | > # | |
33 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
30 | > # An example CGI script to export multiple hgweb repos, edit as necessary | |
34 | > |
|
31 | > | |
35 | > import cgitb |
|
|||
36 | > cgitb.enable() |
|
|||
37 | > |
|
|||
38 | > from mercurial import demandimport; demandimport.enable() |
|
32 | > from mercurial import demandimport; demandimport.enable() | |
39 | > from mercurial.hgweb import hgwebdir |
|
33 | > from mercurial.hgweb import hgwebdir | |
40 | > from mercurial.hgweb import wsgicgi |
|
34 | > from mercurial.hgweb import wsgicgi |
@@ -17,7 +17,7 b' Create a repo, set the username to somet' | |||||
17 | adding a |
|
17 | adding a | |
18 | $ hg commit -m "Initial commit" |
|
18 | $ hg commit -m "Initial commit" | |
19 | $ echo a >> a |
|
19 | $ echo a >> a | |
20 |
$ hg amend 2>&1 | |
|
20 | $ hg amend 2>&1 | grep -E -v '^(\*\*| )' | |
21 | transaction abort! |
|
21 | transaction abort! | |
22 | rollback completed |
|
22 | rollback completed | |
23 | Traceback (most recent call last): |
|
23 | Traceback (most recent call last): |
@@ -674,19 +674,19 b' fix the divergence' | |||||
674 |
|
674 | |||
675 | check an obsolete changeset that was rewritten and also split |
|
675 | check an obsolete changeset that was rewritten and also split | |
676 |
|
676 | |||
677 |
$ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | |
|
677 | $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | grep -E 'rewritten|split' | |
678 | <td>rewritten as <a href="/rev/bed64f5d2f5a?style=paper">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> |
|
678 | <td>rewritten as <a href="/rev/bed64f5d2f5a?style=paper">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> | |
679 | split as <a href="/rev/7ae126973a96?style=paper">7ae126973a96</a> <a href="/rev/14608b260df8?style=paper">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
679 | split as <a href="/rev/7ae126973a96?style=paper">7ae126973a96</a> <a href="/rev/14608b260df8?style=paper">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
680 |
$ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | |
|
680 | $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | grep -E 'rewritten|split' | |
681 | <td>rewritten as <a href="/rev/bed64f5d2f5a?style=coal">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> |
|
681 | <td>rewritten as <a href="/rev/bed64f5d2f5a?style=coal">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> | |
682 | split as <a href="/rev/7ae126973a96?style=coal">7ae126973a96</a> <a href="/rev/14608b260df8?style=coal">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
682 | split as <a href="/rev/7ae126973a96?style=coal">7ae126973a96</a> <a href="/rev/14608b260df8?style=coal">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
683 |
$ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | |
|
683 | $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | grep -E 'rewritten|split' | |
684 | <td>rewritten as <a class="list" href="/rev/bed64f5d2f5a?style=gitweb">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
684 | <td>rewritten as <a class="list" href="/rev/bed64f5d2f5a?style=gitweb">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
685 | <td>split as <a class="list" href="/rev/7ae126973a96?style=gitweb">7ae126973a96</a> <a class="list" href="/rev/14608b260df8?style=gitweb">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
685 | <td>split as <a class="list" href="/rev/7ae126973a96?style=gitweb">7ae126973a96</a> <a class="list" href="/rev/14608b260df8?style=gitweb">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
686 |
$ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | |
|
686 | $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | grep -E 'rewritten|split' | |
687 | <dd>rewritten as <a href="/rev/bed64f5d2f5a?style=monoblue">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> |
|
687 | <dd>rewritten as <a href="/rev/bed64f5d2f5a?style=monoblue">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> | |
688 | <dd>split as <a href="/rev/7ae126973a96?style=monoblue">7ae126973a96</a> <a href="/rev/14608b260df8?style=monoblue">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> |
|
688 | <dd>split as <a href="/rev/7ae126973a96?style=monoblue">7ae126973a96</a> <a href="/rev/14608b260df8?style=monoblue">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> | |
689 |
$ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | |
|
689 | $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | grep -E 'rewritten|split' | |
690 | <td class="obsolete">rewritten as <a href="/rev/bed64f5d2f5a?style=spartan">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
690 | <td class="obsolete">rewritten as <a href="/rev/bed64f5d2f5a?style=spartan">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
691 | <td class="obsolete">split as <a href="/rev/7ae126973a96?style=spartan">7ae126973a96</a> <a href="/rev/14608b260df8?style=spartan">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> |
|
691 | <td class="obsolete">split as <a href="/rev/7ae126973a96?style=spartan">7ae126973a96</a> <a href="/rev/14608b260df8?style=spartan">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | |
692 |
|
692 |
@@ -1233,23 +1233,23 b' check changeset with instabilities' | |||||
1233 |
|
1233 | |||
1234 | check explanation for an orphan, phase-divergent and content-divergent changeset |
|
1234 | check explanation for an orphan, phase-divergent and content-divergent changeset | |
1235 |
|
1235 | |||
1236 |
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=paper' | |
|
1236 | $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=paper' | grep -E '(orphan|phase-divergent|content-divergent):' | |
1237 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a><br> |
|
1237 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a><br> | |
1238 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a><br> |
|
1238 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a><br> | |
1239 | content-divergent: <a href="/rev/6f9641995072?style=paper">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a></td> |
|
1239 | content-divergent: <a href="/rev/6f9641995072?style=paper">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a></td> | |
1240 |
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=coal' | |
|
1240 | $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=coal' | grep -E '(orphan|phase-divergent|content-divergent):' | |
1241 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a><br> |
|
1241 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a><br> | |
1242 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a><br> |
|
1242 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a><br> | |
1243 | content-divergent: <a href="/rev/6f9641995072?style=coal">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a></td> |
|
1243 | content-divergent: <a href="/rev/6f9641995072?style=coal">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a></td> | |
1244 |
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=gitweb' | |
|
1244 | $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=gitweb' | grep -E '(orphan|phase-divergent|content-divergent):' | |
1245 | <td>orphan: obsolete parent <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a></td> |
|
1245 | <td>orphan: obsolete parent <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a></td> | |
1246 | <td>phase-divergent: immutable predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> |
|
1246 | <td>phase-divergent: immutable predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> | |
1247 | <td>content-divergent: <a class="list" href="/rev/6f9641995072?style=gitweb">6f9641995072</a> (draft) predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> |
|
1247 | <td>content-divergent: <a class="list" href="/rev/6f9641995072?style=gitweb">6f9641995072</a> (draft) predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> | |
1248 |
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=monoblue' | |
|
1248 | $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=monoblue' | grep -E '(orphan|phase-divergent|content-divergent):' | |
1249 | <dd>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a></dd> |
|
1249 | <dd>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a></dd> | |
1250 | <dd>phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> |
|
1250 | <dd>phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> | |
1251 | <dd>content-divergent: <a href="/rev/6f9641995072?style=monoblue">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> |
|
1251 | <dd>content-divergent: <a href="/rev/6f9641995072?style=monoblue">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> | |
1252 |
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=spartan' | |
|
1252 | $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=spartan' | grep -E '(orphan|phase-divergent|content-divergent):' | |
1253 | <td class="unstable">orphan: obsolete parent <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a></td> |
|
1253 | <td class="unstable">orphan: obsolete parent <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a></td> | |
1254 | <td class="unstable">phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> |
|
1254 | <td class="unstable">phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> | |
1255 | <td class="unstable">content-divergent: <a href="/rev/6f9641995072?style=spartan">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> |
|
1255 | <td class="unstable">content-divergent: <a href="/rev/6f9641995072?style=spartan">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> |
@@ -8,8 +8,7 b' This tests if CGI files from before d0db' | |||||
8 | > # |
|
8 | > # | |
9 | > # An example CGI script to use hgweb, edit as necessary |
|
9 | > # An example CGI script to use hgweb, edit as necessary | |
10 | > |
|
10 | > | |
11 |
> import |
|
11 | > import os, sys | |
12 | > cgitb.enable() |
|
|||
13 | > |
|
12 | > | |
14 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install |
|
13 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install | |
15 | > from mercurial import hgweb |
|
14 | > from mercurial import hgweb | |
@@ -30,8 +29,7 b' This tests if CGI files from before d0db' | |||||
30 | > # |
|
29 | > # | |
31 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
30 | > # An example CGI script to export multiple hgweb repos, edit as necessary | |
32 | > |
|
31 | > | |
33 |
> import |
|
32 | > import sys | |
34 | > cgitb.enable() |
|
|||
35 | > |
|
33 | > | |
36 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install |
|
34 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install | |
37 | > from mercurial import hgweb |
|
35 | > from mercurial import hgweb |
@@ -5,9 +5,8 b' Set up SMTP server:' | |||||
5 | $ CERTSDIR="$TESTDIR/sslcerts" |
|
5 | $ CERTSDIR="$TESTDIR/sslcerts" | |
6 | $ cat "$CERTSDIR/priv.pem" "$CERTSDIR/pub.pem" >> server.pem |
|
6 | $ cat "$CERTSDIR/priv.pem" "$CERTSDIR/pub.pem" >> server.pem | |
7 |
|
7 | |||
8 | $ "$PYTHON" "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid -d \ |
|
8 | $ "$PYTHON" "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid --logfile log -d \ | |
9 | > --tls smtps --certificate `pwd`/server.pem |
|
9 | > --tls smtps --certificate `pwd`/server.pem | |
10 | listening at localhost:$HGPORT (?) |
|
|||
11 |
$ |
|
10 | $ cat a.pid >> $DAEMON_PIDS | |
12 |
|
11 | |||
13 | Set up repository: |
|
12 | Set up repository: | |
@@ -47,6 +46,11 b' we are able to load CA certs:' | |||||
47 | (an attempt was made to load CA certificates but none were loaded; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error) |
|
46 | (an attempt was made to load CA certificates but none were loaded; see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error) | |
48 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
47 | (?i)abort: .*?certificate.verify.failed.* (re) | |
49 | [255] |
|
48 | [255] | |
|
49 | ||||
|
50 | $ cat ../log | |||
|
51 | * ssl error: * (glob) | |||
|
52 | $ : > ../log | |||
|
53 | ||||
50 | #endif |
|
54 | #endif | |
51 |
|
55 | |||
52 | #if defaultcacertsloaded |
|
56 | #if defaultcacertsloaded | |
@@ -58,6 +62,10 b' we are able to load CA certs:' | |||||
58 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
62 | (?i)abort: .*?certificate.verify.failed.* (re) | |
59 | [255] |
|
63 | [255] | |
60 |
|
64 | |||
|
65 | $ cat ../log | |||
|
66 | * ssl error: * (glob) | |||
|
67 | $ : > ../log | |||
|
68 | ||||
61 | #endif |
|
69 | #endif | |
62 |
|
70 | |||
63 | $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true" |
|
71 | $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true" | |
@@ -75,6 +83,11 b' Without certificates:' | |||||
75 | (see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error or set hostsecurity.localhost:fingerprints=sha256:20:de:b3:ad:b4:cd:a5:42:f0:74:41:1c:a2:70:1e:da:6e:c0:5c:16:9e:e7:22:0f:f1:b7:e5:6e:e4:92:af:7e to trust this server) |
|
83 | (see https://mercurial-scm.org/wiki/SecureConnections for how to configure Mercurial to avoid this error or set hostsecurity.localhost:fingerprints=sha256:20:de:b3:ad:b4:cd:a5:42:f0:74:41:1c:a2:70:1e:da:6e:c0:5c:16:9e:e7:22:0f:f1:b7:e5:6e:e4:92:af:7e to trust this server) | |
76 | [150] |
|
84 | [150] | |
77 |
|
85 | |||
|
86 | $ cat ../log | |||
|
87 | connection from * (glob) | |||
|
88 | no hello: b'' | |||
|
89 | $ : > ../log | |||
|
90 | ||||
78 | With global certificates: |
|
91 | With global certificates: | |
79 |
|
92 | |||
80 | $ try --debug --config web.cacerts="$CERTSDIR/pub.pem" |
|
93 | $ try --debug --config web.cacerts="$CERTSDIR/pub.pem" | |
@@ -86,6 +99,40 b' With global certificates:' | |||||
86 | (verifying remote certificate) |
|
99 | (verifying remote certificate) | |
87 | sending [PATCH] a ... |
|
100 | sending [PATCH] a ... | |
88 |
|
101 | |||
|
102 | $ cat ../log | |||
|
103 | connection from * (glob) | |||
|
104 | * from=quux to=foo, bar (glob) | |||
|
105 | MIME-Version: 1.0 | |||
|
106 | Content-Type: text/plain; charset="us-ascii" | |||
|
107 | Content-Transfer-Encoding: 7bit | |||
|
108 | Subject: [PATCH] a | |||
|
109 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |||
|
110 | X-Mercurial-Series-Index: 1 | |||
|
111 | X-Mercurial-Series-Total: 1 | |||
|
112 | Message-Id: <*@test-hostname> (glob) | |||
|
113 | X-Mercurial-Series-Id: <*@test-hostname> (glob) | |||
|
114 | User-Agent: Mercurial-patchbomb* (glob) | |||
|
115 | Date: * (glob) | |||
|
116 | From: quux | |||
|
117 | To: foo | |||
|
118 | Cc: bar | |||
|
119 | ||||
|
120 | # HG changeset patch | |||
|
121 | # User test | |||
|
122 | # Date 1 0 | |||
|
123 | # Thu Jan 01 00:00:01 1970 +0000 | |||
|
124 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |||
|
125 | # Parent 0000000000000000000000000000000000000000 | |||
|
126 | a | |||
|
127 | ||||
|
128 | diff -r 0000000000000000000000000000000000000000 -r 8580ff50825a50c8f716709acdf8de0deddcd6ab a | |||
|
129 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |||
|
130 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |||
|
131 | @@ -0,0 +1,1 @@ | |||
|
132 | +a | |||
|
133 | ||||
|
134 | $ : > ../log | |||
|
135 | ||||
89 | With invalid certificates: |
|
136 | With invalid certificates: | |
90 |
|
137 | |||
91 | $ try --config web.cacerts="$CERTSDIR/pub-other.pem" |
|
138 | $ try --config web.cacerts="$CERTSDIR/pub-other.pem" | |
@@ -96,4 +143,8 b' With invalid certificates:' | |||||
96 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
143 | (?i)abort: .*?certificate.verify.failed.* (re) | |
97 | [255] |
|
144 | [255] | |
98 |
|
145 | |||
|
146 | $ cat ../log | |||
|
147 | * ssl error: * (glob) | |||
|
148 | $ : > ../log | |||
|
149 | ||||
99 | $ cd .. |
|
150 | $ cd .. |
@@ -43,7 +43,7 b' Simple case' | |||||
43 |
|
43 | |||
44 | No race condition |
|
44 | No race condition | |
45 |
|
45 | |||
46 |
$ hg clone -U --stream ssh://user@dummy/test-repo stream-clone --debug | |
|
46 | $ hg clone -U --stream ssh://user@dummy/test-repo stream-clone --debug | grep -E '00(changelog|manifest)' | |
47 | adding [s] 00manifest.n (62 bytes) |
|
47 | adding [s] 00manifest.n (62 bytes) | |
48 | adding [s] 00manifest-*.nd (118 KB) (glob) |
|
48 | adding [s] 00manifest-*.nd (118 KB) (glob) | |
49 | adding [s] 00manifest.d (4?? KB) (glob) |
|
49 | adding [s] 00manifest.d (4?? KB) (glob) | |
@@ -52,7 +52,7 b' No race condition' | |||||
52 | adding [s] 00changelog-*.nd (118 KB) (glob) |
|
52 | adding [s] 00changelog-*.nd (118 KB) (glob) | |
53 | adding [s] 00changelog.d (3?? KB) (glob) |
|
53 | adding [s] 00changelog.d (3?? KB) (glob) | |
54 | adding [s] 00changelog.i (313 KB) |
|
54 | adding [s] 00changelog.i (313 KB) | |
55 |
$ ls -1 stream-clone/.hg/store/ | |
|
55 | $ ls -1 stream-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
56 | 00changelog-*.nd (glob) |
|
56 | 00changelog-*.nd (glob) | |
57 | 00changelog.n |
|
57 | 00changelog.n | |
58 | 00manifest-*.nd (glob) |
|
58 | 00manifest-*.nd (glob) | |
@@ -112,7 +112,7 b' Prepare a commit' | |||||
112 |
|
112 | |||
113 | Do a mix of clone and commit at the same time so that the file listed on disk differ at actual transfer time. |
|
113 | Do a mix of clone and commit at the same time so that the file listed on disk differ at actual transfer time. | |
114 |
|
114 | |||
115 |
$ (hg clone -U --stream ssh://user@dummy/test-repo stream-clone-race-1 --debug 2>> clone-output | |
|
115 | $ (hg clone -U --stream ssh://user@dummy/test-repo stream-clone-race-1 --debug 2>> clone-output | grep -E '00(changelog|manifest)' >> clone-output; touch $HG_TEST_STREAM_WALKED_FILE_3) & | |
116 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 |
|
116 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 | |
117 | $ hg -R test-repo/ commit -m foo |
|
117 | $ hg -R test-repo/ commit -m foo | |
118 | created new head |
|
118 | created new head | |
@@ -211,7 +211,7 b' Check the initial state' | |||||
211 | Performe the mix of clone and full refresh of the nodemap, so that the files |
|
211 | Performe the mix of clone and full refresh of the nodemap, so that the files | |
212 | (and filenames) are different between listing time and actual transfer time. |
|
212 | (and filenames) are different between listing time and actual transfer time. | |
213 |
|
213 | |||
214 |
$ (hg clone -U --stream ssh://user@dummy/test-repo stream-clone-race-2 --debug 2>> clone-output-2 | |
|
214 | $ (hg clone -U --stream ssh://user@dummy/test-repo stream-clone-race-2 --debug 2>> clone-output-2 | grep -E '00(changelog|manifest)' >> clone-output-2; touch $HG_TEST_STREAM_WALKED_FILE_3) & | |
215 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 |
|
215 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 | |
216 | $ rm test-repo/.hg/store/00changelog.n |
|
216 | $ rm test-repo/.hg/store/00changelog.n | |
217 | $ rm test-repo/.hg/store/00changelog-*.nd |
|
217 | $ rm test-repo/.hg/store/00changelog-*.nd |
@@ -615,10 +615,10 b' read/write patterns.' | |||||
615 | $ hg share race-repo ./other-wc --config format.use-share-safe=yes |
|
615 | $ hg share race-repo ./other-wc --config format.use-share-safe=yes | |
616 | updating working directory |
|
616 | updating working directory | |
617 | 5001 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
617 | 5001 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
618 |
$ hg debugformat -R ./race-repo | |
|
618 | $ hg debugformat -R ./race-repo | grep -E 'share-safe|persistent-nodemap' | |
619 | share-safe: yes |
|
619 | share-safe: yes | |
620 | persistent-nodemap: yes |
|
620 | persistent-nodemap: yes | |
621 |
$ hg debugformat -R ./other-wc/ | |
|
621 | $ hg debugformat -R ./other-wc/ | grep -E 'share-safe|persistent-nodemap' | |
622 | share-safe: yes |
|
622 | share-safe: yes | |
623 | persistent-nodemap: yes |
|
623 | persistent-nodemap: yes | |
624 | $ hg -R ./other-wc update 'min(head())' |
|
624 | $ hg -R ./other-wc update 'min(head())' | |
@@ -818,7 +818,7 b' downgrading' | |||||
818 | - changelog |
|
818 | - changelog | |
819 | - manifest |
|
819 | - manifest | |
820 |
|
820 | |||
821 |
$ ls -1 .hg/store/ | |
|
821 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
822 | [1] |
|
822 | [1] | |
823 | $ hg debugnodemap --metadata |
|
823 | $ hg debugnodemap --metadata | |
824 |
|
824 | |||
@@ -860,7 +860,7 b' upgrading' | |||||
860 | - changelog |
|
860 | - changelog | |
861 | - manifest |
|
861 | - manifest | |
862 |
|
862 | |||
863 |
$ ls -1 .hg/store/ | |
|
863 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
864 | 00changelog-*.nd (glob) |
|
864 | 00changelog-*.nd (glob) | |
865 | 00changelog.n |
|
865 | 00changelog.n | |
866 | 00manifest-*.nd (glob) |
|
866 | 00manifest-*.nd (glob) | |
@@ -891,7 +891,7 b' Running unrelated upgrade' | |||||
891 | - changelog |
|
891 | - changelog | |
892 | - manifest |
|
892 | - manifest | |
893 |
|
893 | |||
894 |
$ ls -1 .hg/store/ | |
|
894 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
895 | 00changelog-*.nd (glob) |
|
895 | 00changelog-*.nd (glob) | |
896 | 00changelog.n |
|
896 | 00changelog.n | |
897 | 00manifest-*.nd (glob) |
|
897 | 00manifest-*.nd (glob) | |
@@ -916,7 +916,7 b' standard clone' | |||||
916 | The persistent nodemap should exist after a streaming clone |
|
916 | The persistent nodemap should exist after a streaming clone | |
917 |
|
917 | |||
918 | $ hg clone --pull --quiet -U test-repo standard-clone |
|
918 | $ hg clone --pull --quiet -U test-repo standard-clone | |
919 |
$ ls -1 standard-clone/.hg/store/ | |
|
919 | $ ls -1 standard-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
920 | 00changelog-*.nd (glob) |
|
920 | 00changelog-*.nd (glob) | |
921 | 00changelog.n |
|
921 | 00changelog.n | |
922 | 00manifest-*.nd (glob) |
|
922 | 00manifest-*.nd (glob) | |
@@ -936,7 +936,7 b' local clone' | |||||
936 | The persistent nodemap should exist after a streaming clone |
|
936 | The persistent nodemap should exist after a streaming clone | |
937 |
|
937 | |||
938 | $ hg clone -U test-repo local-clone |
|
938 | $ hg clone -U test-repo local-clone | |
939 |
$ ls -1 local-clone/.hg/store/ | |
|
939 | $ ls -1 local-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
940 | 00changelog-*.nd (glob) |
|
940 | 00changelog-*.nd (glob) | |
941 | 00changelog.n |
|
941 | 00changelog.n | |
942 | 00manifest-*.nd (glob) |
|
942 | 00manifest-*.nd (glob) |
@@ -6,7 +6,7 b' test --time' | |||||
6 |
|
6 | |||
7 | Function to check that statprof ran |
|
7 | Function to check that statprof ran | |
8 | $ statprofran () { |
|
8 | $ statprofran () { | |
9 |
> |
|
9 | > grep -E 'Sample count:|No samples recorded' > /dev/null | |
10 | > } |
|
10 | > } | |
11 |
|
11 | |||
12 | test --profile |
|
12 | test --profile |
@@ -16,8 +16,6 b' initialize repository' | |||||
16 | create hgweb invocation script |
|
16 | create hgweb invocation script | |
17 |
|
17 | |||
18 | $ cat >hgweb.cgi <<HGWEB |
|
18 | $ cat >hgweb.cgi <<HGWEB | |
19 | > import cgitb |
|
|||
20 | > cgitb.enable() |
|
|||
21 | > from mercurial import demandimport; demandimport.enable() |
|
19 | > from mercurial import demandimport; demandimport.enable() | |
22 | > from mercurial.hgweb import hgweb |
|
20 | > from mercurial.hgweb import hgweb | |
23 | > from mercurial.hgweb import wsgicgi |
|
21 | > from mercurial.hgweb import wsgicgi |
@@ -5,7 +5,7 b' Setup' | |||||
5 |
|
5 | |||
6 | $ cat > $TESTTMP/pretxnchangegroup.sh << EOF |
|
6 | $ cat > $TESTTMP/pretxnchangegroup.sh << EOF | |
7 | > #!/bin/sh |
|
7 | > #!/bin/sh | |
8 |
> env | |
|
8 | > env | grep -E "^HG_USERVAR_(DEBUG|BYPASS_REVIEW)" | sort | |
9 | > exit 0 |
|
9 | > exit 0 | |
10 | > EOF |
|
10 | > EOF | |
11 | $ cat >> $HGRCPATH << EOF |
|
11 | $ cat >> $HGRCPATH << EOF |
@@ -37,7 +37,7 b' Verify corrupt cache error message' | |||||
37 | > EOF |
|
37 | > EOF | |
38 | $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 |
|
38 | $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 | |
39 | $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 |
|
39 | $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 | |
40 |
$ hg up tip 2>&1 | |
|
40 | $ hg up tip 2>&1 | grep -E "^[^ ].*unexpected remotefilelog" | |
41 | abort: unexpected remotefilelog header: illegal format |
|
41 | abort: unexpected remotefilelog header: illegal format | |
42 |
|
42 | |||
43 | Verify detection and remediation when remotefilelog.validatecachelog is set |
|
43 | Verify detection and remediation when remotefilelog.validatecachelog is set |
@@ -106,6 +106,11 b'' | |||||
106 | # Test that warning is displayed when the repo path is malformed |
|
106 | # Test that warning is displayed when the repo path is malformed | |
107 |
|
107 | |||
108 | $ printf "asdas\0das" >> $CACHEDIR/repos |
|
108 | $ printf "asdas\0das" >> $CACHEDIR/repos | |
|
109 | #if py311 | |||
|
110 | $ hg gc | |||
|
111 | finished: removed 0 of 4 files (0.00 GB to 0.00 GB) | |||
|
112 | #else | |||
109 | $ hg gc |
|
113 | $ hg gc | |
110 | abort: invalid path asdas\x00da: .*(null|NULL).* (re) |
|
114 | abort: invalid path asdas\x00da: .*(null|NULL).* (re) | |
111 | [255] |
|
115 | [255] | |
|
116 | #endif |
@@ -41,7 +41,7 b'' | |||||
41 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
|
41 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) | |
42 | $ hg repack |
|
42 | $ hg repack | |
43 |
|
43 | |||
44 |
$ find $CACHEDIR | sort | |
|
44 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
45 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
45 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack | |
46 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack |
|
46 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack | |
47 |
|
47 | |||
@@ -72,7 +72,7 b'' | |||||
72 |
|
72 | |||
73 | $ hg repack |
|
73 | $ hg repack | |
74 |
|
74 | |||
75 |
$ find $CACHEDIR | sort | |
|
75 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
76 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
76 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack | |
77 | $TESTTMP/hgcache/master/packs/a4e1d094ec2aee8a08a4d6d95a13c634cc7d7394.datapack |
|
77 | $TESTTMP/hgcache/master/packs/a4e1d094ec2aee8a08a4d6d95a13c634cc7d7394.datapack | |
78 |
|
78 | |||
@@ -98,7 +98,7 b'' | |||||
98 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
|
98 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) | |
99 | $ hg repack |
|
99 | $ hg repack | |
100 |
|
100 | |||
101 |
$ find $CACHEDIR | sort | |
|
101 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
102 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
102 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack | |
103 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack |
|
103 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack | |
104 |
|
104 | |||
@@ -130,7 +130,7 b'' | |||||
130 |
|
130 | |||
131 | $ hg repack |
|
131 | $ hg repack | |
132 |
|
132 | |||
133 |
$ find $CACHEDIR | sort | |
|
133 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
134 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
134 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack | |
135 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack |
|
135 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack | |
136 |
|
136 |
@@ -61,10 +61,10 b' Check that we can upgrade to sidedata' | |||||
61 | ------------------------------------- |
|
61 | ------------------------------------- | |
62 |
|
62 | |||
63 | $ hg init up-no-side-data --config experimental.revlogv2=no |
|
63 | $ hg init up-no-side-data --config experimental.revlogv2=no | |
64 |
$ hg debugformat -v -R up-no-side-data | |
|
64 | $ hg debugformat -v -R up-no-side-data | grep -E 'changelog-v2|revlog-v2' | |
65 | revlog-v2: no no no |
|
65 | revlog-v2: no no no | |
66 | changelog-v2: no no no |
|
66 | changelog-v2: no no no | |
67 |
$ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | |
|
67 | $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | grep -E 'changelog-v2|revlog-v2' | |
68 | revlog-v2: no yes no |
|
68 | revlog-v2: no yes no | |
69 | changelog-v2: no no no |
|
69 | changelog-v2: no no no | |
70 | $ hg debugupgraderepo -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data > /dev/null |
|
70 | $ hg debugupgraderepo -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data > /dev/null | |
@@ -73,10 +73,10 b' Check that we can downgrade from sidedat' | |||||
73 | ----------------------------------------- |
|
73 | ----------------------------------------- | |
74 |
|
74 | |||
75 | $ hg init up-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data |
|
75 | $ hg init up-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | |
76 |
$ hg debugformat -v -R up-side-data | |
|
76 | $ hg debugformat -v -R up-side-data | grep -E 'changelog-v2|revlog-v2' | |
77 | revlog-v2: yes no no |
|
77 | revlog-v2: yes no no | |
78 | changelog-v2: no no no |
|
78 | changelog-v2: no no no | |
79 |
$ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | |
|
79 | $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | grep -E 'changelog-v2|revlog-v2' | |
80 | revlog-v2: yes no no |
|
80 | revlog-v2: yes no no | |
81 | changelog-v2: no no no |
|
81 | changelog-v2: no no no | |
82 | $ hg debugupgraderepo -R up-side-data --config experimental.revlogv2=no > /dev/null |
|
82 | $ hg debugupgraderepo -R up-side-data --config experimental.revlogv2=no > /dev/null |
@@ -312,7 +312,7 b' Mix files and subdirectories, both "glob' | |||||
312 | $ touch dir1/notshown |
|
312 | $ touch dir1/notshown | |
313 | $ hg commit -A dir1/notshown -m "notshown" |
|
313 | $ hg commit -A dir1/notshown -m "notshown" | |
314 | $ hg debugsparse --include 'dir1/dir2' |
|
314 | $ hg debugsparse --include 'dir1/dir2' | |
315 |
$ "$PYTHON" $TESTDIR/list-tree.py . | |
|
315 | $ "$PYTHON" $TESTDIR/list-tree.py . | grep -E -v '\.[\/]\.hg' | |
316 | ./ |
|
316 | ./ | |
317 | ./dir1/ |
|
317 | ./dir1/ | |
318 | ./dir1/dir2/ |
|
318 | ./dir1/dir2/ | |
@@ -320,7 +320,7 b' Mix files and subdirectories, both "glob' | |||||
320 | ./hide.orig |
|
320 | ./hide.orig | |
321 | $ hg debugsparse --delete 'dir1/dir2' |
|
321 | $ hg debugsparse --delete 'dir1/dir2' | |
322 | $ hg debugsparse --include 'glob:dir1/dir2' |
|
322 | $ hg debugsparse --include 'glob:dir1/dir2' | |
323 |
$ "$PYTHON" $TESTDIR/list-tree.py . | |
|
323 | $ "$PYTHON" $TESTDIR/list-tree.py . | grep -E -v '\.[\/]\.hg' | |
324 | ./ |
|
324 | ./ | |
325 | ./dir1/ |
|
325 | ./dir1/ | |
326 | ./dir1/dir2/ |
|
326 | ./dir1/dir2/ |
@@ -396,7 +396,7 b' Archive wdir() with subrepos' | |||||
396 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) |
|
396 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) | |
397 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) |
|
397 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) | |
398 | \r (no-eol) (esc) |
|
398 | \r (no-eol) (esc) | |
399 |
$ diff -r . ../wdir | |
|
399 | $ diff -r . ../wdir | grep -E -v '\.hg$|^Common subdirectories:' | |
400 | Only in ../wdir: .hg_archival.txt |
|
400 | Only in ../wdir: .hg_archival.txt | |
401 |
|
401 | |||
402 | $ find ../wdir -type f | sort |
|
402 | $ find ../wdir -type f | sort | |
@@ -815,7 +815,7 b' largefile and a normal file. Then a lar' | |||||
815 | $ hg add sub1/sub2 |
|
815 | $ hg add sub1/sub2 | |
816 |
|
816 | |||
817 | $ hg archive -S -r 'wdir()' ../wdir2 |
|
817 | $ hg archive -S -r 'wdir()' ../wdir2 | |
818 |
$ diff -r . ../wdir2 | |
|
818 | $ diff -r . ../wdir2 | grep -E -v '\.hg$|^Common subdirectories:' | |
819 | Only in ../wdir2: .hg_archival.txt |
|
819 | Only in ../wdir2: .hg_archival.txt | |
820 | Only in .: .hglf |
|
820 | Only in .: .hglf | |
821 | Only in .: foo |
|
821 | Only in .: foo | |
@@ -854,7 +854,7 b" Test 'wdir()' modified file archiving wi" | |||||
854 | $ echo 'mod' > large.bin |
|
854 | $ echo 'mod' > large.bin | |
855 | $ echo 'mod' > sub1/sub2/large.dat |
|
855 | $ echo 'mod' > sub1/sub2/large.dat | |
856 | $ hg archive -S -r 'wdir()' ../wdir3 |
|
856 | $ hg archive -S -r 'wdir()' ../wdir3 | |
857 |
$ diff -r . ../wdir3 | |
|
857 | $ diff -r . ../wdir3 | grep -E -v '\.hg$|^Common subdirectories' | |
858 | Only in ../wdir3: .hg_archival.txt |
|
858 | Only in ../wdir3: .hg_archival.txt | |
859 | Only in .: .hglf |
|
859 | Only in .: .hglf | |
860 | Only in .: foo |
|
860 | Only in .: foo |
@@ -263,7 +263,7 b' make upstream git changes' | |||||
263 | make and push changes to hg without updating the subrepo |
|
263 | make and push changes to hg without updating the subrepo | |
264 |
|
264 | |||
265 | $ cd ../t |
|
265 | $ cd ../t | |
266 |
$ hg clone . ../td 2>&1 | |
|
266 | $ hg clone . ../td 2>&1 | grep -E -v '^Cloning into|^done\.' | |
267 | updating to branch default |
|
267 | updating to branch default | |
268 | cloning subrepo s from $TESTTMP/gitroot |
|
268 | cloning subrepo s from $TESTTMP/gitroot | |
269 | checking out detached HEAD in subrepository "s" |
|
269 | checking out detached HEAD in subrepository "s" |
@@ -436,7 +436,7 b' Test archiving to zip file (unzip output' | |||||
436 |
|
436 | |||
437 | (unzip date formating is unstable, we do not care about it and glob it out) |
|
437 | (unzip date formating is unstable, we do not care about it and glob it out) | |
438 |
|
438 | |||
439 |
$ unzip -l ../archive.zip | grep -v -- ----- | |
|
439 | $ unzip -l ../archive.zip | grep -v -- ----- | grep -E -v files$ | |
440 | Archive: ../archive.zip |
|
440 | Archive: ../archive.zip | |
441 | Length [ ]* Date [ ]* Time [ ]* Name (re) |
|
441 | Length [ ]* Date [ ]* Time [ ]* Name (re) | |
442 | 172 [0-9:\- ]* .hg_archival.txt (re) |
|
442 | 172 [0-9:\- ]* .hg_archival.txt (re) |
@@ -4,7 +4,7 b'' | |||||
4 | $ SVNREPOURL="`"$PYTHON" $TESTDIR/svnurlof.py \"$SVNREPOPATH\"`" |
|
4 | $ SVNREPOURL="`"$PYTHON" $TESTDIR/svnurlof.py \"$SVNREPOPATH\"`" | |
5 |
|
5 | |||
6 | $ filter_svn_output () { |
|
6 | $ filter_svn_output () { | |
7 |
> |
|
7 | > grep -E -v 'Committing|Transmitting|Updating|(^$)' || true | |
8 | > } |
|
8 | > } | |
9 |
|
9 | |||
10 | create subversion repo |
|
10 | create subversion repo |
@@ -227,7 +227,7 b' as default style, except for extra phase' | |||||
227 | $ hg log --style default > style.out |
|
227 | $ hg log --style default > style.out | |
228 | $ cmp log.out style.out || diff -u log.out style.out |
|
228 | $ cmp log.out style.out || diff -u log.out style.out | |
229 | $ hg log -T phases > phases.out |
|
229 | $ hg log -T phases > phases.out | |
230 |
$ diff -U 0 log.out phases.out | |
|
230 | $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' | |
231 | +phase: draft |
|
231 | +phase: draft | |
232 | +phase: draft |
|
232 | +phase: draft | |
233 | +phase: draft |
|
233 | +phase: draft | |
@@ -243,7 +243,7 b' as default style, except for extra phase' | |||||
243 | $ hg log -v --style default > style.out |
|
243 | $ hg log -v --style default > style.out | |
244 | $ cmp log.out style.out || diff -u log.out style.out |
|
244 | $ cmp log.out style.out || diff -u log.out style.out | |
245 | $ hg log -v -T phases > phases.out |
|
245 | $ hg log -v -T phases > phases.out | |
246 |
$ diff -U 0 log.out phases.out | |
|
246 | $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' | |
247 | +phase: draft |
|
247 | +phase: draft | |
248 | +phase: draft |
|
248 | +phase: draft | |
249 | +phase: draft |
|
249 | +phase: draft | |
@@ -299,7 +299,7 b' Default style should also preserve color' | |||||
299 | $ hg --color=debug log --style default > style.out |
|
299 | $ hg --color=debug log --style default > style.out | |
300 | $ cmp log.out style.out || diff -u log.out style.out |
|
300 | $ cmp log.out style.out || diff -u log.out style.out | |
301 | $ hg --color=debug log -T phases > phases.out |
|
301 | $ hg --color=debug log -T phases > phases.out | |
302 |
$ diff -U 0 log.out phases.out | |
|
302 | $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' | |
303 | +[log.phase|phase: draft] |
|
303 | +[log.phase|phase: draft] | |
304 | +[log.phase|phase: draft] |
|
304 | +[log.phase|phase: draft] | |
305 | +[log.phase|phase: draft] |
|
305 | +[log.phase|phase: draft] | |
@@ -315,7 +315,7 b' Default style should also preserve color' | |||||
315 | $ hg --color=debug -v log --style default > style.out |
|
315 | $ hg --color=debug -v log --style default > style.out | |
316 | $ cmp log.out style.out || diff -u log.out style.out |
|
316 | $ cmp log.out style.out || diff -u log.out style.out | |
317 | $ hg --color=debug -v log -T phases > phases.out |
|
317 | $ hg --color=debug -v log -T phases > phases.out | |
318 |
$ diff -U 0 log.out phases.out | |
|
318 | $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' | |
319 | +[log.phase|phase: draft] |
|
319 | +[log.phase|phase: draft] | |
320 | +[log.phase|phase: draft] |
|
320 | +[log.phase|phase: draft] | |
321 | +[log.phase|phase: draft] |
|
321 | +[log.phase|phase: draft] |
@@ -2013,7 +2013,7 b' downgrade it from dirstate-v2 automatica' | |||||
2013 | For multiple change at the same time |
|
2013 | For multiple change at the same time | |
2014 | ------------------------------------ |
|
2014 | ------------------------------------ | |
2015 |
|
2015 | |||
2016 |
$ hg debugformat -R auto-upgrade | |
|
2016 | $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' | |
2017 | dirstate-v2: no |
|
2017 | dirstate-v2: no | |
2018 | tracked-hint: yes |
|
2018 | tracked-hint: yes | |
2019 | share-safe: no |
|
2019 | share-safe: no | |
@@ -2031,7 +2031,7 b' For multiple change at the same time' | |||||
2031 | (see `hg help config.format.use-share-safe` for details) |
|
2031 | (see `hg help config.format.use-share-safe` for details) | |
2032 | automatically downgrading repository from the `tracked-hint` feature |
|
2032 | automatically downgrading repository from the `tracked-hint` feature | |
2033 | (see `hg help config.format.use-dirstate-tracked-hint` for details) |
|
2033 | (see `hg help config.format.use-dirstate-tracked-hint` for details) | |
2034 |
$ hg debugformat -R auto-upgrade | |
|
2034 | $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' | |
2035 | dirstate-v2: yes |
|
2035 | dirstate-v2: yes | |
2036 | tracked-hint: no |
|
2036 | tracked-hint: no | |
2037 | share-safe: yes |
|
2037 | share-safe: yes | |
@@ -2040,7 +2040,7 b' Quiet upgrade and downgrade' | |||||
2040 | --------------------------- |
|
2040 | --------------------------- | |
2041 |
|
2041 | |||
2042 |
|
2042 | |||
2043 |
$ hg debugformat -R auto-upgrade | |
|
2043 | $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' | |
2044 | dirstate-v2: yes |
|
2044 | dirstate-v2: yes | |
2045 | tracked-hint: no |
|
2045 | tracked-hint: no | |
2046 | share-safe: yes |
|
2046 | share-safe: yes | |
@@ -2055,7 +2055,7 b' Quiet upgrade and downgrade' | |||||
2055 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ |
|
2055 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ | |
2056 | > --config format.use-share-safe=no |
|
2056 | > --config format.use-share-safe=no | |
2057 |
|
2057 | |||
2058 |
$ hg debugformat -R auto-upgrade | |
|
2058 | $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' | |
2059 | dirstate-v2: no |
|
2059 | dirstate-v2: no | |
2060 | tracked-hint: yes |
|
2060 | tracked-hint: yes | |
2061 | share-safe: no |
|
2061 | share-safe: no | |
@@ -2070,7 +2070,7 b' Quiet upgrade and downgrade' | |||||
2070 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \ |
|
2070 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \ | |
2071 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ |
|
2071 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ | |
2072 | > --config format.use-share-safe=yes |
|
2072 | > --config format.use-share-safe=yes | |
2073 |
$ hg debugformat -R auto-upgrade | |
|
2073 | $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' | |
2074 | dirstate-v2: yes |
|
2074 | dirstate-v2: yes | |
2075 | tracked-hint: no |
|
2075 | tracked-hint: no | |
2076 | share-safe: yes |
|
2076 | share-safe: yes |
@@ -676,7 +676,7 b' Test split patterns on overflow' | |||||
676 | > EOF |
|
676 | > EOF | |
677 | $ "$PYTHON" printnum.py >> overflow.list |
|
677 | $ "$PYTHON" printnum.py >> overflow.list | |
678 | $ echo fenugreek >> overflow.list |
|
678 | $ echo fenugreek >> overflow.list | |
679 |
$ hg debugwalk 'listfile:overflow.list' 2>&1 | |
|
679 | $ hg debugwalk 'listfile:overflow.list' 2>&1 | grep -E -v '^xxx' | |
680 | f fennel fennel exact |
|
680 | f fennel fennel exact | |
681 | f fenugreek fenugreek exact |
|
681 | f fenugreek fenugreek exact | |
682 | $ cd .. |
|
682 | $ cd .. |
@@ -84,7 +84,7 b' Known exception should be caught, but pr' | |||||
84 | [255] |
|
84 | [255] | |
85 |
|
85 | |||
86 | $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ |
|
86 | $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ | |
87 |
> test 100000.0 abort --traceback 2>&1 | |
|
87 | > test 100000.0 abort --traceback 2>&1 | grep -E '(WorkerError|Abort)' | |
88 | raise error.Abort(b'known exception') |
|
88 | raise error.Abort(b'known exception') | |
89 | mercurial.error.Abort: known exception |
|
89 | mercurial.error.Abort: known exception | |
90 | raise error.WorkerError(status) |
|
90 | raise error.WorkerError(status) |
General Comments 0
You need to be logged in to leave comments.
Login now