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