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 | 246 | fc445f8abcf90b33db7c463816a1b3560681767f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmRTok8ZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVpZ5DACBv33k//ovzSbyH5/q+Xhk3TqNRY8IDOjoEhvDyu0bJHsvygOGXLUtHpQPth1RA4/c+AVNJrUeFvT02sLqqP2d9oSA9HEAYpOuzwgr1A+1o+Q2GyfD4cElP6KfiEe8oyFVOB0rfBgWNei1C0nnrhChQr5dOPR63uAFhHzkEsgsTFS7ONxZ1DHbe7gRV8OMMf1MatAtRzRexQJCqyNv7WodQdrKtjHqPKtlWl20dbwTHhzeiZbtjiTe0CVXVsOqnA1DQkO/IaiKQrn3zWdGY5ABbqQ1K0ceLcej4NFOeLo9ZrShndU3BuFUa9Dq9bnPYOI9wMqGoDh/GdTZkZEzBy5PTokY3AJHblbub49pi8YTenFcPdtd/v71AaNi3TKa45ZNhYVkPmRETYweHkLs3CIrSyeiBwU4RGuQZVD/GujAQB5yhk0w+LPMzBsHruD4vsgXwIraCzQIIJTjgyxKuAJGdGNUFYyxEpUkgz5G6MFrBKe8HO69y3Pm/qDNZ2maV8k= |
|
247 | 247 | da372c745e0f053bb7a64e74cccd15810d96341d 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSB7WkZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVoy+C/4zwO+Wxc3wr0aEzjVqAss7FuGS5e66H+0T3WzVgKIRMqiiOmUmmiNf+XloXlX4TOwoh9j9GNEpoZfV6TSwFSqV0LALaVIRRwrkJBDhnqw4eNBZbK5aBWNa2/21dkHecxF4KG3ai9kLwy2mtHxkDIy8T2LPvdx8pfNcYT4PZ19x2itqZLouBJqiZYehsqeMLNF2vRqkq+rQ+D2sFGLljgPo0JlpkOZ4IL7S/cqTOBG1sQ6KJK+hAE1kF1lhvK796VhKKXVnWVgqJLyg7ZI6168gxeFv5cyCtb+FUXJJ/5SOkxaCKJf3mg3DIYi3G7xjwB5CfUGW8A2qexgEjXeV42Mu7/Mkmn/aeTdL0UcRK3oBVHJwqt/fJlGFqVWt4/9g9KW5mJvTDQYBo/zjLyvKFEbnSLzhEP+9SvthCrtX0UYkKxOGi2M2Z7e9wgBB0gY8a36kA739lkNu6r3vH/FVh0aPTMWukLToELS90WgfViNr16lDnCeDjMgg97OKxWdOW6U= |
|
248 | 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 | 262 | fc445f8abcf90b33db7c463816a1b3560681767f 6.4.3 |
|
263 | 263 | da372c745e0f053bb7a64e74cccd15810d96341d 6.4.4 |
|
264 | 264 | 271a4ab29605ffa0bae5d3208eaa21a95427ff92 6.4.5 |
|
265 | bb42988c7e156931b0ff1e93732b98173ebbcb7f 6.5rc0 | |
|
266 | 3ffc7209bbae5804a53084c9dc2d41139e88c867 6.5 |
@@ -146,10 +146,8 b' testpats = [' | |||
|
146 | 146 | r'\[[^\]]+==', |
|
147 | 147 | '[ foo == bar ] is a bashism, use [ foo = bar ] instead', |
|
148 | 148 | ), |
|
149 | ( | |
|
150 | r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w', | |
|
151 | "use egrep for extended grep syntax", | |
|
152 | ), | |
|
149 | (r'(^|\|\s*)egrep', "use grep -E for extended grep syntax"), | |
|
150 | (r'(^|\|\s*)fgrep', "use grep -F for fixed string grepping"), | |
|
153 | 151 | (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"), |
|
154 | 152 | (r'(?<!!)/bin/', "don't use explicit paths for tools"), |
|
155 | 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 | 22 | stages: |
|
2 | 23 | - tests |
|
3 | 24 |
@@ -9,9 +9,6 b' config = b"/path/to/repo/or/config"' | |||
|
9 | 9 | # (consult "installed modules" path from 'hg debuginstall'): |
|
10 | 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 | 12 | from mercurial import demandimport |
|
16 | 13 | |
|
17 | 14 | demandimport.enable() |
@@ -8,9 +8,6 b' config = b"/path/to/repo/or/config"' | |||
|
8 | 8 | # (consult "installed modules" path from 'hg debuginstall'): |
|
9 | 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 | 11 | # enable demandloading to reduce startup time |
|
15 | 12 | from mercurial import demandimport; demandimport.enable() |
|
16 | 13 |
@@ -55,6 +55,9 b' IGNORES = {' | |||
|
55 | 55 | 'builtins', |
|
56 | 56 | 'urwid.command_map', # for pudb |
|
57 | 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 | 63 | _pypy = '__pypy__' in sys.builtin_module_names |
@@ -248,7 +248,7 b' be controlled by the `clone-bundles.trig' | |||
|
248 | 248 | |
|
249 | 249 | This logic can be manually triggered using the `admin::clone-bundles-refresh` |
|
250 | 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 | 253 | [clone-bundles] |
|
254 | 254 | auto-generate.on-change=yes |
@@ -972,7 +972,15 b' def reposetup(ui, repo):' | |||
|
972 | 972 | targets = repo.ui.configlist( |
|
973 | 973 | b'clone-bundles', b'auto-generate.formats' |
|
974 | 974 | ) |
|
975 |
if enabled |
|
|
975 | if enabled: | |
|
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: | |
|
976 | 984 | tr.addpostclose(CAT_POSTCLOSE, make_auto_bundler(self)) |
|
977 | 985 | return tr |
|
978 | 986 |
@@ -82,7 +82,7 b' def decode(arg):' | |||
|
82 | 82 | uarg = arg.decode(_encoding) |
|
83 | 83 | if arg == uarg.encode(_encoding): |
|
84 | 84 | return uarg |
|
85 |
raise UnicodeError( |
|
|
85 | raise UnicodeError("Not local encoding") | |
|
86 | 86 | elif isinstance(arg, tuple): |
|
87 | 87 | return tuple(map(decode, arg)) |
|
88 | 88 | elif isinstance(arg, list): |
@@ -111,8 +111,8 b' def appendsep(s):' | |||
|
111 | 111 | try: |
|
112 | 112 | us = decode(s) |
|
113 | 113 | except UnicodeError: |
|
114 | us = s | |
|
115 |
if us and us[-1] not in |
|
|
114 | us = s # TODO: how to handle this bytes case?? | |
|
115 | if us and us[-1] not in ':/\\': | |
|
116 | 116 | s += pycompat.ossep |
|
117 | 117 | return s |
|
118 | 118 | |
@@ -148,13 +148,13 b' def wrapperforlistdir(func, args, kwds):' | |||
|
148 | 148 | if args: |
|
149 | 149 | args = list(args) |
|
150 | 150 | args[0] = appendsep(args[0]) |
|
151 |
if |
|
|
152 |
kwds[ |
|
|
151 | if 'path' in kwds: | |
|
152 | kwds['path'] = appendsep(kwds['path']) | |
|
153 | 153 | return func(*args, **kwds) |
|
154 | 154 | |
|
155 | 155 | |
|
156 | def wrapname(name, wrapper): | |
|
157 |
module, name = name.rsplit( |
|
|
156 | def wrapname(name: str, wrapper): | |
|
157 | module, name = name.rsplit('.', 1) | |
|
158 | 158 | module = sys.modules[module] |
|
159 | 159 | func = getattr(module, name) |
|
160 | 160 | |
@@ -168,7 +168,7 b' def wrapname(name, wrapper):' | |||
|
168 | 168 | # List of functions to be wrapped. |
|
169 | 169 | # NOTE: os.path.dirname() and os.path.basename() are safe because |
|
170 | 170 | # they use result of os.path.split() |
|
171 |
funcs = |
|
|
171 | funcs = '''os.path.join os.path.split os.path.splitext | |
|
172 | 172 | os.path.normpath os.makedirs mercurial.util.endswithsep |
|
173 | 173 | mercurial.util.splitpath mercurial.util.fscasesensitive |
|
174 | 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 | 178 | # These functions are required to be called with local encoded string |
|
179 | 179 | # because they expects argument is local encoded string and cause |
|
180 | 180 | # problem with unicode string. |
|
181 |
rfuncs = |
|
|
181 | rfuncs = '''mercurial.encoding.upper mercurial.encoding.lower | |
|
182 | 182 | mercurial.util._filenamebytestr''' |
|
183 | 183 | |
|
184 | 184 | # List of Windows specific functions to be wrapped. |
|
185 |
winfuncs = |
|
|
185 | winfuncs = '''os.path.splitunc''' | |
|
186 | 186 | |
|
187 | 187 | # codec and alias names of sjis and big5 to be faked. |
|
188 | 188 | problematic_encodings = b'''big5 big5-tw csbig5 big5hkscs big5-hkscs |
@@ -208,15 +208,15 b' def extsetup(ui):' | |||
|
208 | 208 | if pycompat.iswindows: |
|
209 | 209 | for f in winfuncs.split(): |
|
210 | 210 | wrapname(f, wrapper) |
|
211 |
wrapname( |
|
|
212 |
wrapname( |
|
|
211 | wrapname("mercurial.util.listdir", wrapperforlistdir) | |
|
212 | wrapname("mercurial.windows.listdir", wrapperforlistdir) | |
|
213 | 213 | # wrap functions to be called with local byte string arguments |
|
214 | 214 | for f in rfuncs.split(): |
|
215 | 215 | wrapname(f, reversewrapper) |
|
216 | 216 | # Check sys.args manually instead of using ui.debug() because |
|
217 | 217 | # command line options is not yet applied when |
|
218 | 218 | # extensions.loadall() is called. |
|
219 |
if |
|
|
219 | if '--debug' in sys.argv: | |
|
220 | 220 | ui.writenoi18n( |
|
221 | 221 | b"[win32mbcs] activated with encoding: %s\n" % _encoding |
|
222 | 222 | ) |
@@ -10,9 +10,6 b' config = b"/path/to/repo/or/config"' | |||
|
10 | 10 | # (consult "installed modules" path from 'hg debuginstall'): |
|
11 | 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 | 13 | from mercurial import demandimport |
|
17 | 14 | |
|
18 | 15 | demandimport.enable() |
@@ -4,7 +4,6 b'' | |||
|
4 | 4 | # GNU General Public License version 2 or any later version. |
|
5 | 5 | |
|
6 | 6 | |
|
7 | import struct | |
|
8 | 7 | from .i18n import _ |
|
9 | 8 | |
|
10 | 9 | from . import ( |
@@ -152,15 +151,13 b' class _dirstatemapcommon:' | |||
|
152 | 151 | b'dirstate only has a docket in v2 format' |
|
153 | 152 | ) |
|
154 | 153 | self._set_identity() |
|
155 | try: | |
|
154 | data = self._readdirstatefile() | |
|
155 | if data == b'' or data.startswith(docketmod.V2_FORMAT_MARKER): | |
|
156 | 156 | self._docket = docketmod.DirstateDocket.parse( |
|
157 |
|
|
|
157 | data, self._nodeconstants | |
|
158 | 158 | ) |
|
159 |
e |
|
|
160 | self._ui.debug(b"failed to read dirstate-v2 data") | |
|
161 | raise error.CorruptedDirstate( | |
|
162 | b"failed to read dirstate-v2 data" | |
|
163 | ) | |
|
159 | else: | |
|
160 | raise error.CorruptedDirstate(b"dirstate is not in v2 format") | |
|
164 | 161 | return self._docket |
|
165 | 162 | |
|
166 | 163 | def _read_v2_data(self): |
@@ -964,6 +964,7 b' impl OwningDirstateMap {' | |||
|
964 | 964 | map.root = Default::default(); |
|
965 | 965 | map.nodes_with_entry_count = 0; |
|
966 | 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 | 1 | use crate::errors::HgError; |
|
2 | use crate::revlog::Revision; | |
|
2 | 3 | use crate::revlog::{Node, NodePrefix}; |
|
3 | use crate::revlog::{Revision, NULL_REVISION}; | |
|
4 | 4 | use crate::revlog::{Revlog, RevlogEntry, RevlogError}; |
|
5 | 5 | use crate::utils::hg_path::HgPath; |
|
6 | 6 | use crate::vfs::Vfs; |
@@ -51,9 +51,6 b' impl Changelog {' | |||
|
51 | 51 | &self, |
|
52 | 52 | rev: Revision, |
|
53 | 53 | ) -> Result<ChangelogRevisionData, RevlogError> { |
|
54 | if rev == NULL_REVISION { | |
|
55 | return Ok(ChangelogRevisionData::null()); | |
|
56 | } | |
|
57 | 54 | self.entry_for_rev(rev)?.data() |
|
58 | 55 | } |
|
59 | 56 | |
@@ -336,6 +333,11 b' message",' | |||
|
336 | 333 | changelog.data_for_rev(NULL_REVISION)?, |
|
337 | 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 | 341 | Ok(()) |
|
340 | 342 | } |
|
341 | 343 | } |
@@ -225,20 +225,35 b' impl Revlog {' | |||
|
225 | 225 | &self, |
|
226 | 226 | node: NodePrefix, |
|
227 | 227 | ) -> Result<Revision, RevlogError> { |
|
228 | let looked_up = if let Some(nodemap) = &self.nodemap { | |
|
229 | nodemap | |
|
230 | .find_bin(&self.index, node)? | |
|
231 | .ok_or(RevlogError::InvalidRevision) | |
|
232 | } else { | |
|
233 | self.rev_from_node_no_persistent_nodemap(node) | |
|
234 | }; | |
|
235 | ||
|
228 | 236 | if node.is_prefix_of(&NULL_NODE) { |
|
229 | return Ok(NULL_REVISION); | |
|
237 | return match looked_up { | |
|
238 | Ok(_) => Err(RevlogError::AmbiguousPrefix), | |
|
239 | Err(RevlogError::InvalidRevision) => Ok(NULL_REVISION), | |
|
240 | res => res, | |
|
241 | }; | |
|
242 | }; | |
|
243 | ||
|
244 | looked_up | |
|
230 | 245 |
|
|
231 | 246 | |
|
232 | if let Some(nodemap) = &self.nodemap { | |
|
233 | return nodemap | |
|
234 | .find_bin(&self.index, node)? | |
|
235 | .ok_or(RevlogError::InvalidRevision); | |
|
236 | } | |
|
237 | ||
|
238 | // Fallback to linear scan when a persistent nodemap is not present. | |
|
239 | // This happens when the persistent-nodemap experimental feature is not | |
|
240 | // enabled, or for small revlogs. | |
|
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 | 257 | // TODO: consider building a non-persistent nodemap in memory to |
|
243 | 258 | // optimize these cases. |
|
244 | 259 | let mut found_by_prefix = None; |
@@ -547,6 +562,9 b" impl<'revlog> RevlogEntry<'revlog> {" | |||
|
547 | 562 | |
|
548 | 563 | pub fn data(&self) -> Result<Cow<'revlog, [u8]>, HgError> { |
|
549 | 564 | let data = self.rawdata()?; |
|
565 | if self.rev == NULL_REVISION { | |
|
566 | return Ok(data); | |
|
567 | } | |
|
550 | 568 | if self.is_censored() { |
|
551 | 569 | return Err(HgError::CensoredNodeError); |
|
552 | 570 | } |
@@ -669,6 +687,13 b' mod tests {' | |||
|
669 | 687 | assert_eq!(revlog.len(), 0); |
|
670 | 688 | assert!(revlog.get_entry(0).is_err()); |
|
671 | 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 | 699 | #[test] |
@@ -740,4 +765,65 b' mod tests {' | |||
|
740 | 765 | assert!(p2_entry.is_some()); |
|
741 | 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); | |
|
743 | 826 | } |
|
827 | }; | |
|
828 | } | |
|
829 | } |
@@ -112,7 +112,10 b" issetuptools = os.name == 'nt' or 'FORCE" | |||
|
112 | 112 | if issetuptools: |
|
113 | 113 | from setuptools import setup |
|
114 | 114 | else: |
|
115 | try: | |
|
115 | 116 | from distutils.core import setup |
|
117 | except ModuleNotFoundError: | |
|
118 | from setuptools import setup | |
|
116 | 119 | from distutils.ccompiler import new_compiler |
|
117 | 120 | from distutils.core import Command, Extension |
|
118 | 121 | from distutils.dist import Distribution |
@@ -3,12 +3,11 b'' | |||
|
3 | 3 | """dummy SMTP server for use in tests""" |
|
4 | 4 | |
|
5 | 5 | |
|
6 | import asyncore | |
|
7 | 6 | import optparse |
|
8 |
import s |
|
|
7 | import os | |
|
8 | import socket | |
|
9 | 9 | import ssl |
|
10 | 10 | import sys |
|
11 | import traceback | |
|
12 | 11 | |
|
13 | 12 | from mercurial import ( |
|
14 | 13 | pycompat, |
@@ -18,52 +17,95 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 | 26 | def log(msg): |
|
22 | 27 | sys.stdout.write(msg) |
|
23 | 28 | sys.stdout.flush() |
|
24 | 29 | |
|
25 | 30 | |
|
26 | class dummysmtpserver(smtpd.SMTPServer): | |
|
27 | def __init__(self, localaddr): | |
|
28 | smtpd.SMTPServer.__init__(self, localaddr, remoteaddr=None) | |
|
31 | def mocksmtpserversession(conn, addr): | |
|
32 | conn.send(b'220 smtp.example.com ESMTP\r\n') | |
|
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): | |
|
31 | log('%s from=%s to=%s\n' % (peer[0], mailfrom, ', '.join(rcpttos))) | |
|
41 | line = conn.recv(1024) | |
|
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): | |
|
34 | # On Windows, a bad SSL connection sometimes generates a WSAECONNRESET. | |
|
35 | # The default handler will shutdown this server, and then both the | |
|
36 | # current connection and subsequent ones fail on the client side with | |
|
37 | # "No connection could be made because the target machine actively | |
|
38 | # refused it". If we eat the error, then the client properly aborts in | |
|
39 | # the expected way, and the server is available for subsequent requests. | |
|
40 | traceback.print_exc() | |
|
51 | rcpttos = [] | |
|
52 | while True: | |
|
53 | line = conn.recv(1024) | |
|
54 | if not line.lower().startswith(b'rcpt to:'): | |
|
55 | break | |
|
56 | rcptto = line[8:].decode().rstrip() | |
|
57 | if rcptto.startswith('<') and rcptto.endswith('>'): | |
|
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): | |
|
44 | def __init__(self, localaddr, certfile): | |
|
45 | dummysmtpserver.__init__(self, localaddr) | |
|
46 | self._certfile = certfile | |
|
47 | ||
|
48 | def handle_accept(self): | |
|
49 | pair = self.accept() | |
|
50 | if not pair: | |
|
51 | return | |
|
52 | conn, addr = pair | |
|
87 | def run(host, port, certificate): | |
|
53 | 88 |
|
|
89 | with socket.socket(family, socket.SOCK_STREAM) as s: | |
|
90 | s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | |
|
91 | s.bind((host, port)) | |
|
92 | # log('listening at %s:%d\n' % (host, port)) | |
|
93 | s.listen(1) | |
|
54 | 94 | try: |
|
55 | # wrap_socket() would block, but we don't care | |
|
56 | conn = sslutil.wrapserversocket(conn, ui, certfile=self._certfile) | |
|
57 | except ssl.SSLError: | |
|
58 | log('%s ssl error\n' % addr[0]) | |
|
95 | while True: | |
|
96 | conn, addr = s.accept() | |
|
97 | if certificate: | |
|
98 | try: | |
|
99 | conn = sslutil.wrapserversocket( | |
|
100 | conn, ui, certfile=certificate | |
|
101 | ) | |
|
102 | except ssl.SSLError as e: | |
|
103 | log('%s ssl error: %s\n' % (addr[0], e)) | |
|
59 | 104 | conn.close() |
|
60 | return | |
|
61 | smtpd.SMTPChannel(self, conn, addr) | |
|
62 | ||
|
63 | ||
|
64 | def run(): | |
|
65 | try: | |
|
66 | asyncore.loop() | |
|
105 | continue | |
|
106 | log("connection from %s:%s\n" % addr) | |
|
107 | mocksmtpserversession(conn, addr) | |
|
108 | conn.close() | |
|
67 | 109 | except KeyboardInterrupt: |
|
68 | 110 | pass |
|
69 | 111 | |
@@ -93,26 +135,18 b' def main():' | |||
|
93 | 135 | op.add_option('--pid-file', metavar='FILE') |
|
94 | 136 | op.add_option('--tls', choices=['none', 'smtps'], default='none') |
|
95 | 137 | op.add_option('--certificate', metavar='FILE') |
|
138 | op.add_option('--logfile', metavar='FILE') | |
|
96 | 139 | |
|
97 | 140 | opts, args = op.parse_args() |
|
98 |
if opts.tls == 'smtps' |
|
|
99 | op.error('--certificate must be specified') | |
|
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) | |
|
141 | if (opts.tls == 'smtps') != bool(opts.certificate): | |
|
142 | op.error('--certificate must be specified with --tls=smtps') | |
|
109 | 143 | |
|
110 | 144 | server.runservice( |
|
111 | 145 | bytesvars(opts), |
|
112 | initfn=init, | |
|
113 | runfn=run, | |
|
146 | runfn=lambda: run(opts.address, opts.port, opts.certificate), | |
|
114 | 147 | runargs=[pycompat.sysexecutable, pycompat.fsencode(__file__)] |
|
115 | 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 | 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 | 51 | $ hg -R clone1 update -C tip |
|
52 | 52 | cloning subrepo subrepo from $TESTTMP/test/subrepo |
|
53 | 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 | 55 | share2/.hg/sharedpath |
|
56 | 56 | share2/subrepo/.hg/sharedpath |
|
57 | 57 | $ hg -R share2 unshare |
|
58 | 58 | unsharing subrepo 'subrepo' |
|
59 |
$ find share2 | |
|
|
59 | $ find share2 | grep -E 'sharedpath|00.+\.i' | sort | |
|
60 | 60 | share2/.hg/00changelog.i |
|
61 | 61 | share2/.hg/sharedpath.old |
|
62 | 62 | share2/.hg/store/00changelog.i |
@@ -566,7 +566,7 b' old file -- date clamped to 1980' | |||
|
566 | 566 | $ hg add old |
|
567 | 567 | $ hg commit -m old |
|
568 | 568 | $ hg archive ../old.zip |
|
569 |
$ unzip -l ../old.zip | grep -v -- ----- | |
|
|
569 | $ unzip -l ../old.zip | grep -v -- ----- | grep -E -v files$ | |
|
570 | 570 | Archive: ../old.zip |
|
571 | 571 | \s*Length.* (re) |
|
572 | 572 | *172*80*00:00*old/.hg_archival.txt (glob) |
@@ -57,7 +57,7 b' another bad extension' | |||
|
57 | 57 | |
|
58 | 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 | 61 | *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow |
|
62 | 62 | Traceback (most recent call last): |
|
63 | 63 | Exception: bit bucket overflow |
@@ -88,7 +88,7 b' show traceback for ImportError of hgext.' | |||
|
88 | 88 | $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ |
|
89 | 89 | > | grep -v '^ ' \ |
|
90 | 90 | > | filterlog \ |
|
91 |
> | |
|
|
91 | > | grep -E 'extension..[^p]|^Exception|Traceback|ImportError|^YYYY|not import|ModuleNotFound' | |
|
92 | 92 | YYYY/MM/DD HH:MM:SS (PID)> loading extensions |
|
93 | 93 | YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries |
|
94 | 94 | YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg |
@@ -393,7 +393,7 b" a '*' entry in blackbox.track is interpr" | |||
|
393 | 393 | > EOF |
|
394 | 394 | (only look for entries with specific logged sources, otherwise this test is |
|
395 | 395 | pretty brittle) |
|
396 |
$ hg blackbox | |
|
|
396 | $ hg blackbox | grep -E '\[command(finish)?\]' | |
|
397 | 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 | 398 | 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [command]> blackbox |
|
399 | 399 | $ cd $TESTTMP |
@@ -230,17 +230,17 b' test shelving' | |||
|
230 | 230 | make the bookmark move by updating it on a, and then pulling with a local change |
|
231 | 231 | # add a commit to a |
|
232 | 232 | $ cd ../a |
|
233 |
$ hg up -C X | |
|
|
233 | $ hg up -C X |grep -F "activating bookmark X" | |
|
234 | 234 | (activating bookmark X) |
|
235 | 235 | # go back to b, and check out X |
|
236 | 236 | $ cd ../b |
|
237 |
$ hg up -C X | |
|
|
237 | $ hg up -C X |grep -F "activating bookmark X" | |
|
238 | 238 | (activating bookmark X) |
|
239 | 239 | # update and push from a |
|
240 | 240 | $ make_changes ../a |
|
241 | 241 | created new head |
|
242 | 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 | 244 | pulling from $TESTTMP/a |
|
245 | 245 | updating bookmark X |
|
246 | 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 | 71 | $ touch foo |
|
72 | 72 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am channeled --edit 2>&1 \ |
|
73 |
> | |
|
|
73 | > | grep -E "HG:|run 'cat" | |
|
74 | 74 | chg: debug: * run 'cat "*"' at '$TESTTMP/editor' (glob) |
|
75 | 75 | HG: Enter commit message. Lines beginning with 'HG:' are removed. |
|
76 | 76 | HG: Leave message empty to abort commit. |
@@ -84,7 +84,7 b' but no redirection should be made if out' | |||
|
84 | 84 | $ touch bar |
|
85 | 85 | $ CHGDEBUG= HGEDITOR=cat chg ci -Am bufferred --edit \ |
|
86 | 86 | > --config extensions.pushbuffer="$TESTTMP/pushbuffer.py" 2>&1 \ |
|
87 |
> | |
|
|
87 | > | grep -E "HG:|run 'cat" | |
|
88 | 88 | [1] |
|
89 | 89 | |
|
90 | 90 | check that commit commands succeeded: |
@@ -237,14 +237,14 b' isolate socket directory for stable resu' | |||
|
237 | 237 | |
|
238 | 238 | warm up server: |
|
239 | 239 | |
|
240 |
$ CHGDEBUG= chg log 2>&1 | |
|
|
240 | $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' | |
|
241 | 241 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
|
242 | 242 | |
|
243 | 243 | new server should be started if extension modified: |
|
244 | 244 | |
|
245 | 245 | $ sleep 1 |
|
246 | 246 | $ touch dummyext.py |
|
247 |
$ CHGDEBUG= chg log 2>&1 | |
|
|
247 | $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' | |
|
248 | 248 | chg: debug: * instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob) |
|
249 | 249 | chg: debug: * instruction: reconnect (glob) |
|
250 | 250 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
@@ -252,7 +252,7 b' new server should be started if extensio' | |||
|
252 | 252 | old server will shut down, while new server should still be reachable: |
|
253 | 253 | |
|
254 | 254 | $ sleep 2 |
|
255 |
$ CHGDEBUG= chg log 2>&1 | ( |
|
|
255 | $ CHGDEBUG= chg log 2>&1 | (grep -E 'instruction|start' || true) | |
|
256 | 256 | |
|
257 | 257 | socket file should never be unlinked by old server: |
|
258 | 258 | (simulates unowned socket by updating mtime, which makes sure server exits |
@@ -268,7 +268,7 b' at polling cycle)' | |||
|
268 | 268 | since no server is reachable from socket file, new server should be started: |
|
269 | 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 | 272 | chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) |
|
273 | 273 | |
|
274 | 274 | shut down servers and restore environment: |
@@ -495,7 +495,7 b' share the same server' | |||
|
495 | 495 | > } |
|
496 | 496 | $ newchg() { |
|
497 | 497 | > chg --kill-chg-daemon |
|
498 |
> filteredchg "$@" | |
|
|
498 | > filteredchg "$@" | grep -E -v 'start cmdserver' || true | |
|
499 | 499 | > } |
|
500 | 500 | (--profile isn't permanently on just because it was specified when chg was |
|
501 | 501 | started) |
@@ -561,12 +561,12 b' If CHGHG is not set, chg will set it bef' | |||
|
561 | 561 | $ hg --kill-chg-daemon |
|
562 | 562 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ |
|
563 | 563 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ |
|
564 |
> | |
|
|
564 | > | grep -E 'CHGHG|start' | |
|
565 | 565 | chg: debug: * start cmdserver at * (glob) |
|
566 | 566 | CHGHG=/*/install/bin/hg (glob) |
|
567 | 567 | |
|
568 | 568 | Running the same command a second time shouldn't spawn a new command server. |
|
569 | 569 | $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ |
|
570 | 570 | > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ |
|
571 |
> | |
|
|
571 | > | grep -E 'CHGHG|start' | |
|
572 | 572 | CHGHG=/*/install/bin/hg (glob) |
@@ -12,8 +12,6 b' initialize repository' | |||
|
12 | 12 | $ cat >hgweb.cgi <<HGWEB |
|
13 | 13 | > # |
|
14 | 14 | > # An example CGI script to use hgweb, edit as necessary |
|
15 | > import cgitb | |
|
16 | > cgitb.enable() | |
|
17 | 15 | > from mercurial import demandimport; demandimport.enable() |
|
18 | 16 | > from mercurial.hgweb import hgweb |
|
19 | 17 | > from mercurial.hgweb import wsgicgi |
@@ -245,7 +245,7 b' The resulting clone should not use share' | |||
|
245 | 245 | |
|
246 | 246 | $ hg clone --quiet --stream -U http://localhost:$HGPORT clone-from-share |
|
247 | 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 | 249 | [1] |
|
250 | 250 | |
|
251 | 251 | $ killdaemons.py |
@@ -714,7 +714,7 b' Test clone from the repository in (emula' | |||
|
714 | 714 | $ hg -R src commit -m '#0' |
|
715 | 715 | $ hg -R src log -q |
|
716 | 716 | 0:e1bab28bca43 |
|
717 |
$ hg -R src debugrevlog -c | |
|
|
717 | $ hg -R src debugrevlog -c | grep -E 'format|flags' | |
|
718 | 718 | format : 0 |
|
719 | 719 | flags : (none) |
|
720 | 720 | $ hg root -R src -T json | sed 's|\\\\|\\|g' |
@@ -10,7 +10,6 b' initial setup' | |||
|
10 | 10 | > |
|
11 | 11 | > [clone-bundles] |
|
12 | 12 | > auto-generate.on-change = yes |
|
13 | > auto-generate.formats = v2 | |
|
14 | 13 | > upload-command = cp "\$HGCB_BUNDLE_PATH" "$TESTTMP"/final-upload/ |
|
15 | 14 | > delete-command = rm -f "$TESTTMP/final-upload/\$HGCB_BASENAME" |
|
16 | 15 | > url-template = file://$TESTTMP/final-upload/{basename} |
@@ -25,9 +24,36 b' initial setup' | |||
|
25 | 24 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
26 | 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 | 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 | 57 | $ touch foo |
|
32 | 58 | $ hg -q commit -A -m 'add foo' |
|
33 | 59 | $ touch bar |
@@ -36,7 +36,7 b' Tests about metadataonlyctx' | |||
|
36 | 36 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
37 | 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 | 40 | RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1 |
|
41 | 41 | |
|
42 | 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 | 409 | Function to check that statprof ran |
|
410 | 410 | $ statprofran () { |
|
411 |
> |
|
|
411 | > grep -E 'Sample count:|No samples recorded' > /dev/null | |
|
412 | 412 | > } |
|
413 | 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 | 109 | cvs rlog output |
|
110 | 110 | |
|
111 |
$ cvscall -q rlog proj | |
|
|
111 | $ cvscall -q rlog proj | grep -E '^(RCS file|revision)' | |
|
112 | 112 | RCS file: $TESTTMP/cvsrepo/proj/file1,v |
|
113 | 113 | revision 1.1 |
|
114 | 114 | RCS file: $TESTTMP/cvsrepo/proj/Attic/file2,v |
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | #require svn svn-bindings |
|
2 | 2 | |
|
3 | 3 | $ filter_svn_output () { |
|
4 |
> |
|
|
4 | > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true | |
|
5 | 5 | > } |
|
6 | 6 | |
|
7 | 7 | $ cat <<EOF >> $HGRCPATH |
@@ -1,7 +1,7 b'' | |||
|
1 | 1 | #require svn svn-bindings |
|
2 | 2 | |
|
3 | 3 | $ filter_svn_output () { |
|
4 |
> |
|
|
4 | > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true | |
|
5 | 5 | > } |
|
6 | 6 | |
|
7 | 7 | $ cat >> $HGRCPATH <<EOF |
@@ -1649,7 +1649,7 b' We upgrade a repository that is not usin' | |||
|
1649 | 1649 | > [format] |
|
1650 | 1650 | > exp-use-copies-side-data-changeset = yes |
|
1651 | 1651 | > EOF |
|
1652 |
$ hg debugformat -v | |
|
|
1652 | $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' | |
|
1653 | 1653 | copies-sdc: no yes no |
|
1654 | 1654 | revlog-v2: no no no |
|
1655 | 1655 | changelog-v2: no yes no |
@@ -1675,7 +1675,7 b' We upgrade a repository that is not usin' | |||
|
1675 | 1675 | > enabled=yes |
|
1676 | 1676 | > numcpus=8 |
|
1677 | 1677 | > EOF |
|
1678 |
$ hg debugformat -v | |
|
|
1678 | $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' | |
|
1679 | 1679 | copies-sdc: no yes no |
|
1680 | 1680 | revlog-v2: no no no |
|
1681 | 1681 | changelog-v2: no yes no |
@@ -2919,14 +2919,14 b' In this case, the file hash from "f-2" i' | |||
|
2919 | 2919 | |
|
2920 | 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 | 2923 | 17ec97e605773eb44a117d1136b3849bcdc1924f 644 d (no-changeset !) |
|
2924 | 2924 | 5cce88bf349f7c742bb440f2c53f81db9c294279 644 d (changeset !) |
|
2925 | 2925 | $ hg status --copies --rev 'desc("i-0")' --rev 'desc("g-1")' d |
|
2926 | 2926 | A d |
|
2927 | 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 | 2930 | 7b79e2fe0c8924e0e598a82f048a7b024afa4d96 644 d (no-changeset !) |
|
2931 | 2931 | ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !) |
|
2932 | 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 | 32 | $ hg init repo |
|
33 | 33 | $ cd repo |
|
34 | 34 | #if sidedata |
|
35 |
$ hg debugformat -v | |
|
|
35 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
|
36 | 36 | format-variant repo config default |
|
37 | 37 | copies-sdc: yes yes no |
|
38 | 38 | revlog-v2: no no no |
|
39 | 39 | changelog-v2: yes yes no |
|
40 | 40 | #else |
|
41 |
$ hg debugformat -v | |
|
|
41 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
|
42 | 42 | format-variant repo config default |
|
43 | 43 | copies-sdc: no no no |
|
44 | 44 | revlog-v2: no no no |
@@ -419,7 +419,7 b' Test upgrading/downgrading to sidedata s' | |||
|
419 | 419 | |
|
420 | 420 | downgrading |
|
421 | 421 | |
|
422 |
$ hg debugformat -v | |
|
|
422 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
|
423 | 423 | format-variant repo config default |
|
424 | 424 | copies-sdc: yes yes no |
|
425 | 425 | revlog-v2: no no no |
@@ -445,7 +445,7 b' downgrading' | |||
|
445 | 445 | processed revlogs: |
|
446 | 446 | - changelog |
|
447 | 447 | |
|
448 |
$ hg debugformat -v | |
|
|
448 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
|
449 | 449 | format-variant repo config default |
|
450 | 450 | copies-sdc: no no no |
|
451 | 451 | revlog-v2: no no no |
@@ -470,7 +470,7 b' upgrading' | |||
|
470 | 470 | processed revlogs: |
|
471 | 471 | - changelog |
|
472 | 472 | |
|
473 |
$ hg debugformat -v | |
|
|
473 | $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' | |
|
474 | 474 | format-variant repo config default |
|
475 | 475 | copies-sdc: yes yes no |
|
476 | 476 | revlog-v2: no no no |
@@ -15,16 +15,16 b" Ensure debuild doesn't run the testsuite" | |||
|
15 | 15 | $ ls *.deb | grep -v 'dbg' |
|
16 | 16 | mercurial_*.deb (glob) |
|
17 | 17 | should have .so and .py |
|
18 |
$ dpkg --contents mercurial_*.deb | |
|
|
18 | $ dpkg --contents mercurial_*.deb | grep -E '(localrepo|parsers)' | |
|
19 | 19 | * ./usr/lib/python3/dist-packages/mercurial/cext/parsers*.so (glob) |
|
20 | 20 | * ./usr/lib/python3/dist-packages/mercurial/localrepo.py (glob) |
|
21 | 21 | * ./usr/lib/python3/dist-packages/mercurial/pure/parsers.py (glob) |
|
22 | 22 | should have zsh completions |
|
23 |
$ dpkg --contents mercurial_*.deb | |
|
|
23 | $ dpkg --contents mercurial_*.deb | grep -E 'zsh.*[^/]$' | |
|
24 | 24 | * ./usr/share/zsh/vendor-completions/_hg (glob) |
|
25 | 25 | should have chg |
|
26 |
$ dpkg --contents mercurial_*.deb | |
|
|
26 | $ dpkg --contents mercurial_*.deb | grep -E 'chg$' | |
|
27 | 27 | * ./usr/bin/chg (glob) |
|
28 | 28 | chg should come with a man page |
|
29 |
$ dpkg --contents mercurial_*.deb | |
|
|
29 | $ dpkg --contents mercurial_*.deb | grep -E 'man.*chg' | |
|
30 | 30 | * ./usr/share/man/man1/chg.1.gz (glob) |
@@ -576,7 +576,7 b' Test cache warming command' | |||
|
576 | 576 | Test debugcolor |
|
577 | 577 | |
|
578 | 578 | #if no-windows |
|
579 |
$ hg debugcolor --style --color always | |
|
|
579 | $ hg debugcolor --style --color always | grep -E 'mode|style|log\.' | |
|
580 | 580 | color mode: 'ansi' |
|
581 | 581 | available style: |
|
582 | 582 | \x1b[0;33mlog.changeset\x1b[0m: \x1b[0;33myellow\x1b[0m (esc) |
@@ -191,7 +191,7 b' Stripping from a transaction' | |||
|
191 | 191 | $ echo a > a |
|
192 | 192 | $ hg add a |
|
193 | 193 | $ hg commit -m a |
|
194 |
$ hg stripintr 2>&1 | |
|
|
194 | $ hg stripintr 2>&1 | grep -E -v '^(\*\*| )' | |
|
195 | 195 | Traceback (most recent call last): |
|
196 | 196 | *ProgrammingError: cannot strip from inside a transaction (glob) |
|
197 | 197 | |
@@ -384,7 +384,7 b' Stripping from a transaction' | |||
|
384 | 384 | |
|
385 | 385 | Test programming error failure: |
|
386 | 386 | |
|
387 |
$ hg buggytransaction 2>&1 | |
|
|
387 | $ hg buggytransaction 2>&1 | grep -E -v '^ ' | |
|
388 | 388 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) |
|
389 | 389 | ** which supports versions unknown of Mercurial. |
|
390 | 390 | ** Please disable "buggylocking" and try your action again. |
@@ -396,7 +396,7 b' Test programming error failure:' | |||
|
396 | 396 | Traceback (most recent call last): |
|
397 | 397 | *ProgrammingError: transaction requires locking (glob) |
|
398 | 398 | |
|
399 |
$ hg programmingerror 2>&1 | |
|
|
399 | $ hg programmingerror 2>&1 | grep -E -v '^ ' | |
|
400 | 400 | ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) |
|
401 | 401 | ** which supports versions unknown of Mercurial. |
|
402 | 402 | ** Please disable "buggylocking" and try your action again. |
@@ -10,8 +10,8 b' Set up a v1 repo' | |||
|
10 | 10 | $ hg init repo |
|
11 | 11 | $ cd repo |
|
12 | 12 | $ echo a > a |
|
13 | $ hg add a | |
|
14 | $ hg commit -m a | |
|
13 | $ touch file-with-somewhat-long-name-to-make-dirstate-v1-bigger-than-v2 | |
|
14 | $ hg commit -Aqm a | |
|
15 | 15 | $ hg debugrequires | grep dirstate |
|
16 | 16 | [1] |
|
17 | 17 | $ ls -1 .hg/dirstate* |
@@ -22,7 +22,7 b' Copy v1 dirstate' | |||
|
22 | 22 | |
|
23 | 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 | 26 | added: dirstate-v2 |
|
27 | 27 | $ hg debugrequires | grep dirstate |
|
28 | 28 | dirstate-v2 |
@@ -22,10 +22,10 b' built using docker.' | |||
|
22 | 22 | |
|
23 | 23 | main deb should have .so but no .py |
|
24 | 24 | $ ar x mercurial_*.deb |
|
25 |
$ tar tf data.tar* | |
|
|
25 | $ tar tf data.tar* | grep -E '(localrepo|parsers)' | |
|
26 | 26 | ./usr/lib/python2.7/dist-packages/mercurial/parsers*.so (glob) |
|
27 | 27 | mercurial-common should have .py but no .so or .pyc |
|
28 | 28 | $ ar x mercurial-common_*.deb |
|
29 |
$ tar tf data.tar* | |
|
|
29 | $ tar tf data.tar* | grep -E '(localrepo|parsers)' | |
|
30 | 30 | ./usr/lib/python2.7/dist-packages/mercurial/pure/parsers.py |
|
31 | 31 | ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py |
@@ -1375,7 +1375,7 b' accessed.' | |||
|
1375 | 1375 | throw external 1.0.0 |
|
1376 | 1376 | |
|
1377 | 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 | 1379 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1380 | 1380 | ** which supports versions unknown of Mercurial. |
|
1381 | 1381 | ** Please disable "throw" and try your action again. |
@@ -1387,7 +1387,7 b' No declared supported version, extension' | |||
|
1387 | 1387 | empty declaration of supported version, extension complains (but doesn't choke if |
|
1388 | 1388 | the value is improperly a str instead of bytes): |
|
1389 | 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 | 1391 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1392 | 1392 | ** which supports versions unknown of Mercurial. |
|
1393 | 1393 | ** Please disable "throw" and try your action again. |
@@ -1401,7 +1401,7 b' improperly a str instead of bytes):' | |||
|
1401 | 1401 | $ echo 'buglink = "http://example.com/bts"' >> throw.py |
|
1402 | 1402 | $ rm -f throw.pyc throw.pyo |
|
1403 | 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 | 1405 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1406 | 1406 | ** which supports versions unknown of Mercurial. |
|
1407 | 1407 | ** Please disable "throw" and try your action again. |
@@ -1418,7 +1418,7 b' If the extensions declare outdated versi' | |||
|
1418 | 1418 | $ rm -f throw.pyc throw.pyo |
|
1419 | 1419 | $ rm -Rf __pycache__ |
|
1420 | 1420 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1421 |
> throw 2>&1 | |
|
|
1421 | > throw 2>&1 | grep -E '^\*\*' | |
|
1422 | 1422 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) |
|
1423 | 1423 | ** which supports versions 1.9 of Mercurial. |
|
1424 | 1424 | ** Please disable "older" and try your action again. |
@@ -1432,7 +1432,7 b' One extension only tested with older, on' | |||
|
1432 | 1432 | $ rm -f older.pyc older.pyo |
|
1433 | 1433 | $ rm -Rf __pycache__ |
|
1434 | 1434 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1435 |
> throw 2>&1 | |
|
|
1435 | > throw 2>&1 | grep -E '^\*\*' | |
|
1436 | 1436 | ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) |
|
1437 | 1437 | ** which supports versions 1.9 of Mercurial. |
|
1438 | 1438 | ** Please disable "older" and try your action again. |
@@ -1446,7 +1446,7 b' Older extension is tested with current v' | |||
|
1446 | 1446 | $ rm -f older.pyc older.pyo |
|
1447 | 1447 | $ rm -Rf __pycache__ |
|
1448 | 1448 | $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ |
|
1449 |
> throw 2>&1 | |
|
|
1449 | > throw 2>&1 | grep -E '^\*\*' | |
|
1450 | 1450 | ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 |
|
1451 | 1451 | ** which supports versions 2.1 of Mercurial. |
|
1452 | 1452 | ** Please disable "throw" and try your action again. |
@@ -1457,7 +1457,7 b' Older extension is tested with current v' | |||
|
1457 | 1457 | |
|
1458 | 1458 | Ability to point to a different point |
|
1459 | 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 | 1461 | ** unknown exception encountered, please report by visiting |
|
1462 | 1462 | ** Your Local Goat Lenders |
|
1463 | 1463 | ** Python * (glob) |
@@ -1472,7 +1472,7 b' Declare the version as supporting this h' | |||
|
1472 | 1472 | > fi |
|
1473 | 1473 | $ rm -f throw.pyc throw.pyo |
|
1474 | 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 | 1476 | ** unknown exception encountered, please report by visiting |
|
1477 | 1477 | ** https://mercurial-scm.org/wiki/BugTracker |
|
1478 | 1478 | ** Python * (glob) |
@@ -1484,7 +1484,7 b' Patch version is ignored during compatib' | |||
|
1484 | 1484 | $ echo "util.version = lambda:b'3.2.2'" >> throw.py |
|
1485 | 1485 | $ rm -f throw.pyc throw.pyo |
|
1486 | 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 | 1488 | ** unknown exception encountered, please report by visiting |
|
1489 | 1489 | ** https://mercurial-scm.org/wiki/BugTracker |
|
1490 | 1490 | ** Python * (glob) |
@@ -1595,7 +1595,7 b' Refuse to load extensions with minimum v' | |||
|
1595 | 1595 | > util.version = lambda: b'3.6' |
|
1596 | 1596 | > minimumhgversion = b'3.7' |
|
1597 | 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 | 1599 | (third party extension minversion requires version 3.7 or newer of Mercurial (current: 3.6); disabling) |
|
1600 | 1600 | |
|
1601 | 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 | 1605 | > util.version = lambda: b'3.6.1' |
|
1606 | 1606 | > minimumhgversion = b'3.6' |
|
1607 | 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 | 1609 | [1] |
|
1610 | 1610 | |
|
1611 | 1611 | Can load minimum version identical to current |
@@ -1615,7 +1615,7 b' Can load minimum version identical to cu' | |||
|
1615 | 1615 | > util.version = lambda: b'3.5' |
|
1616 | 1616 | > minimumhgversion = b'3.5' |
|
1617 | 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 | 1619 | [1] |
|
1620 | 1620 | |
|
1621 | 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 | 215 | raise error.Abort(msg) |
|
216 | 216 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
|
217 | 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 | 219 | File "*/tests/flagprocessorext.py", line *, in extsetup (glob) |
|
220 | 220 | mercurial.error.Abort: cannot register multiple processors on flag '0x8'. |
|
221 | 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 | 358 | $ hg status |
|
359 | 359 | heads mismatch, rebuilding dagcache |
|
360 | 360 | M beta |
|
361 |
$ git status | |
|
|
361 | $ git status | grep -E -v '^$|^ \(use ' | |
|
362 | 362 | On branch master |
|
363 | 363 | Changes not staged for commit: |
|
364 | 364 | modified: beta |
@@ -799,7 +799,7 b' Disabled extension gets suggested' | |||
|
799 | 799 | |
|
800 | 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 | 803 | -g --[no-]git use git extended diff format (default: on from |
|
804 | 804 | config) |
|
805 | 805 | |
@@ -1585,7 +1585,7 b' Help subsection:' | |||
|
1585 | 1585 | Show nested definitions |
|
1586 | 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 | 1589 | \s*3 (re) |
|
1590 | 1590 | |
|
1591 | 1591 | $ hg help config.profiling.type.ls |
@@ -1598,7 +1598,7 b' Show nested definitions' | |||
|
1598 | 1598 | |
|
1599 | 1599 | Separate sections from subsections |
|
1600 | 1600 | |
|
1601 |
$ hg help config.format | |
|
|
1601 | $ hg help config.format | grep -E '^ ("|-)|^\s*$' | uniq | |
|
1602 | 1602 | "format" |
|
1603 | 1603 | -------- |
|
1604 | 1604 | |
@@ -1660,7 +1660,7 b' note to use help -c for general hg help ' | |||
|
1660 | 1660 | |
|
1661 | 1661 | Test templating help |
|
1662 | 1662 | |
|
1663 |
$ hg help templating | |
|
|
1663 | $ hg help templating | grep -E '(desc|diffstat|firstline|nonempty) ' | |
|
1664 | 1664 | desc String. The text of the changeset description. |
|
1665 | 1665 | diffstat String. Statistics of changes with the following format: |
|
1666 | 1666 | firstline Any text. Returns the first line of text. |
@@ -1701,12 +1701,12 b' Test help hooks' | |||
|
1701 | 1701 | |
|
1702 | 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 | 1705 | [1] |
|
1706 | 1706 | |
|
1707 | 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 | 1710 | [1] |
|
1711 | 1711 | |
|
1712 | 1712 | Test -s / --system |
@@ -1720,11 +1720,11 b' Test -s / --system' | |||
|
1720 | 1720 | |
|
1721 | 1721 | Test -e / -c / -k combinations |
|
1722 | 1722 | |
|
1723 |
$ hg help -c| |
|
|
1723 | $ hg help -c|grep -E '^[A-Z].*:|^ debug' | |
|
1724 | 1724 | Commands: |
|
1725 |
$ hg help -e| |
|
|
1725 | $ hg help -e|grep -E '^[A-Z].*:|^ debug' | |
|
1726 | 1726 | Extensions: |
|
1727 |
$ hg help -k| |
|
|
1727 | $ hg help -k|grep -E '^[A-Z].*:|^ debug' | |
|
1728 | 1728 | Topics: |
|
1729 | 1729 | Commands: |
|
1730 | 1730 | Extensions: |
@@ -1735,11 +1735,11 b' Test -e / -c / -k combinations' | |||
|
1735 | 1735 | [10] |
|
1736 | 1736 | $ hg help -e schemes |head -1 |
|
1737 | 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 | 1739 | Commands: |
|
1740 |
$ hg help -e -k a | |
|
|
1740 | $ hg help -e -k a |grep -E '^(Topics|Extensions|Commands):' | |
|
1741 | 1741 | Extensions: |
|
1742 |
$ hg help -e -c -k date | |
|
|
1742 | $ hg help -e -c -k date |grep -E '^(Topics|Extensions|Commands):' | |
|
1743 | 1743 | Extensions: |
|
1744 | 1744 | Commands: |
|
1745 | 1745 | $ hg help -c commit > /dev/null |
@@ -69,7 +69,7 b' repo page should send CSP by default, in' | |||
|
69 | 69 | |
|
70 | 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 | 73 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> |
|
74 | 74 | <script type="text/javascript"> |
|
75 | 75 | <script type="text/javascript"> |
@@ -104,7 +104,7 b' repo page should have nonce, no ETag' | |||
|
104 | 104 | |
|
105 | 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 | 108 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) |
|
109 | 109 | <script type="text/javascript" src="/repo1/static/mercurial.js"></script> |
|
110 | 110 | <script type="text/javascript" nonce="*"> (glob) |
@@ -125,7 +125,7 b' static page sends CSP' | |||
|
125 | 125 | |
|
126 | 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 | 129 | content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) |
|
130 | 130 | <script type="text/javascript" src="/static/mercurial.js"></script> |
|
131 | 131 | <script type="text/javascript" nonce="*"> (glob) |
@@ -318,7 +318,7 b' set up hgweb with git diffs + noprefix' | |||
|
318 | 318 | patch header and diffstat |
|
319 | 319 | |
|
320 | 320 | $ get-with-headers.py localhost:$HGPORT 'rev/0' \ |
|
321 |
> | |
|
|
321 | > | grep -E 'files changed|---|\+\+\+' | |
|
322 | 322 | 2 files changed, 2 insertions(+), 0 deletions(-) |
|
323 | 323 | <span id="l1.2" class="minusline">--- /dev/null</span><a href="#l1.2"></a> |
|
324 | 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 | 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 | 41 | <li><a href="/graph/tip?style=paper">graph</a></li> |
|
42 | 42 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
|
43 | 43 | <li><a href="/file/tip?style=paper">browse</a></li> |
@@ -52,7 +52,7 b' Set up the repo' | |||
|
52 | 52 | <a href="/shortlog/tip?revcount=120&style=paper">more</a> |
|
53 | 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 | 56 | <li><a href="/shortlog/tip?style=paper">log</a></li> |
|
57 | 57 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
|
58 | 58 | <li><a href="/file/tip?style=paper">browse</a></li> |
@@ -67,7 +67,7 b' Set up the repo' | |||
|
67 | 67 | <a href="/graph/tip?revcount=120&style=paper">more</a> |
|
68 | 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 | 71 | <li><a href="/shortlog/tip?style=paper">log</a></li> |
|
72 | 72 | <li><a href="/graph/tip?style=paper">graph</a></li> |
|
73 | 73 | <li><a href="/rev/tip?style=paper">changeset</a></li> |
@@ -77,24 +77,24 b' Set up the repo' | |||
|
77 | 77 | <a href="/file/tip/dir/?style=paper"> |
|
78 | 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 | 81 | <a href="/shortlog/default?style=paper" class="open"> |
|
82 | 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 | 85 | <a href="/rev/tip?style=paper"> |
|
86 | 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 | 89 | <a href="/rev/xyzzy?style=paper"> |
|
90 | 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 | 93 | <a href="/rev/9d8c40cba617?style=paper">third</a> |
|
94 | 94 | <a href="/rev/a7c1559b7bba?style=paper">second</a> |
|
95 | 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 | 98 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
99 | 99 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
100 | 100 | <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li> |
@@ -105,7 +105,7 b' Set up the repo' | |||
|
105 | 105 | <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td> |
|
106 | 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 | 109 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
110 | 110 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
111 | 111 | <li><a href="/file/xyzzy?style=paper">browse</a></li> |
@@ -119,7 +119,7 b' Set up the repo' | |||
|
119 | 119 | <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a> |
|
120 | 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 | 123 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
124 | 124 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
|
125 | 125 | <li><a href="/file/xyzzy?style=paper">browse</a></li> |
@@ -133,7 +133,7 b' Set up the repo' | |||
|
133 | 133 | <a href="/graph/xyzzy?revcount=120&style=paper">more</a> |
|
134 | 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 | 137 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
138 | 138 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
139 | 139 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
@@ -143,7 +143,7 b' Set up the repo' | |||
|
143 | 143 | <a href="/file/xyzzy/dir/?style=paper"> |
|
144 | 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 | 147 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
148 | 148 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
149 | 149 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
@@ -158,7 +158,7 b' Set up the repo' | |||
|
158 | 158 | <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> |
|
159 | 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 | 162 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> |
|
163 | 163 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> |
|
164 | 164 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
@@ -181,7 +181,7 b' Set up the repo' | |||
|
181 | 181 | <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a> |
|
182 | 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 | 185 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
186 | 186 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
187 | 187 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
@@ -205,7 +205,7 b' Set up the repo' | |||
|
205 | 205 | <a href="/diff/a7c1559b7bba/foo?style=paper">diff</a> |
|
206 | 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 | 209 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
210 | 210 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
211 | 211 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
@@ -220,7 +220,7 b' Set up the repo' | |||
|
220 | 220 | <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> |
|
221 | 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 | 224 | <li><a href="/shortlog/xyzzy?style=paper">log</a></li> |
|
225 | 225 | <li><a href="/graph/xyzzy?style=paper">graph</a></li> |
|
226 | 226 | <li><a href="/rev/xyzzy?style=paper">changeset</a></li> |
@@ -237,7 +237,7 b' Set up the repo' | |||
|
237 | 237 | |
|
238 | 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 | 241 | <li><a href="/graph/tip?style=coal">graph</a></li> |
|
242 | 242 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
|
243 | 243 | <li><a href="/file/tip?style=coal">browse</a></li> |
@@ -252,7 +252,7 b' Set up the repo' | |||
|
252 | 252 | <a href="/shortlog/tip?revcount=120&style=coal">more</a> |
|
253 | 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 | 256 | <li><a href="/shortlog/tip?style=coal">log</a></li> |
|
257 | 257 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
|
258 | 258 | <li><a href="/file/tip?style=coal">browse</a></li> |
@@ -267,7 +267,7 b' Set up the repo' | |||
|
267 | 267 | <a href="/graph/tip?revcount=120&style=coal">more</a> |
|
268 | 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 | 271 | <li><a href="/shortlog/tip?style=coal">log</a></li> |
|
272 | 272 | <li><a href="/graph/tip?style=coal">graph</a></li> |
|
273 | 273 | <li><a href="/rev/tip?style=coal">changeset</a></li> |
@@ -277,24 +277,24 b' Set up the repo' | |||
|
277 | 277 | <a href="/file/tip/dir/?style=coal"> |
|
278 | 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 | 281 | <a href="/shortlog/default?style=coal" class="open"> |
|
282 | 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 | 285 | <a href="/rev/tip?style=coal"> |
|
286 | 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 | 289 | <a href="/rev/xyzzy?style=coal"> |
|
290 | 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 | 293 | <a href="/rev/9d8c40cba617?style=coal">third</a> |
|
294 | 294 | <a href="/rev/a7c1559b7bba?style=coal">second</a> |
|
295 | 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 | 298 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
299 | 299 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
300 | 300 | <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li> |
@@ -305,7 +305,7 b' Set up the repo' | |||
|
305 | 305 | <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td> |
|
306 | 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 | 309 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
310 | 310 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
311 | 311 | <li><a href="/file/xyzzy?style=coal">browse</a></li> |
@@ -319,7 +319,7 b' Set up the repo' | |||
|
319 | 319 | <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a> |
|
320 | 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 | 323 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
324 | 324 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
|
325 | 325 | <li><a href="/file/xyzzy?style=coal">browse</a></li> |
@@ -333,7 +333,7 b' Set up the repo' | |||
|
333 | 333 | <a href="/graph/xyzzy?revcount=120&style=coal">more</a> |
|
334 | 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 | 337 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
338 | 338 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
339 | 339 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
@@ -343,7 +343,7 b' Set up the repo' | |||
|
343 | 343 | <a href="/file/xyzzy/dir/?style=coal"> |
|
344 | 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 | 347 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
348 | 348 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
349 | 349 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
@@ -358,7 +358,7 b' Set up the repo' | |||
|
358 | 358 | <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> |
|
359 | 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 | 362 | href="/atom-log/tip/foo" title="Atom feed for test:foo" /> |
|
363 | 363 | href="/rss-log/tip/foo" title="RSS feed for test:foo" /> |
|
364 | 364 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
@@ -381,7 +381,7 b' Set up the repo' | |||
|
381 | 381 | <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a> |
|
382 | 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 | 385 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
386 | 386 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
387 | 387 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
@@ -405,7 +405,7 b' Set up the repo' | |||
|
405 | 405 | <a href="/diff/a7c1559b7bba/foo?style=coal">diff</a> |
|
406 | 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 | 409 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
410 | 410 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
411 | 411 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
@@ -420,7 +420,7 b' Set up the repo' | |||
|
420 | 420 | <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> |
|
421 | 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 | 424 | <li><a href="/shortlog/xyzzy?style=coal">log</a></li> |
|
425 | 425 | <li><a href="/graph/xyzzy?style=coal">graph</a></li> |
|
426 | 426 | <li><a href="/rev/xyzzy?style=coal">changeset</a></li> |
@@ -437,7 +437,7 b' Set up the repo' | |||
|
437 | 437 | |
|
438 | 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 | 441 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | |
|
442 | 442 | <a class="list" href="/rev/9d8c40cba617?style=gitweb"> |
|
443 | 443 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | |
@@ -457,7 +457,7 b' Set up the repo' | |||
|
457 | 457 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
458 | 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 | 461 | <a href="/log/tip?style=gitweb">changelog</a> | |
|
462 | 462 | <a href="/graph/tip?style=gitweb">graph</a> | |
|
463 | 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 | 473 | <a href="/file/43c799df6e75?style=gitweb">files</a> |
|
474 | 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 | 477 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | |
|
478 | 478 | <a href="/graph/tip?style=gitweb">graph</a> | |
|
479 | 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 | 486 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> |
|
487 | 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 | 490 | <a href="/shortlog/tip?style=gitweb">shortlog</a> | |
|
491 | 491 | <a href="/log/tip?style=gitweb">changelog</a> | |
|
492 | 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 | 500 | <a href="/graph/tip?revcount=120&style=gitweb">more</a> |
|
501 | 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 | 504 | <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td> |
|
505 | 505 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | |
|
506 | 506 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
507 | 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 | 510 | <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td> |
|
511 | 511 | <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> | |
|
512 | 512 | <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> | |
|
513 | 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 | 516 | <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td> |
|
517 | 517 | <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> | |
|
518 | 518 | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | |
|
519 | 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 | 522 | <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> | |
|
523 | 523 | <a href="/file/tip/dir?style=gitweb">dir</a> |
|
524 | 524 | <a href="/file/tip/dir/?style=gitweb"></a> |
@@ -528,7 +528,7 b' Set up the repo' | |||
|
528 | 528 | <a href="/log/tip/foo?style=gitweb">revisions</a> | |
|
529 | 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 | 532 | <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> |
|
533 | 533 | <a class="title" href="/rev/9d8c40cba617?style=gitweb"> |
|
534 | 534 | <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/> |
@@ -537,7 +537,7 b' Set up the repo' | |||
|
537 | 537 | <a class="title" href="/rev/43c799df6e75?style=gitweb"> |
|
538 | 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 | 541 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
542 | 542 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
543 | 543 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
@@ -554,7 +554,7 b' Set up the repo' | |||
|
554 | 554 | <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> | |
|
555 | 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 | 558 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
559 | 559 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
|
560 | 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 | 567 | <a href="/file/43c799df6e75?style=gitweb">files</a> |
|
568 | 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 | 571 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
572 | 572 | <a href="/graph/xyzzy?style=gitweb">graph</a> | |
|
573 | 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 | 578 | <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> |
|
579 | 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 | 582 | <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | |
|
583 | 583 | <a href="/log/xyzzy?style=gitweb">changelog</a> | |
|
584 | 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 | 591 | <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a> |
|
592 | 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 | 595 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> | |
|
596 | 596 | <a href="/file/xyzzy/dir?style=gitweb">dir</a> |
|
597 | 597 | <a href="/file/xyzzy/dir/?style=gitweb"></a> |
@@ -601,7 +601,7 b' Set up the repo' | |||
|
601 | 601 | <a href="/log/xyzzy/foo?style=gitweb">revisions</a> | |
|
602 | 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 | 605 | <a href="/file/xyzzy/?style=gitweb">files</a> | |
|
606 | 606 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
607 | 607 | <a href="/file/tip/foo?style=gitweb">latest</a> | |
@@ -614,7 +614,7 b' Set up the repo' | |||
|
614 | 614 | <a class="list" href="/file/43c799df6e75/foo?style=gitweb"> |
|
615 | 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 | 618 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
|
619 | 619 | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> | |
|
620 | 620 | <a href="/diff/xyzzy/foo?style=gitweb">diff</a> | |
@@ -633,7 +633,7 b' Set up the repo' | |||
|
633 | 633 | <a href="/log/xyzzy/foo?revcount=120&style=gitweb">more</a> |
|
634 | 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 | 637 | <a href="/file/xyzzy/?style=gitweb">files</a> | |
|
638 | 638 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
639 | 639 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
@@ -655,7 +655,7 b' Set up the repo' | |||
|
655 | 655 | <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> |
|
656 | 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 | 659 | <a href="/file/xyzzy?style=gitweb">files</a> | |
|
660 | 660 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
661 | 661 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
@@ -668,7 +668,7 b' Set up the repo' | |||
|
668 | 668 | <a class="list" href="/diff/43c799df6e75/foo?style=gitweb"> |
|
669 | 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 | 672 | <a href="/file/xyzzy?style=gitweb">files</a> | |
|
673 | 673 | <a href="/rev/xyzzy?style=gitweb">changeset</a> | |
|
674 | 674 | <a href="/file/xyzzy/foo?style=gitweb">file</a> | |
@@ -683,7 +683,7 b' Set up the repo' | |||
|
683 | 683 | |
|
684 | 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 | 687 | <li><a href="/archive/tip.zip">zip</a></li> |
|
688 | 688 | <a href="/rev/9d8c40cba617?style=monoblue"> |
|
689 | 689 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
@@ -703,7 +703,7 b' Set up the repo' | |||
|
703 | 703 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
704 | 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 | 707 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
708 | 708 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
709 | 709 | <li><a href="/archive/tip.zip">zip</a></li> |
@@ -718,7 +718,7 b' Set up the repo' | |||
|
718 | 718 | <a href="/file/43c799df6e75?style=monoblue">files</a> |
|
719 | 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 | 722 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
723 | 723 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
724 | 724 | <li><a href="/archive/tip.zip">zip</a></li> |
@@ -727,7 +727,7 b' Set up the repo' | |||
|
727 | 727 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> |
|
728 | 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 | 731 | <li><a href="/file/tip?style=monoblue">files</a></li> |
|
732 | 732 | <li><a href="/archive/tip.zip">zip</a></li> |
|
733 | 733 | <a href="/rev/9d8c40cba617?style=monoblue">third</a> |
@@ -737,25 +737,25 b' Set up the repo' | |||
|
737 | 737 | <a href="/graph/tip?revcount=120&style=monoblue">more</a> |
|
738 | 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 | 741 | <td><a href="/rev/tip?style=monoblue">tip</a></td> |
|
742 | 742 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
|
743 | 743 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
744 | 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 | 747 | <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td> |
|
748 | 748 | <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> | |
|
749 | 749 | <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> | |
|
750 | 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 | 753 | <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td> |
|
754 | 754 | <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | |
|
755 | 755 | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | |
|
756 | 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 | 759 | <li><a href="/graph/tip?style=monoblue">graph</a></li> |
|
760 | 760 | <li><a href="/rev/tip?style=monoblue">changeset</a></li> |
|
761 | 761 | <li><a href="/archive/tip.zip">zip</a></li> |
@@ -767,13 +767,13 b' Set up the repo' | |||
|
767 | 767 | <a href="/log/tip/foo?style=monoblue">revisions</a> | |
|
768 | 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 | 771 | <li><a href="/archive/tip.zip">zip</a></li> |
|
772 | 772 | <a class="title" href="/rev/9d8c40cba617?style=monoblue"> |
|
773 | 773 | <a class="title" href="/rev/a7c1559b7bba?style=monoblue"> |
|
774 | 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 | 777 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
778 | 778 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
779 | 779 | <li><a href="/raw-rev/xyzzy">raw</a></li> |
@@ -789,7 +789,7 b' Set up the repo' | |||
|
789 | 789 | <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> | |
|
790 | 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 | 793 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
794 | 794 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
795 | 795 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
@@ -801,7 +801,7 b' Set up the repo' | |||
|
801 | 801 | <a href="/file/43c799df6e75?style=monoblue">files</a> |
|
802 | 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 | 805 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
806 | 806 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
807 | 807 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
@@ -809,7 +809,7 b' Set up the repo' | |||
|
809 | 809 | <a class="title" href="/rev/43c799df6e75?style=monoblue"> |
|
810 | 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 | 813 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
814 | 814 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
|
815 | 815 | <a href="/rev/a7c1559b7bba?style=monoblue">second</a> |
@@ -818,7 +818,7 b' Set up the repo' | |||
|
818 | 818 | <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a> |
|
819 | 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 | 822 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
823 | 823 | <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li> |
|
824 | 824 | <li><a href="/archive/xyzzy.zip">zip</a></li> |
@@ -830,7 +830,7 b' Set up the repo' | |||
|
830 | 830 | <a href="/log/xyzzy/foo?style=monoblue">revisions</a> | |
|
831 | 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 | 834 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
835 | 835 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> |
|
836 | 836 | <li><a href="/file/tip/foo?style=monoblue">latest</a></li> |
@@ -843,7 +843,7 b' Set up the repo' | |||
|
843 | 843 | <a href="/file/43c799df6e75/foo?style=monoblue"> |
|
844 | 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 | 847 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
848 | 848 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
849 | 849 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
@@ -861,7 +861,7 b' Set up the repo' | |||
|
861 | 861 | <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a> |
|
862 | 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 | 865 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
866 | 866 | <li><a href="/file/xyzzy/?style=monoblue">files</a></li> |
|
867 | 867 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
@@ -883,7 +883,7 b' Set up the repo' | |||
|
883 | 883 | <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> |
|
884 | 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 | 887 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
888 | 888 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
889 | 889 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
@@ -896,7 +896,7 b' Set up the repo' | |||
|
896 | 896 | <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd> |
|
897 | 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 | 900 | <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> |
|
901 | 901 | <li><a href="/file/xyzzy?style=monoblue">files</a></li> |
|
902 | 902 | <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> |
@@ -911,7 +911,7 b' Set up the repo' | |||
|
911 | 911 | |
|
912 | 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 | 915 | <a href="/log/tip?style=spartan">changelog</a> |
|
916 | 916 | <a href="/graph/tip?style=spartan">graph</a> |
|
917 | 917 | <a href="/file/tip/?style=spartan">files</a> |
@@ -922,7 +922,7 b' Set up the repo' | |||
|
922 | 922 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> |
|
923 | 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 | 926 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
927 | 927 | <a href="/graph/tip?style=spartan">graph</a> |
|
928 | 928 | <a href="/file/tip?style=spartan">files</a> |
@@ -939,7 +939,7 b' Set up the repo' | |||
|
939 | 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 | 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 | 943 | <a href="/log/tip?style=spartan">changelog</a> |
|
944 | 944 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
945 | 945 | <a href="/file/tip/?style=spartan">files</a> |
@@ -949,13 +949,13 b' Set up the repo' | |||
|
949 | 949 | <a href="/rev/43c799df6e75?style=spartan">first</a> |
|
950 | 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 | 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 | 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 | 959 | <a href="/log/tip?style=spartan">changelog</a> |
|
960 | 960 | <a href="/shortlog/tip?style=spartan">shortlog</a> |
|
961 | 961 | <a href="/graph/tip?style=spartan">graph</a> |
@@ -966,7 +966,7 b' Set up the repo' | |||
|
966 | 966 | <a href="/file/tip/dir/?style=spartan"> |
|
967 | 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 | 970 | <a href="/archive/tip.zip">zip</a> |
|
971 | 971 | <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> |
|
972 | 972 | <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a> |
@@ -982,7 +982,7 b' Set up the repo' | |||
|
982 | 982 | <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th> |
|
983 | 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 | 986 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
987 | 987 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
988 | 988 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -994,7 +994,7 b' Set up the repo' | |||
|
994 | 994 | <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> |
|
995 | 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 | 998 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
999 | 999 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1000 | 1000 | <a href="/file/xyzzy/?style=spartan">files</a> |
@@ -1004,7 +1004,7 b' Set up the repo' | |||
|
1004 | 1004 | <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> |
|
1005 | 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 | 1008 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1009 | 1009 | <a href="/graph/xyzzy?style=spartan">graph</a> |
|
1010 | 1010 | <a href="/file/xyzzy?style=spartan">files</a> |
@@ -1018,7 +1018,7 b' Set up the repo' | |||
|
1018 | 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 | 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 | 1022 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1023 | 1023 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1024 | 1024 | <a href="/file/xyzzy/?style=spartan">files</a> |
@@ -1027,7 +1027,7 b' Set up the repo' | |||
|
1027 | 1027 | <a href="/rev/43c799df6e75?style=spartan">first</a> |
|
1028 | 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 | 1031 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1032 | 1032 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1033 | 1033 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -1038,7 +1038,7 b' Set up the repo' | |||
|
1038 | 1038 | <a href="/file/xyzzy/dir/?style=spartan"> |
|
1039 | 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 | 1042 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1043 | 1043 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1044 | 1044 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -1051,7 +1051,7 b' Set up the repo' | |||
|
1051 | 1051 | <a href="/file/43c799df6e75/foo?style=spartan"> |
|
1052 | 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 | 1055 | href="/atom-log/tip/foo" title="Atom feed for test:foo"> |
|
1056 | 1056 | href="/rss-log/tip/foo" title="RSS feed for test:foo"> |
|
1057 | 1057 | <a href="/file/xyzzy/foo?style=spartan">file</a> |
@@ -1068,7 +1068,7 b' Set up the repo' | |||
|
1068 | 1068 | <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a> |
|
1069 | 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 | 1072 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1073 | 1073 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1074 | 1074 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -1090,7 +1090,7 b' Set up the repo' | |||
|
1090 | 1090 | <a href="/diff/a7c1559b7bba/foo?style=spartan">diff</a> |
|
1091 | 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 | 1094 | <a href="/log/xyzzy?style=spartan">changelog</a> |
|
1095 | 1095 | <a href="/shortlog/xyzzy?style=spartan">shortlog</a> |
|
1096 | 1096 | <a href="/graph/xyzzy?style=spartan">graph</a> |
@@ -783,19 +783,19 b' phase changes are refreshed (issue4061)' | |||
|
783 | 783 | |
|
784 | 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 | 787 | 200 Script output follows |
|
788 | 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 | 791 | 200 Script output follows |
|
792 | 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 | 795 | 200 Script output follows |
|
796 | 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 | 799 | 200 Script output follows |
|
800 | 800 | changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> |
|
801 | 801 |
@@ -236,7 +236,7 b' tip before edit' | |||
|
236 | 236 | |
|
237 | 237 | $ hg --config progress.debug=1 --debug \ |
|
238 | 238 | > histedit 1ddb6c90f2ee --commands - 2>&1 <<EOF | \ |
|
239 |
> |
|
|
239 | > grep -E 'editing|unresolved' | |
|
240 | 240 | > pick 1ddb6c90f2ee e |
|
241 | 241 | > fold 10c36dd37515 f |
|
242 | 242 | > EOF |
@@ -975,7 +975,7 b' test python hooks' | |||
|
975 | 975 | (run with --traceback for stack trace) |
|
976 | 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 | 979 | pulling from ../a |
|
980 | 980 | searching for changes |
|
981 | 981 | exception from first failed import attempt: |
@@ -1142,7 +1142,7 b' make sure --traceback works on hook impo' | |||
|
1142 | 1142 | $ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc |
|
1143 | 1143 | |
|
1144 | 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 | 1146 | exception from first failed import attempt: |
|
1147 | 1147 | Traceback (most recent call last): |
|
1148 | 1148 | ModuleNotFoundError: No module named 'somebogusmodule' |
@@ -371,7 +371,7 b' plain diff in email, no subject, no mess' | |||
|
371 | 371 | new changesets 80971e65b431 |
|
372 | 372 | updating to branch default |
|
373 | 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 | 375 | applying patch from stdin |
|
376 | 376 | abort: empty commit message |
|
377 | 377 | [10] |
@@ -26,7 +26,7 b' https://bz.mercurial-scm.org/show_bug.cg' | |||
|
26 | 26 | |
|
27 | 27 | $ hg log -r . --debug | grep files |
|
28 | 28 | [1] |
|
29 |
$ hg log -r . --debug -T json | |
|
|
29 | $ hg log -r . --debug -T json | grep -E '(added|removed|modified)' | |
|
30 | 30 | "added": [], |
|
31 | 31 | "modified": [], |
|
32 | 32 | "removed": [], |
@@ -186,7 +186,7 b' conditional above.' | |||
|
186 | 186 | share_dst/.hg/largefiles/dirstate |
|
187 | 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 | 190 | src/.hg/largefiles/dirstate |
|
191 | 191 | src/.hg/largefiles/e2fb5f2139d086ded2cb600d5a91a196e76bf020 |
|
192 | 192 |
@@ -411,7 +411,7 b' the GET/PUT request.' | |||
|
411 | 411 | > -A $TESTTMP/access.log -E $TESTTMP/errors.log |
|
412 | 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 | 416 | "objects": [ |
|
417 | 417 | { |
@@ -460,7 +460,7 b' Test that Digest Auth fails gracefully b' | |||
|
460 | 460 | (api=http://localhost:$HGPORT1/.git/info/lfs/objects/batch, action=upload) |
|
461 | 461 | [50] |
|
462 | 462 | |
|
463 |
$ hg -R auth_clone --debug push | |
|
|
463 | $ hg -R auth_clone --debug push | grep -E '^[{}]| ' | |
|
464 | 464 | { |
|
465 | 465 | "objects": [ |
|
466 | 466 | { |
@@ -116,7 +116,7 b' lfs requirement' | |||
|
116 | 116 | |
|
117 | 117 | $ hg debugrequires -R $TESTTMP/server/ | grep lfs |
|
118 | 118 | [1] |
|
119 |
$ hg push -v | |
|
|
119 | $ hg push -v | grep -E -v '^(uncompressed| )' | |
|
120 | 120 | pushing to $TESTTMP/server |
|
121 | 121 | searching for changes |
|
122 | 122 | lfs: found f11e77c257047a398492d8d6cb9f6acf3aa7c4384bb23080b43546053e183e4b in the local lfs store |
@@ -41,7 +41,7 b' Spot-check some randomly selected files:' | |||
|
41 | 41 | ./usr/local/share/zsh/site-functions/_hg 100644 0/0 |
|
42 | 42 | $ grep bash-completion/completions/hg boms.txt | cut -d ' ' -f 1,2,3 |
|
43 | 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 | 45 | ./usr/local/share/man/man1 40755 0/0 |
|
46 | 46 | ./usr/local/share/man/man1/chg.1 100644 0/0 |
|
47 | 47 | ./usr/local/share/man/man1/hg.1 100644 0/0 |
@@ -57,7 +57,7 b' Spot-check some randomly selected files:' | |||
|
57 | 57 | ./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0 |
|
58 | 58 | ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0 |
|
59 | 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 | 61 | ./usr/local/bin/chg 100755 0/0 |
|
62 | 62 | ./usr/local/bin/hg 100755 0/0 |
|
63 | 63 |
@@ -1581,8 +1581,6 b' Test that secret mq patch does not break' | |||
|
1581 | 1581 | > from mercurial import demandimport; demandimport.enable() |
|
1582 | 1582 | > from mercurial.hgweb import hgweb |
|
1583 | 1583 | > from mercurial.hgweb import wsgicgi |
|
1584 | > import cgitb | |
|
1585 | > cgitb.enable() | |
|
1586 | 1584 | > app = hgweb(b'.', b'test') |
|
1587 | 1585 | > wsgicgi.launch(app) |
|
1588 | 1586 | > HGWEB |
@@ -54,7 +54,7 b' create full repo' | |||
|
54 | 54 | |
|
55 | 55 | $ hg update -r 'desc("outside 4a")' |
|
56 | 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 | 58 | merging outside/f |
|
59 | 59 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
60 | 60 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -66,7 +66,7 b' create full repo' | |||
|
66 | 66 | $ echo 6 > outside/f |
|
67 | 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 | 70 | merging outside/f |
|
71 | 71 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
72 | 72 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -78,7 +78,7 b' create full repo' | |||
|
78 | 78 | $ echo 8 > outside/f |
|
79 | 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 | 82 | merging outside/f |
|
83 | 83 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
84 | 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 | 71 | Can merge conflicting changes inside narrow spec |
|
72 | 72 | |
|
73 | 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 | 75 | merging inside/f1 |
|
76 | 76 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
77 | 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 | 69 | $ hg update -q 0 |
|
70 | 70 | $ echo conflicting > inside/f1 |
|
71 | 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 | 73 | rebasing 6:cdce97fbf653 tip "conflicting inside/f1" |
|
74 | 74 | merging inside/f1 |
|
75 | 75 | unresolved conflicts (see 'hg resolve', then 'hg rebase --continue') |
@@ -55,7 +55,7 b' create full repo' | |||
|
55 | 55 | |
|
56 | 56 | $ hg update -r 'desc("outside 4a")' |
|
57 | 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 | 59 | merging outside/f |
|
60 | 60 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
61 | 61 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -67,7 +67,7 b' create full repo' | |||
|
67 | 67 | $ echo 6 > outside/f |
|
68 | 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 | 71 | merging outside/f |
|
72 | 72 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
73 | 73 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
@@ -79,7 +79,7 b' create full repo' | |||
|
79 | 79 | $ echo 8 > outside/f |
|
80 | 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 | 83 | merging outside/f |
|
84 | 84 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
85 | 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 | 279 | $ cd ../pullmaster |
|
280 | 280 | $ hg update -r 'desc("outside 4a")' |
|
281 | 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 | 283 | merging inside/f |
|
284 | 284 | merging outside/f |
|
285 | 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 | 294 | $ hg update -r 'desc("outside 4c")' |
|
295 | 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 | 297 | merging inside/f |
|
298 | 298 | merging outside/f |
|
299 | 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 | 10 | > # An example CGI script to use hgweb, edit as necessary |
|
11 | 11 | > |
|
12 | > import cgitb | |
|
13 | > cgitb.enable() | |
|
14 | > | |
|
15 | 12 | > from mercurial import demandimport; demandimport.enable() |
|
16 | 13 | > from mercurial.hgweb import hgweb |
|
17 | 14 | > from mercurial.hgweb import wsgicgi |
@@ -35,9 +32,6 b' before d74fc8dec2b4 still work.' | |||
|
35 | 32 | > # |
|
36 | 33 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
37 | 34 | > |
|
38 | > import cgitb | |
|
39 | > cgitb.enable() | |
|
40 | > | |
|
41 | 35 | > from mercurial import demandimport; demandimport.enable() |
|
42 | 36 | > from mercurial.hgweb import hgwebdir |
|
43 | 37 | > from mercurial.hgweb import wsgicgi |
@@ -9,9 +9,6 b' This is a rudimentary test of the CGI fi' | |||
|
9 | 9 | > # |
|
10 | 10 | > # An example CGI script to use hgweb, edit as necessary |
|
11 | 11 | > |
|
12 | > import cgitb | |
|
13 | > cgitb.enable() | |
|
14 | > | |
|
15 | 12 | > from mercurial import demandimport; demandimport.enable() |
|
16 | 13 | > from mercurial.hgweb import hgweb |
|
17 | 14 | > from mercurial.hgweb import wsgicgi |
@@ -32,9 +29,6 b' This is a rudimentary test of the CGI fi' | |||
|
32 | 29 | > # |
|
33 | 30 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
34 | 31 | > |
|
35 | > import cgitb | |
|
36 | > cgitb.enable() | |
|
37 | > | |
|
38 | 32 | > from mercurial import demandimport; demandimport.enable() |
|
39 | 33 | > from mercurial.hgweb import hgwebdir |
|
40 | 34 | > from mercurial.hgweb import wsgicgi |
@@ -17,7 +17,7 b' Create a repo, set the username to somet' | |||
|
17 | 17 | adding a |
|
18 | 18 | $ hg commit -m "Initial commit" |
|
19 | 19 | $ echo a >> a |
|
20 |
$ hg amend 2>&1 | |
|
|
20 | $ hg amend 2>&1 | grep -E -v '^(\*\*| )' | |
|
21 | 21 | transaction abort! |
|
22 | 22 | rollback completed |
|
23 | 23 | Traceback (most recent call last): |
@@ -674,19 +674,19 b' fix the divergence' | |||
|
674 | 674 | |
|
675 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 1237 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a><br> |
|
1238 | 1238 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a><br> |
|
1239 | 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 | 1241 | <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a><br> |
|
1242 | 1242 | phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a><br> |
|
1243 | 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 | 1245 | <td>orphan: obsolete parent <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a></td> |
|
1246 | 1246 | <td>phase-divergent: immutable predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> |
|
1247 | 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 | 1249 | <dd>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a></dd> |
|
1250 | 1250 | <dd>phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> |
|
1251 | 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 | 1253 | <td class="unstable">orphan: obsolete parent <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a></td> |
|
1254 | 1254 | <td class="unstable">phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> |
|
1255 | 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 | 9 | > # An example CGI script to use hgweb, edit as necessary |
|
10 | 10 | > |
|
11 |
> import |
|
|
12 | > cgitb.enable() | |
|
11 | > import os, sys | |
|
13 | 12 | > |
|
14 | 13 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install |
|
15 | 14 | > from mercurial import hgweb |
@@ -30,8 +29,7 b' This tests if CGI files from before d0db' | |||
|
30 | 29 | > # |
|
31 | 30 | > # An example CGI script to export multiple hgweb repos, edit as necessary |
|
32 | 31 | > |
|
33 |
> import |
|
|
34 | > cgitb.enable() | |
|
32 | > import sys | |
|
35 | 33 | > |
|
36 | 34 | > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install |
|
37 | 35 | > from mercurial import hgweb |
@@ -5,9 +5,8 b' Set up SMTP server:' | |||
|
5 | 5 | $ CERTSDIR="$TESTDIR/sslcerts" |
|
6 | 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 | 9 | > --tls smtps --certificate `pwd`/server.pem |
|
10 | listening at localhost:$HGPORT (?) | |
|
11 | 10 |
$ |
|
12 | 11 | |
|
13 | 12 | Set up repository: |
@@ -47,6 +46,11 b' we are able to load CA certs:' | |||
|
47 | 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 | 47 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
49 | 48 | [255] |
|
49 | ||
|
50 | $ cat ../log | |
|
51 | * ssl error: * (glob) | |
|
52 | $ : > ../log | |
|
53 | ||
|
50 | 54 | #endif |
|
51 | 55 | |
|
52 | 56 | #if defaultcacertsloaded |
@@ -58,6 +62,10 b' we are able to load CA certs:' | |||
|
58 | 62 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
59 | 63 | [255] |
|
60 | 64 | |
|
65 | $ cat ../log | |
|
66 | * ssl error: * (glob) | |
|
67 | $ : > ../log | |
|
68 | ||
|
61 | 69 | #endif |
|
62 | 70 | |
|
63 | 71 | $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true" |
@@ -75,6 +83,11 b' Without certificates:' | |||
|
75 | 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 | 84 | [150] |
|
77 | 85 | |
|
86 | $ cat ../log | |
|
87 | connection from * (glob) | |
|
88 | no hello: b'' | |
|
89 | $ : > ../log | |
|
90 | ||
|
78 | 91 | With global certificates: |
|
79 | 92 | |
|
80 | 93 | $ try --debug --config web.cacerts="$CERTSDIR/pub.pem" |
@@ -86,6 +99,40 b' With global certificates:' | |||
|
86 | 99 | (verifying remote certificate) |
|
87 | 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 | 136 | With invalid certificates: |
|
90 | 137 | |
|
91 | 138 | $ try --config web.cacerts="$CERTSDIR/pub-other.pem" |
@@ -96,4 +143,8 b' With invalid certificates:' | |||
|
96 | 143 | (?i)abort: .*?certificate.verify.failed.* (re) |
|
97 | 144 | [255] |
|
98 | 145 | |
|
146 | $ cat ../log | |
|
147 | * ssl error: * (glob) | |
|
148 | $ : > ../log | |
|
149 | ||
|
99 | 150 | $ cd .. |
@@ -43,7 +43,7 b' Simple case' | |||
|
43 | 43 | |
|
44 | 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 | 47 | adding [s] 00manifest.n (62 bytes) |
|
48 | 48 | adding [s] 00manifest-*.nd (118 KB) (glob) |
|
49 | 49 | adding [s] 00manifest.d (4?? KB) (glob) |
@@ -52,7 +52,7 b' No race condition' | |||
|
52 | 52 | adding [s] 00changelog-*.nd (118 KB) (glob) |
|
53 | 53 | adding [s] 00changelog.d (3?? KB) (glob) |
|
54 | 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 | 56 | 00changelog-*.nd (glob) |
|
57 | 57 | 00changelog.n |
|
58 | 58 | 00manifest-*.nd (glob) |
@@ -112,7 +112,7 b' Prepare a commit' | |||
|
112 | 112 | |
|
113 | 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 | 116 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 |
|
117 | 117 | $ hg -R test-repo/ commit -m foo |
|
118 | 118 | created new head |
@@ -211,7 +211,7 b' Check the initial state' | |||
|
211 | 211 | Performe the mix of clone and full refresh of the nodemap, so that the files |
|
212 | 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 | 215 | $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 |
|
216 | 216 | $ rm test-repo/.hg/store/00changelog.n |
|
217 | 217 | $ rm test-repo/.hg/store/00changelog-*.nd |
@@ -615,10 +615,10 b' read/write patterns.' | |||
|
615 | 615 | $ hg share race-repo ./other-wc --config format.use-share-safe=yes |
|
616 | 616 | updating working directory |
|
617 | 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 | 619 | share-safe: yes |
|
620 | 620 | persistent-nodemap: yes |
|
621 |
$ hg debugformat -R ./other-wc/ | |
|
|
621 | $ hg debugformat -R ./other-wc/ | grep -E 'share-safe|persistent-nodemap' | |
|
622 | 622 | share-safe: yes |
|
623 | 623 | persistent-nodemap: yes |
|
624 | 624 | $ hg -R ./other-wc update 'min(head())' |
@@ -818,7 +818,7 b' downgrading' | |||
|
818 | 818 | - changelog |
|
819 | 819 | - manifest |
|
820 | 820 | |
|
821 |
$ ls -1 .hg/store/ | |
|
|
821 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
|
822 | 822 | [1] |
|
823 | 823 | $ hg debugnodemap --metadata |
|
824 | 824 | |
@@ -860,7 +860,7 b' upgrading' | |||
|
860 | 860 | - changelog |
|
861 | 861 | - manifest |
|
862 | 862 | |
|
863 |
$ ls -1 .hg/store/ | |
|
|
863 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
|
864 | 864 | 00changelog-*.nd (glob) |
|
865 | 865 | 00changelog.n |
|
866 | 866 | 00manifest-*.nd (glob) |
@@ -891,7 +891,7 b' Running unrelated upgrade' | |||
|
891 | 891 | - changelog |
|
892 | 892 | - manifest |
|
893 | 893 | |
|
894 |
$ ls -1 .hg/store/ | |
|
|
894 | $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' | |
|
895 | 895 | 00changelog-*.nd (glob) |
|
896 | 896 | 00changelog.n |
|
897 | 897 | 00manifest-*.nd (glob) |
@@ -916,7 +916,7 b' standard clone' | |||
|
916 | 916 | The persistent nodemap should exist after a streaming clone |
|
917 | 917 | |
|
918 | 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 | 920 | 00changelog-*.nd (glob) |
|
921 | 921 | 00changelog.n |
|
922 | 922 | 00manifest-*.nd (glob) |
@@ -936,7 +936,7 b' local clone' | |||
|
936 | 936 | The persistent nodemap should exist after a streaming clone |
|
937 | 937 | |
|
938 | 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 | 940 | 00changelog-*.nd (glob) |
|
941 | 941 | 00changelog.n |
|
942 | 942 | 00manifest-*.nd (glob) |
@@ -6,7 +6,7 b' test --time' | |||
|
6 | 6 | |
|
7 | 7 | Function to check that statprof ran |
|
8 | 8 | $ statprofran () { |
|
9 |
> |
|
|
9 | > grep -E 'Sample count:|No samples recorded' > /dev/null | |
|
10 | 10 | > } |
|
11 | 11 | |
|
12 | 12 | test --profile |
@@ -16,8 +16,6 b' initialize repository' | |||
|
16 | 16 | create hgweb invocation script |
|
17 | 17 | |
|
18 | 18 | $ cat >hgweb.cgi <<HGWEB |
|
19 | > import cgitb | |
|
20 | > cgitb.enable() | |
|
21 | 19 | > from mercurial import demandimport; demandimport.enable() |
|
22 | 20 | > from mercurial.hgweb import hgweb |
|
23 | 21 | > from mercurial.hgweb import wsgicgi |
@@ -5,7 +5,7 b' Setup' | |||
|
5 | 5 | |
|
6 | 6 | $ cat > $TESTTMP/pretxnchangegroup.sh << EOF |
|
7 | 7 | > #!/bin/sh |
|
8 |
> env | |
|
|
8 | > env | grep -E "^HG_USERVAR_(DEBUG|BYPASS_REVIEW)" | sort | |
|
9 | 9 | > exit 0 |
|
10 | 10 | > EOF |
|
11 | 11 | $ cat >> $HGRCPATH << EOF |
@@ -37,7 +37,7 b' Verify corrupt cache error message' | |||
|
37 | 37 | > EOF |
|
38 | 38 | $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 |
|
39 | 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 | 41 | abort: unexpected remotefilelog header: illegal format |
|
42 | 42 | |
|
43 | 43 | Verify detection and remediation when remotefilelog.validatecachelog is set |
@@ -106,6 +106,11 b'' | |||
|
106 | 106 | # Test that warning is displayed when the repo path is malformed |
|
107 | 107 | |
|
108 | 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 | 113 | $ hg gc |
|
110 | 114 | abort: invalid path asdas\x00da: .*(null|NULL).* (re) |
|
111 | 115 | [255] |
|
116 | #endif |
@@ -41,7 +41,7 b'' | |||
|
41 | 41 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
|
42 | 42 | $ hg repack |
|
43 | 43 | |
|
44 |
$ find $CACHEDIR | sort | |
|
|
44 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
|
45 | 45 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
46 | 46 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack |
|
47 | 47 | |
@@ -72,7 +72,7 b'' | |||
|
72 | 72 | |
|
73 | 73 | $ hg repack |
|
74 | 74 | |
|
75 |
$ find $CACHEDIR | sort | |
|
|
75 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
|
76 | 76 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
77 | 77 | $TESTTMP/hgcache/master/packs/a4e1d094ec2aee8a08a4d6d95a13c634cc7d7394.datapack |
|
78 | 78 | |
@@ -98,7 +98,7 b'' | |||
|
98 | 98 | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) |
|
99 | 99 | $ hg repack |
|
100 | 100 | |
|
101 |
$ find $CACHEDIR | sort | |
|
|
101 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
|
102 | 102 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
103 | 103 | $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack |
|
104 | 104 | |
@@ -130,7 +130,7 b'' | |||
|
130 | 130 | |
|
131 | 131 | $ hg repack |
|
132 | 132 | |
|
133 |
$ find $CACHEDIR | sort | |
|
|
133 | $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" | |
|
134 | 134 | $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack |
|
135 | 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 | 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 | 65 | revlog-v2: no no no |
|
66 | 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 | 68 | revlog-v2: no yes no |
|
69 | 69 | changelog-v2: no no no |
|
70 | 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 | 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 | 77 | revlog-v2: yes no no |
|
78 | 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 | 80 | revlog-v2: yes no no |
|
81 | 81 | changelog-v2: no no no |
|
82 | 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 | 312 | $ touch dir1/notshown |
|
313 | 313 | $ hg commit -A dir1/notshown -m "notshown" |
|
314 | 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 | 317 | ./dir1/ |
|
318 | 318 | ./dir1/dir2/ |
@@ -320,7 +320,7 b' Mix files and subdirectories, both "glob' | |||
|
320 | 320 | ./hide.orig |
|
321 | 321 | $ hg debugsparse --delete 'dir1/dir2' |
|
322 | 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 | 325 | ./dir1/ |
|
326 | 326 | ./dir1/dir2/ |
@@ -396,7 +396,7 b' Archive wdir() with subrepos' | |||
|
396 | 396 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) |
|
397 | 397 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) |
|
398 | 398 | \r (no-eol) (esc) |
|
399 |
$ diff -r . ../wdir | |
|
|
399 | $ diff -r . ../wdir | grep -E -v '\.hg$|^Common subdirectories:' | |
|
400 | 400 | Only in ../wdir: .hg_archival.txt |
|
401 | 401 | |
|
402 | 402 | $ find ../wdir -type f | sort |
@@ -815,7 +815,7 b' largefile and a normal file. Then a lar' | |||
|
815 | 815 | $ hg add sub1/sub2 |
|
816 | 816 | |
|
817 | 817 | $ hg archive -S -r 'wdir()' ../wdir2 |
|
818 |
$ diff -r . ../wdir2 | |
|
|
818 | $ diff -r . ../wdir2 | grep -E -v '\.hg$|^Common subdirectories:' | |
|
819 | 819 | Only in ../wdir2: .hg_archival.txt |
|
820 | 820 | Only in .: .hglf |
|
821 | 821 | Only in .: foo |
@@ -854,7 +854,7 b" Test 'wdir()' modified file archiving wi" | |||
|
854 | 854 | $ echo 'mod' > large.bin |
|
855 | 855 | $ echo 'mod' > sub1/sub2/large.dat |
|
856 | 856 | $ hg archive -S -r 'wdir()' ../wdir3 |
|
857 |
$ diff -r . ../wdir3 | |
|
|
857 | $ diff -r . ../wdir3 | grep -E -v '\.hg$|^Common subdirectories' | |
|
858 | 858 | Only in ../wdir3: .hg_archival.txt |
|
859 | 859 | Only in .: .hglf |
|
860 | 860 | Only in .: foo |
@@ -263,7 +263,7 b' make upstream git changes' | |||
|
263 | 263 | make and push changes to hg without updating the subrepo |
|
264 | 264 | |
|
265 | 265 | $ cd ../t |
|
266 |
$ hg clone . ../td 2>&1 | |
|
|
266 | $ hg clone . ../td 2>&1 | grep -E -v '^Cloning into|^done\.' | |
|
267 | 267 | updating to branch default |
|
268 | 268 | cloning subrepo s from $TESTTMP/gitroot |
|
269 | 269 | checking out detached HEAD in subrepository "s" |
@@ -436,7 +436,7 b' Test archiving to zip file (unzip output' | |||
|
436 | 436 | |
|
437 | 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 | 440 | Archive: ../archive.zip |
|
441 | 441 | Length [ ]* Date [ ]* Time [ ]* Name (re) |
|
442 | 442 | 172 [0-9:\- ]* .hg_archival.txt (re) |
@@ -4,7 +4,7 b'' | |||
|
4 | 4 | $ SVNREPOURL="`"$PYTHON" $TESTDIR/svnurlof.py \"$SVNREPOPATH\"`" |
|
5 | 5 | |
|
6 | 6 | $ filter_svn_output () { |
|
7 |
> |
|
|
7 | > grep -E -v 'Committing|Transmitting|Updating|(^$)' || true | |
|
8 | 8 | > } |
|
9 | 9 | |
|
10 | 10 | create subversion repo |
@@ -227,7 +227,7 b' as default style, except for extra phase' | |||
|
227 | 227 | $ hg log --style default > style.out |
|
228 | 228 | $ cmp log.out style.out || diff -u log.out style.out |
|
229 | 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 | 231 | +phase: draft |
|
232 | 232 | +phase: draft |
|
233 | 233 | +phase: draft |
@@ -243,7 +243,7 b' as default style, except for extra phase' | |||
|
243 | 243 | $ hg log -v --style default > style.out |
|
244 | 244 | $ cmp log.out style.out || diff -u log.out style.out |
|
245 | 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 | 247 | +phase: draft |
|
248 | 248 | +phase: draft |
|
249 | 249 | +phase: draft |
@@ -299,7 +299,7 b' Default style should also preserve color' | |||
|
299 | 299 | $ hg --color=debug log --style default > style.out |
|
300 | 300 | $ cmp log.out style.out || diff -u log.out style.out |
|
301 | 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 | 303 | +[log.phase|phase: draft] |
|
304 | 304 | +[log.phase|phase: draft] |
|
305 | 305 | +[log.phase|phase: draft] |
@@ -315,7 +315,7 b' Default style should also preserve color' | |||
|
315 | 315 | $ hg --color=debug -v log --style default > style.out |
|
316 | 316 | $ cmp log.out style.out || diff -u log.out style.out |
|
317 | 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 | 319 | +[log.phase|phase: draft] |
|
320 | 320 | +[log.phase|phase: draft] |
|
321 | 321 | +[log.phase|phase: draft] |
@@ -2013,7 +2013,7 b' downgrade it from dirstate-v2 automatica' | |||
|
2013 | 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 | 2017 | dirstate-v2: no |
|
2018 | 2018 | tracked-hint: yes |
|
2019 | 2019 | share-safe: no |
@@ -2031,7 +2031,7 b' For multiple change at the same time' | |||
|
2031 | 2031 | (see `hg help config.format.use-share-safe` for details) |
|
2032 | 2032 | automatically downgrading repository from the `tracked-hint` feature |
|
2033 | 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 | 2035 | dirstate-v2: yes |
|
2036 | 2036 | tracked-hint: no |
|
2037 | 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 | 2044 | dirstate-v2: yes |
|
2045 | 2045 | tracked-hint: no |
|
2046 | 2046 | share-safe: yes |
@@ -2055,7 +2055,7 b' Quiet upgrade and downgrade' | |||
|
2055 | 2055 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ |
|
2056 | 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 | 2059 | dirstate-v2: no |
|
2060 | 2060 | tracked-hint: yes |
|
2061 | 2061 | share-safe: no |
@@ -2070,7 +2070,7 b' Quiet upgrade and downgrade' | |||
|
2070 | 2070 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \ |
|
2071 | 2071 | > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ |
|
2072 | 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 | 2074 | dirstate-v2: yes |
|
2075 | 2075 | tracked-hint: no |
|
2076 | 2076 | share-safe: yes |
@@ -676,7 +676,7 b' Test split patterns on overflow' | |||
|
676 | 676 | > EOF |
|
677 | 677 | $ "$PYTHON" printnum.py >> overflow.list |
|
678 | 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 | 680 | f fennel fennel exact |
|
681 | 681 | f fenugreek fenugreek exact |
|
682 | 682 | $ cd .. |
@@ -84,7 +84,7 b' Known exception should be caught, but pr' | |||
|
84 | 84 | [255] |
|
85 | 85 | |
|
86 | 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 | 88 | raise error.Abort(b'known exception') |
|
89 | 89 | mercurial.error.Abort: known exception |
|
90 | 90 | raise error.WorkerError(status) |
General Comments 0
You need to be logged in to leave comments.
Login now