Mercurial > hg
changeset 50751:0a55206c5a1e
branching: merge stable into default
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 06 Jul 2023 16:07:34 +0200 |
parents | 0ab3956540a6 (current diff) fa2eca7423f3 (diff) |
children | 5d092194ac37 |
files | |
diffstat | 86 files changed, 713 insertions(+), 374 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsigs Thu Jun 22 11:28:17 2023 +0200 +++ b/.hgsigs Thu Jul 06 16:07:34 2023 +0200 @@ -246,3 +246,5 @@ fc445f8abcf90b33db7c463816a1b3560681767f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmRTok8ZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVpZ5DACBv33k//ovzSbyH5/q+Xhk3TqNRY8IDOjoEhvDyu0bJHsvygOGXLUtHpQPth1RA4/c+AVNJrUeFvT02sLqqP2d9oSA9HEAYpOuzwgr1A+1o+Q2GyfD4cElP6KfiEe8oyFVOB0rfBgWNei1C0nnrhChQr5dOPR63uAFhHzkEsgsTFS7ONxZ1DHbe7gRV8OMMf1MatAtRzRexQJCqyNv7WodQdrKtjHqPKtlWl20dbwTHhzeiZbtjiTe0CVXVsOqnA1DQkO/IaiKQrn3zWdGY5ABbqQ1K0ceLcej4NFOeLo9ZrShndU3BuFUa9Dq9bnPYOI9wMqGoDh/GdTZkZEzBy5PTokY3AJHblbub49pi8YTenFcPdtd/v71AaNi3TKa45ZNhYVkPmRETYweHkLs3CIrSyeiBwU4RGuQZVD/GujAQB5yhk0w+LPMzBsHruD4vsgXwIraCzQIIJTjgyxKuAJGdGNUFYyxEpUkgz5G6MFrBKe8HO69y3Pm/qDNZ2maV8k= da372c745e0f053bb7a64e74cccd15810d96341d 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSB7WkZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVoy+C/4zwO+Wxc3wr0aEzjVqAss7FuGS5e66H+0T3WzVgKIRMqiiOmUmmiNf+XloXlX4TOwoh9j9GNEpoZfV6TSwFSqV0LALaVIRRwrkJBDhnqw4eNBZbK5aBWNa2/21dkHecxF4KG3ai9kLwy2mtHxkDIy8T2LPvdx8pfNcYT4PZ19x2itqZLouBJqiZYehsqeMLNF2vRqkq+rQ+D2sFGLljgPo0JlpkOZ4IL7S/cqTOBG1sQ6KJK+hAE1kF1lhvK796VhKKXVnWVgqJLyg7ZI6168gxeFv5cyCtb+FUXJJ/5SOkxaCKJf3mg3DIYi3G7xjwB5CfUGW8A2qexgEjXeV42Mu7/Mkmn/aeTdL0UcRK3oBVHJwqt/fJlGFqVWt4/9g9KW5mJvTDQYBo/zjLyvKFEbnSLzhEP+9SvthCrtX0UYkKxOGi2M2Z7e9wgBB0gY8a36kA739lkNu6r3vH/FVh0aPTMWukLToELS90WgfViNr16lDnCeDjMgg97OKxWdOW6U= 271a4ab29605ffa0bae5d3208eaa21a95427ff92 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSUEeMZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVlJnC/98qGmpi0gHbsoCPfoxgV2uSE4XAXZXPvbHqKAVUVJbkQoS0L2jighUArPZsduRjD+nSf/jO951/DmnxIwXfF5qA2dP1eBnjSmXS3xslmqD7nUw+pP8mKUQvXky+AbiL5onWw4gRtsqTZg4DYnPMeaE/eIUy/j60kXsf6gaDkQSAF/+9vB5UcVI1z7gKY/nE5pGW6cS9kPd/BEg2icficaOHXcetQFi53Gcy5kLEaYc9f8RUrvc0Z9jDkZSlmTHfTLOY+1hlFZ2FRAvL1Ikh7Ks+85LWuqs1ZYIdB6ucudhLW1dGd/ZyD0iU82e0XrU/tm6oDBdeSFOy1AAXN5pern18VcPeaT/zGgN7DG1LW9jISbYFzLwvHwzTMKSVgq4HSfeTHiSKoWp0qAbcFHUYfC4L1Heqd/UfzVN/1/9eSj69Hbjff8+E6OOF15Ky2gtr8PSyP7WIu9rTueUUoWIMG99btq5OYvEbmWgHuHIcJBUEJOalvhrZePbTW3v22Eh45M= +bb42988c7e156931b0ff1e93732b98173ebbcb7f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSUPXUZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVvYTC/wP7f8RITHgCO8djHUsnRs60P2mlEJQ71TDA3dqgdBIr3tWMELfcZMZnOTtaw4eqKemLauxa69MHgj2y++VMnfJx1pW5G61G8ZFfLjwFvAqqmXnnT6RVjo7sPuKSkL28C9NWwrLIRk5SGWK52W56Slz0bW1yhJBOV8BEIgZM5ucs4froYTxgAP8xprbLyPIroAJEtPNU3mkOXuPPGQ/zGO9czJ9sfYHU3bPmskf3YLqWAKQdCmxQgv44QluRVWoek6caIUA04mJwwlBdCCPZnr8hvaptZeYv2hhPw7CzDfWwMkyBYzmoUAZIgu/eYPtDRtxeIlEYC2WP+DQy5R+kK+X/nfxe8kVL9USow5MZZ54tmPbrwUO/dkWOWiK5NyqYnFjBDaq24XKUoPC7p7mGkfzQPNCiKcQO3qcUtiIb7tzz0olWemD2z86ws8kaEK8GSOgpBK71KOzrPZt8B01Nb+seahftCN5HxALAJSM6VRxYJFgYMFFxid+zNwEstuNipo= +3ffc7209bbae5804a53084c9dc2d41139e88c867 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmSmyeIZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVn/CC/9l24Feazay+kN3rOCvRqOOQO0Xx47+Lx5xaC4mgSAs7fkefY0ru4gnKRQkYskIksUzJX0P6aGrS3RH3y+DzxPhha75Ufq1abD8c1NJ2mUzW/DnoEI9zKnprkUdet8cwwLzNDhuWqjG6DY1ETwWpYVHo01Yv5FjDOdbMfPJ92yyF2AxLNTjkHNNfn0dpJE+/Sz8WjKsjPtTB432ZhvmfDsWgW+fTOlVATEyRqP4vNMWxPKPYif7KvH5U8vPAvX4i5Ox+csNeFQTUGV6KfgpAjXuJc2AEGr644KfpiMIyvWvEDewPAoGR+BUBz8jjT5KqBxc/9RJ8wEruCZIEKXxMAta+G+wWJyXZgKU1UN4x6mQT4RscnvX/1jMZx7zzqTSq2fe0Ddw/ta2aZtbp0JLJ5NmqiFLaKdDDdTAAONn+dBLQMO0+NNm9bOOafqI8edsOw3WoXmOVxbpdBrzIP5x18qNRU9gcTxxPqN5yy97dhsKyRpdbMVruxp1NUWeTBywARI=
--- a/.hgtags Thu Jun 22 11:28:17 2023 +0200 +++ b/.hgtags Thu Jul 06 16:07:34 2023 +0200 @@ -262,3 +262,5 @@ fc445f8abcf90b33db7c463816a1b3560681767f 6.4.3 da372c745e0f053bb7a64e74cccd15810d96341d 6.4.4 271a4ab29605ffa0bae5d3208eaa21a95427ff92 6.4.5 +bb42988c7e156931b0ff1e93732b98173ebbcb7f 6.5rc0 +3ffc7209bbae5804a53084c9dc2d41139e88c867 6.5
--- a/contrib/check-code.py Thu Jun 22 11:28:17 2023 +0200 +++ b/contrib/check-code.py Thu Jul 06 16:07:34 2023 +0200 @@ -146,10 +146,8 @@ r'\[[^\]]+==', '[ foo == bar ] is a bashism, use [ foo = bar ] instead', ), - ( - r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w', - "use egrep for extended grep syntax", - ), + (r'(^|\|\s*)egrep', "use grep -E for extended grep syntax"), + (r'(^|\|\s*)fgrep', "use grep -F for fixed string grepping"), (r'(^|\|\s*)e?grep .*\\S', "don't use \\S in regular expression"), (r'(?<!!)/bin/', "don't use explicit paths for tools"), (r'#!.*/bash', "don't use bash in shebang, use sh"),
--- a/contrib/heptapod-ci.yml Thu Jun 22 11:28:17 2023 +0200 +++ b/contrib/heptapod-ci.yml Thu Jul 06 16:07:34 2023 +0200 @@ -1,3 +1,24 @@ +# Don't run pipelines on branch "merge", since we're fast-forward only. +# Gitlab sees a new branch (since e.g. `topic/stable/my-topic` becomes +# `branch/stable`), but the hash hasn't changed. There is no reason to +# re-run the CI in our case, since we haven't built up any specific automation. +# Right now it's just wasted CI and developer time. +# One can still run the pipeline manually via the web interface, +# like in the case of releases, to make *extra* sure that the actual branch +# has succeeded. +workflow: + rules: + - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE != "web" + when: never + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: never + - if: $CI_PIPELINE_SOURCE == "push" + when: always + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH + when: always + stages: - tests
--- a/contrib/hgweb.fcgi Thu Jun 22 11:28:17 2023 +0200 +++ b/contrib/hgweb.fcgi Thu Jul 06 16:07:34 2023 +0200 @@ -9,9 +9,6 @@ # (consult "installed modules" path from 'hg debuginstall'): # import sys; sys.path.insert(0, "/path/to/python/lib") -# Uncomment to send python tracebacks to the browser if an error occurs: -# import cgitb; cgitb.enable() - from mercurial import demandimport demandimport.enable()
--- a/contrib/hgweb.wsgi Thu Jun 22 11:28:17 2023 +0200 +++ b/contrib/hgweb.wsgi Thu Jul 06 16:07:34 2023 +0200 @@ -8,9 +8,6 @@ # (consult "installed modules" path from 'hg debuginstall'): #import sys; sys.path.insert(0, "/path/to/python/lib") -# Uncomment to send python tracebacks to the browser if an error occurs: -#import cgitb; cgitb.enable() - # enable demandloading to reduce startup time from mercurial import demandimport; demandimport.enable()
--- a/hgdemandimport/__init__.py Thu Jun 22 11:28:17 2023 +0200 +++ b/hgdemandimport/__init__.py Thu Jul 06 16:07:34 2023 +0200 @@ -55,6 +55,9 @@ 'builtins', 'urwid.command_map', # for pudb 'lzma', + # setuptools uses this hack to inject it's own distutils at import time + 'setuptools', + '_distutils_hack.override', } _pypy = '__pypy__' in sys.builtin_module_names
--- a/hgext/clonebundles.py Thu Jun 22 11:28:17 2023 +0200 +++ b/hgext/clonebundles.py Thu Jul 06 16:07:34 2023 +0200 @@ -248,7 +248,7 @@ This logic can be manually triggered using the `admin::clone-bundles-refresh` command, or automatically on each repository change if -`clone-bundles.auto-generate.on-change` is set to `yes`. +`clone-bundles.auto-generate.on-change` is set to `yes`:: [clone-bundles] auto-generate.on-change=yes @@ -972,8 +972,16 @@ targets = repo.ui.configlist( b'clone-bundles', b'auto-generate.formats' ) - if enabled and targets: - tr.addpostclose(CAT_POSTCLOSE, make_auto_bundler(self)) + if enabled: + if not targets: + repo.ui.warn( + _( + b'clone-bundle auto-generate enabled, ' + b'but no formats specified: disabling generation\n' + ) + ) + else: + tr.addpostclose(CAT_POSTCLOSE, make_auto_bundler(self)) return tr @localrepo.unfilteredmethod
--- a/hgext/win32mbcs.py Thu Jun 22 11:28:17 2023 +0200 +++ b/hgext/win32mbcs.py Thu Jul 06 16:07:34 2023 +0200 @@ -82,7 +82,7 @@ uarg = arg.decode(_encoding) if arg == uarg.encode(_encoding): return uarg - raise UnicodeError(b"Not local encoding") + raise UnicodeError("Not local encoding") elif isinstance(arg, tuple): return tuple(map(decode, arg)) elif isinstance(arg, list): @@ -111,8 +111,8 @@ try: us = decode(s) except UnicodeError: - us = s - if us and us[-1] not in b':/\\': + us = s # TODO: how to handle this bytes case?? + if us and us[-1] not in ':/\\': s += pycompat.ossep return s @@ -148,13 +148,13 @@ if args: args = list(args) args[0] = appendsep(args[0]) - if b'path' in kwds: - kwds[b'path'] = appendsep(kwds[b'path']) + if 'path' in kwds: + kwds['path'] = appendsep(kwds['path']) return func(*args, **kwds) -def wrapname(name, wrapper): - module, name = name.rsplit(b'.', 1) +def wrapname(name: str, wrapper): + module, name = name.rsplit('.', 1) module = sys.modules[module] func = getattr(module, name) @@ -168,7 +168,7 @@ # List of functions to be wrapped. # NOTE: os.path.dirname() and os.path.basename() are safe because # they use result of os.path.split() -funcs = b'''os.path.join os.path.split os.path.splitext +funcs = '''os.path.join os.path.split os.path.splitext os.path.normpath os.makedirs mercurial.util.endswithsep mercurial.util.splitpath mercurial.util.fscasesensitive mercurial.util.fspath mercurial.util.pconvert mercurial.util.normpath @@ -178,11 +178,11 @@ # These functions are required to be called with local encoded string # because they expects argument is local encoded string and cause # problem with unicode string. -rfuncs = b'''mercurial.encoding.upper mercurial.encoding.lower +rfuncs = '''mercurial.encoding.upper mercurial.encoding.lower mercurial.util._filenamebytestr''' # List of Windows specific functions to be wrapped. -winfuncs = b'''os.path.splitunc''' +winfuncs = '''os.path.splitunc''' # codec and alias names of sjis and big5 to be faked. problematic_encodings = b'''big5 big5-tw csbig5 big5hkscs big5-hkscs @@ -208,15 +208,15 @@ if pycompat.iswindows: for f in winfuncs.split(): wrapname(f, wrapper) - wrapname(b"mercurial.util.listdir", wrapperforlistdir) - wrapname(b"mercurial.windows.listdir", wrapperforlistdir) + wrapname("mercurial.util.listdir", wrapperforlistdir) + wrapname("mercurial.windows.listdir", wrapperforlistdir) # wrap functions to be called with local byte string arguments for f in rfuncs.split(): wrapname(f, reversewrapper) # Check sys.args manually instead of using ui.debug() because # command line options is not yet applied when # extensions.loadall() is called. - if b'--debug' in sys.argv: + if '--debug' in sys.argv: ui.writenoi18n( b"[win32mbcs] activated with encoding: %s\n" % _encoding )
--- a/hgweb.cgi Thu Jun 22 11:28:17 2023 +0200 +++ b/hgweb.cgi Thu Jul 06 16:07:34 2023 +0200 @@ -10,9 +10,6 @@ # (consult "installed modules" path from 'hg debuginstall'): # import sys; sys.path.insert(0, "/path/to/python/lib") -# Uncomment to send python tracebacks to the browser if an error occurs: -# import cgitb; cgitb.enable() - from mercurial import demandimport demandimport.enable()
--- a/mercurial/dirstatemap.py Thu Jun 22 11:28:17 2023 +0200 +++ b/mercurial/dirstatemap.py Thu Jul 06 16:07:34 2023 +0200 @@ -4,7 +4,6 @@ # GNU General Public License version 2 or any later version. -import struct from .i18n import _ from . import ( @@ -152,15 +151,13 @@ b'dirstate only has a docket in v2 format' ) self._set_identity() - try: + data = self._readdirstatefile() + if data == b'' or data.startswith(docketmod.V2_FORMAT_MARKER): self._docket = docketmod.DirstateDocket.parse( - self._readdirstatefile(), self._nodeconstants + data, self._nodeconstants ) - except struct.error: - self._ui.debug(b"failed to read dirstate-v2 data") - raise error.CorruptedDirstate( - b"failed to read dirstate-v2 data" - ) + else: + raise error.CorruptedDirstate(b"dirstate is not in v2 format") return self._docket def _read_v2_data(self):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/relnotes/6.5 Thu Jul 06 16:07:34 2023 +0200 @@ -0,0 +1,90 @@ += Mercurial 6.5 = + +As usual, a lot of patches don't make it to this list since they're more internal. + +== New Features == + + * Improved Python 3.12 compatiblity + * configitems: enable changegroup3 by default (unless using infinitepush) + * extras: expose 'retained_extras' for extensions to extend + * stabletailgraph: implement stable-tail sort + * stabletailgraph: naive version of leap computation + * bundle: introduce a "v3" spec + * clone-bundles: add a basic first version of automatic bundle generation + * clone-bundles: garbage collect older bundle when generating new ones + * clone-bundles: only regenerate the clone bundle when cached ration is low + * clone-bundles: also control automation based on absolute number of revisions + * clone-bundles: add a configuration to control auto-generation on changes + * clone-bundles: introduce a command to refresh bundle + * clone-bundles: add a command to clear all bundles + * clone-bundles: add an option to generate bundles in the background + * clonebundles: add support for inline (streaming) clonebundles + * clonebundles: adds a auto-generate.serve-inline option + * match: add `filepath:` pattern to match an exact filepath relative to the root + * hgweb: add "children" into the JSON template for a changeset + * hgweb: add support to explicitly access hidden changesets + * pull: add --remote-hidden option and pass it through peer creation + * hidden: add support for --remote-hidden to HTTP peer + * hidden: support passing --hidden with `serve --stdio` + * hidden: add support to explicitly access hidden changesets with SSH peers + * perf: introduce a `perf::stream-locked-section` command + * perf: add a function to find a stream version generator + * perf: add support for stream-v3 during benchmark + * perf: add a perf::stream-generate command + * perf: add a perf::stream-consume + * cli: make debugnodemap capable of inspecting an arbitrary nodemap + * rust: configure MSRV in Clippy + * rhg: make `rhg files` work if `ui.relative-files=true` is specified + * rhg: support `rhg files` with `ui.relative-paths=false` + * rhg: support `status --print0` + * tree-manifest: allow `debugupgraderepo` to run on tree manifest repo + * library: enable runpy invocation on mercurial package + * library: incorporate demandimport into runpy invocation + * exchange: allow passing no includes/excludes to `pull()` + +== New Experimental Features == + + * stream-clone: add an experimental v3 version of the protocol + * stream-clone: support streamv3 on the cli [hg bundle] + +== Bug Fixes == + + * mail: add a missing argument to properly override starttls + * bundle: include required phases when saving a bundle (issue6794) + * outgoing: fix common-heads computation from `missingroots` argument + * strip: do not include internal changeset in the strip backup + * bundle: abort if the user request bundling of internal changesets + * bundle: prevent implicit bundling of internal changeset + * encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings + * sha1dc: Make sure SHA1DC_BIGENDIAN is set on Darwin/PowerPC + * zstd: hack include order to ensure that our zstd.h is found + * dirstate: better error messages when dirstate is corrupted + * stream-clone: avoid opening a revlog in case we do not need it + * treemanifest: make `updatecaches` update the nodemaps for all directories + * rust-hg-core: move from `ouroboros` to `self_cell` + * rust-dependencies: switch from `users` to `whoami` + * dirstate-v2: actually fix the dirstate-v2 upgrade race + * dirstate: avoid leaking disk space in `hg debugrebuilddirstate` + * clonebundles: add warning if auto-generate is enabled without formats + * win32mbcs: unbyteify some strings for py3 support + * rust-revlog: fix incorrect results with NULL_NODE prefixes + * rust-revlog: fix RevlogEntry.data() for NULL_REVISION + +== Backwards Compatibility Changes == + + * infinitepush: aggressively deprecated infinite push + * narrow: indicated the default of 'Yes' when confirming auto-remove-includes + +== Internal API Changes == + + * Store walk was reworked to fix small race conditions in stream-clone and + greatly improve its API robustness and flexibility. + +== Miscellaneous == + + * Typechecking support was improved in a lot of places + * Removed more useless compat code for now unsupported Python versions + * Sped up zstd usage in Rust contexts + * revlog: add an exception hint when processing LFS flags without the extension + * ui: keep the progress bar around when writing if stdout is not a tty + * transaction: use a ".bck" extension for all backup file
--- a/rust/hg-core/src/dirstate_tree/dirstate_map.rs Thu Jun 22 11:28:17 2023 +0200 +++ b/rust/hg-core/src/dirstate_tree/dirstate_map.rs Thu Jul 06 16:07:34 2023 +0200 @@ -964,6 +964,7 @@ map.root = Default::default(); map.nodes_with_entry_count = 0; map.nodes_with_copy_source_count = 0; + map.unreachable_bytes = map.on_disk.len() as u32; }); }
--- a/rust/hg-core/src/revlog/changelog.rs Thu Jun 22 11:28:17 2023 +0200 +++ b/rust/hg-core/src/revlog/changelog.rs Thu Jul 06 16:07:34 2023 +0200 @@ -1,6 +1,6 @@ use crate::errors::HgError; +use crate::revlog::Revision; use crate::revlog::{Node, NodePrefix}; -use crate::revlog::{Revision, NULL_REVISION}; use crate::revlog::{Revlog, RevlogEntry, RevlogError}; use crate::utils::hg_path::HgPath; use crate::vfs::Vfs; @@ -51,9 +51,6 @@ &self, rev: Revision, ) -> Result<ChangelogRevisionData, RevlogError> { - if rev == NULL_REVISION { - return Ok(ChangelogRevisionData::null()); - } self.entry_for_rev(rev)?.data() } @@ -336,6 +333,11 @@ changelog.data_for_rev(NULL_REVISION)?, ChangelogRevisionData::null() ); + // same with the intermediate entry object + assert_eq!( + changelog.entry_for_rev(NULL_REVISION)?.data()?, + ChangelogRevisionData::null() + ); Ok(()) } }
--- a/rust/hg-core/src/revlog/mod.rs Thu Jun 22 11:28:17 2023 +0200 +++ b/rust/hg-core/src/revlog/mod.rs Thu Jul 06 16:07:34 2023 +0200 @@ -225,20 +225,35 @@ &self, node: NodePrefix, ) -> Result<Revision, RevlogError> { - if node.is_prefix_of(&NULL_NODE) { - return Ok(NULL_REVISION); - } - - if let Some(nodemap) = &self.nodemap { - return nodemap + let looked_up = if let Some(nodemap) = &self.nodemap { + nodemap .find_bin(&self.index, node)? - .ok_or(RevlogError::InvalidRevision); - } + .ok_or(RevlogError::InvalidRevision) + } else { + self.rev_from_node_no_persistent_nodemap(node) + }; + + if node.is_prefix_of(&NULL_NODE) { + return match looked_up { + Ok(_) => Err(RevlogError::AmbiguousPrefix), + Err(RevlogError::InvalidRevision) => Ok(NULL_REVISION), + res => res, + }; + }; - // Fallback to linear scan when a persistent nodemap is not present. - // This happens when the persistent-nodemap experimental feature is not - // enabled, or for small revlogs. - // + looked_up + } + + /// Same as `rev_from_node`, without using a persistent nodemap + /// + /// This is used as fallback when a persistent nodemap is not present. + /// This happens when the persistent-nodemap experimental feature is not + /// enabled, or for small revlogs. + fn rev_from_node_no_persistent_nodemap( + &self, + node: NodePrefix, + ) -> Result<Revision, RevlogError> { + // Linear scan of the revlog // TODO: consider building a non-persistent nodemap in memory to // optimize these cases. let mut found_by_prefix = None; @@ -547,6 +562,9 @@ pub fn data(&self) -> Result<Cow<'revlog, [u8]>, HgError> { let data = self.rawdata()?; + if self.rev == NULL_REVISION { + return Ok(data); + } if self.is_censored() { return Err(HgError::CensoredNodeError); } @@ -669,6 +687,13 @@ assert_eq!(revlog.len(), 0); assert!(revlog.get_entry(0).is_err()); assert!(!revlog.has_rev(0)); + assert_eq!( + revlog.rev_from_node(NULL_NODE.into()).unwrap(), + NULL_REVISION + ); + let null_entry = revlog.get_entry(NULL_REVISION).ok().unwrap(); + assert_eq!(null_entry.revision(), NULL_REVISION); + assert!(null_entry.data().unwrap().is_empty()); } #[test] @@ -740,4 +765,65 @@ assert!(p2_entry.is_some()); assert_eq!(p2_entry.unwrap().revision(), 1); } + + #[test] + fn test_nodemap() { + let temp = tempfile::tempdir().unwrap(); + let vfs = Vfs { base: temp.path() }; + + // building a revlog with a forced Node starting with zeros + // This is a corruption, but it does not preclude using the nodemap + // if we don't try and access the data + let node0 = Node::from_hex("00d2a3912a0b24502043eae84ee4b279c18b90dd") + .unwrap(); + let node1 = Node::from_hex("b004912a8510032a0350a74daa2803dadfb00e12") + .unwrap(); + let entry0_bytes = IndexEntryBuilder::new() + .is_first(true) + .with_version(1) + .with_inline(true) + .with_offset(INDEX_ENTRY_SIZE) + .with_node(node0) + .build(); + let entry1_bytes = IndexEntryBuilder::new() + .with_offset(INDEX_ENTRY_SIZE) + .with_node(node1) + .build(); + let contents = vec![entry0_bytes, entry1_bytes] + .into_iter() + .flatten() + .collect_vec(); + std::fs::write(temp.path().join("foo.i"), contents).unwrap(); + let revlog = Revlog::open(&vfs, "foo.i", None, false).unwrap(); + + // accessing the data shows the corruption + revlog.get_entry(0).unwrap().data().unwrap_err(); + + assert_eq!(revlog.rev_from_node(NULL_NODE.into()).unwrap(), -1); + assert_eq!(revlog.rev_from_node(node0.into()).unwrap(), 0); + assert_eq!(revlog.rev_from_node(node1.into()).unwrap(), 1); + assert_eq!( + revlog + .rev_from_node(NodePrefix::from_hex("000").unwrap()) + .unwrap(), + -1 + ); + assert_eq!( + revlog + .rev_from_node(NodePrefix::from_hex("b00").unwrap()) + .unwrap(), + 1 + ); + // RevlogError does not implement PartialEq + // (ultimately because io::Error does not) + match revlog + .rev_from_node(NodePrefix::from_hex("00").unwrap()) + .expect_err("Expected to give AmbiguousPrefix error") + { + RevlogError::AmbiguousPrefix => (), + e => { + panic!("Got another error than AmbiguousPrefix: {:?}", e); + } + }; + } }
--- a/setup.py Thu Jun 22 11:28:17 2023 +0200 +++ b/setup.py Thu Jul 06 16:07:34 2023 +0200 @@ -112,7 +112,10 @@ if issetuptools: from setuptools import setup else: - from distutils.core import setup + try: + from distutils.core import setup + except ModuleNotFoundError: + from setuptools import setup from distutils.ccompiler import new_compiler from distutils.core import Command, Extension from distutils.dist import Distribution
--- a/tests/dummysmtpd.py Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/dummysmtpd.py Thu Jul 06 16:07:34 2023 +0200 @@ -3,12 +3,11 @@ """dummy SMTP server for use in tests""" -import asyncore import optparse -import smtpd +import os +import socket import ssl import sys -import traceback from mercurial import ( pycompat, @@ -18,54 +17,97 @@ ) +if os.environ.get('HGIPV6', '0') == '1': + family = socket.AF_INET6 +else: + family = socket.AF_INET + + def log(msg): sys.stdout.write(msg) sys.stdout.flush() -class dummysmtpserver(smtpd.SMTPServer): - def __init__(self, localaddr): - smtpd.SMTPServer.__init__(self, localaddr, remoteaddr=None) +def mocksmtpserversession(conn, addr): + conn.send(b'220 smtp.example.com ESMTP\r\n') + + line = conn.recv(1024) + if not line.lower().startswith(b'ehlo '): + log('no hello: %s\n' % line) + return + + conn.send(b'250 Hello\r\n') - def process_message(self, peer, mailfrom, rcpttos, data, **kwargs): - log('%s from=%s to=%s\n' % (peer[0], mailfrom, ', '.join(rcpttos))) + line = conn.recv(1024) + if not line.lower().startswith(b'mail from:'): + log('no mail from: %s\n' % line) + return + mailfrom = line[10:].decode().rstrip() + if mailfrom.startswith('<') and mailfrom.endswith('>'): + mailfrom = mailfrom[1:-1] + + conn.send(b'250 Ok\r\n') - def handle_error(self): - # On Windows, a bad SSL connection sometimes generates a WSAECONNRESET. - # The default handler will shutdown this server, and then both the - # current connection and subsequent ones fail on the client side with - # "No connection could be made because the target machine actively - # refused it". If we eat the error, then the client properly aborts in - # the expected way, and the server is available for subsequent requests. - traceback.print_exc() + rcpttos = [] + while True: + line = conn.recv(1024) + if not line.lower().startswith(b'rcpt to:'): + break + rcptto = line[8:].decode().rstrip() + if rcptto.startswith('<') and rcptto.endswith('>'): + rcptto = rcptto[1:-1] + rcpttos.append(rcptto) + + conn.send(b'250 Ok\r\n') + + if not line.lower().strip() == b'data': + log('no rcpt to or data: %s' % line) + + conn.send(b'354 Go ahead\r\n') + + data = b'' + while True: + line = conn.recv(1024) + if not line: + log('connection closed before end of data') + break + data += line + if data.endswith(b'\r\n.\r\n'): + data = data[:-5] + break + + conn.send(b'250 Ok\r\n') + + log( + '%s from=%s to=%s\n%s\n' + % (addr[0], mailfrom, ', '.join(rcpttos), data.decode()) + ) -class dummysmtpsecureserver(dummysmtpserver): - def __init__(self, localaddr, certfile): - dummysmtpserver.__init__(self, localaddr) - self._certfile = certfile - - def handle_accept(self): - pair = self.accept() - if not pair: - return - conn, addr = pair - ui = uimod.ui.load() +def run(host, port, certificate): + ui = uimod.ui.load() + with socket.socket(family, socket.SOCK_STREAM) as s: + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind((host, port)) + # log('listening at %s:%d\n' % (host, port)) + s.listen(1) try: - # wrap_socket() would block, but we don't care - conn = sslutil.wrapserversocket(conn, ui, certfile=self._certfile) - except ssl.SSLError: - log('%s ssl error\n' % addr[0]) - conn.close() - return - smtpd.SMTPChannel(self, conn, addr) - - -def run(): - try: - asyncore.loop() - except KeyboardInterrupt: - pass + while True: + conn, addr = s.accept() + if certificate: + try: + conn = sslutil.wrapserversocket( + conn, ui, certfile=certificate + ) + except ssl.SSLError as e: + log('%s ssl error: %s\n' % (addr[0], e)) + conn.close() + continue + log("connection from %s:%s\n" % addr) + mocksmtpserversession(conn, addr) + conn.close() + except KeyboardInterrupt: + pass def _encodestrsonly(v): @@ -93,26 +135,18 @@ op.add_option('--pid-file', metavar='FILE') op.add_option('--tls', choices=['none', 'smtps'], default='none') op.add_option('--certificate', metavar='FILE') + op.add_option('--logfile', metavar='FILE') opts, args = op.parse_args() - if opts.tls == 'smtps' and not opts.certificate: - op.error('--certificate must be specified') - - addr = (opts.address, opts.port) - - def init(): - if opts.tls == 'none': - dummysmtpserver(addr) - else: - dummysmtpsecureserver(addr, opts.certificate) - log('listening at %s:%d\n' % addr) + if (opts.tls == 'smtps') != bool(opts.certificate): + op.error('--certificate must be specified with --tls=smtps') server.runservice( bytesvars(opts), - initfn=init, - runfn=run, + runfn=lambda: run(opts.address, opts.port, opts.certificate), runargs=[pycompat.sysexecutable, pycompat.fsencode(__file__)] + pycompat.sysargv[1:], + logfile=opts.logfile, )
--- a/tests/remotefilelog-library.sh Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/remotefilelog-library.sh Thu Jul 06 16:07:34 2023 +0200 @@ -69,5 +69,5 @@ } identifyrflcaps() { - xargs -n 1 echo | egrep '(remotefilelog|getflogheads|getfile)' | sort + xargs -n 1 echo | grep -E '(remotefilelog|getflogheads|getfile)' | sort }
--- a/tests/test-archive.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-archive.t Thu Jul 06 16:07:34 2023 +0200 @@ -51,12 +51,12 @@ $ hg -R clone1 update -C tip cloning subrepo subrepo from $TESTTMP/test/subrepo 3 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ find share2 | egrep 'sharedpath|00.+\.i' | sort + $ find share2 | grep -E 'sharedpath|00.+\.i' | sort share2/.hg/sharedpath share2/subrepo/.hg/sharedpath $ hg -R share2 unshare unsharing subrepo 'subrepo' - $ find share2 | egrep 'sharedpath|00.+\.i' | sort + $ find share2 | grep -E 'sharedpath|00.+\.i' | sort share2/.hg/00changelog.i share2/.hg/sharedpath.old share2/.hg/store/00changelog.i @@ -566,7 +566,7 @@ $ hg add old $ hg commit -m old $ hg archive ../old.zip - $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$ + $ unzip -l ../old.zip | grep -v -- ----- | grep -E -v files$ Archive: ../old.zip \s*Length.* (re) *172*80*00:00*old/.hg_archival.txt (glob)
--- a/tests/test-bad-extension.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-bad-extension.t Thu Jul 06 16:07:34 2023 +0200 @@ -57,7 +57,7 @@ show traceback - $ hg -q help help --traceback 2>&1 | egrep ' extension|^Exception|Traceback|ImportError|ModuleNotFound' + $ hg -q help help --traceback 2>&1 | grep -E ' extension|^Exception|Traceback|ImportError|ModuleNotFound' *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow Traceback (most recent call last): Exception: bit bucket overflow @@ -88,7 +88,7 @@ $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ > | grep -v '^ ' \ > | filterlog \ - > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|^YYYY|not import|ModuleNotFound' + > | grep -E 'extension..[^p]|^Exception|Traceback|ImportError|^YYYY|not import|ModuleNotFound' YYYY/MM/DD HH:MM:SS (PID)> loading extensions YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg
--- a/tests/test-blackbox.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-blackbox.t Thu Jul 06 16:07:34 2023 +0200 @@ -393,7 +393,7 @@ > EOF (only look for entries with specific logged sources, otherwise this test is pretty brittle) - $ hg blackbox | egrep '\[command(finish)?\]' + $ hg blackbox | grep -E '\[command(finish)?\]' 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) 1970-01-01 00:00:00.000 bob @0000000000000000000000000000000000000000 (5000) [command]> blackbox $ cd $TESTTMP
--- a/tests/test-bookflow.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-bookflow.t Thu Jul 06 16:07:34 2023 +0200 @@ -230,17 +230,17 @@ make the bookmark move by updating it on a, and then pulling with a local change # add a commit to a $ cd ../a - $ hg up -C X |fgrep "activating bookmark X" + $ hg up -C X |grep -F "activating bookmark X" (activating bookmark X) # go back to b, and check out X $ cd ../b - $ hg up -C X |fgrep "activating bookmark X" + $ hg up -C X |grep -F "activating bookmark X" (activating bookmark X) # update and push from a $ make_changes ../a created new head $ echo "more" >> test - $ hg pull -u 2>&1 | fgrep -v TESTTMP| fgrep -v "searching for changes" | fgrep -v adding + $ hg pull -u 2>&1 | grep -F -v TESTTMP| grep -F -v "searching for changes" | grep -F -v adding pulling from $TESTTMP/a updating bookmark X added 1 changesets with 0 changes to 0 files (+1 heads)
--- a/tests/test-chg.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-chg.t Thu Jul 06 16:07:34 2023 +0200 @@ -70,7 +70,7 @@ $ touch foo $ CHGDEBUG= HGEDITOR=cat chg ci -Am channeled --edit 2>&1 \ - > | egrep "HG:|run 'cat" + > | grep -E "HG:|run 'cat" chg: debug: * run 'cat "*"' at '$TESTTMP/editor' (glob) HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: Leave message empty to abort commit. @@ -84,7 +84,7 @@ $ touch bar $ CHGDEBUG= HGEDITOR=cat chg ci -Am bufferred --edit \ > --config extensions.pushbuffer="$TESTTMP/pushbuffer.py" 2>&1 \ - > | egrep "HG:|run 'cat" + > | grep -E "HG:|run 'cat" [1] check that commit commands succeeded: @@ -237,14 +237,14 @@ warm up server: - $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start' + $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) new server should be started if extension modified: $ sleep 1 $ touch dummyext.py - $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start' + $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' chg: debug: * instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob) chg: debug: * instruction: reconnect (glob) chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) @@ -252,7 +252,7 @@ old server will shut down, while new server should still be reachable: $ sleep 2 - $ CHGDEBUG= chg log 2>&1 | (egrep 'instruction|start' || true) + $ CHGDEBUG= chg log 2>&1 | (grep -E 'instruction|start' || true) socket file should never be unlinked by old server: (simulates unowned socket by updating mtime, which makes sure server exits @@ -268,7 +268,7 @@ since no server is reachable from socket file, new server should be started: (this test makes sure that old server shut down automatically) - $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start' + $ CHGDEBUG= chg log 2>&1 | grep -E 'instruction|start' chg: debug: * start cmdserver at $TESTTMP/extreload/chgsock/server.* (glob) shut down servers and restore environment: @@ -495,7 +495,7 @@ > } $ newchg() { > chg --kill-chg-daemon - > filteredchg "$@" | egrep -v 'start cmdserver' || true + > filteredchg "$@" | grep -E -v 'start cmdserver' || true > } (--profile isn't permanently on just because it was specified when chg was started) @@ -561,12 +561,12 @@ $ hg --kill-chg-daemon $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ - > | egrep 'CHGHG|start' + > | grep -E 'CHGHG|start' chg: debug: * start cmdserver at * (glob) CHGHG=/*/install/bin/hg (glob) Running the same command a second time shouldn't spawn a new command server. $ HG=$CHGHG CHGHG= CHGDEBUG= hg debugshell -c \ > 'ui.write(b"CHGHG=%s\n" % ui.environ.get(b"CHGHG"))' 2>&1 \ - > | egrep 'CHGHG|start' + > | grep -E 'CHGHG|start' CHGHG=/*/install/bin/hg (glob)
--- a/tests/test-clone-cgi.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-clone-cgi.t Thu Jul 06 16:07:34 2023 +0200 @@ -12,8 +12,6 @@ $ cat >hgweb.cgi <<HGWEB > # > # An example CGI script to use hgweb, edit as necessary - > import cgitb - > cgitb.enable() > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi
--- a/tests/test-clone-stream-format.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-clone-stream-format.t Thu Jul 06 16:07:34 2023 +0200 @@ -245,7 +245,7 @@ $ hg clone --quiet --stream -U http://localhost:$HGPORT clone-from-share $ hg -R clone-from-share verify -q - $ hg debugrequires -R clone-from-share | egrep 'share$' + $ hg debugrequires -R clone-from-share | grep -E 'share$' [1] $ killdaemons.py
--- a/tests/test-clone.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-clone.t Thu Jul 06 16:07:34 2023 +0200 @@ -714,7 +714,7 @@ $ hg -R src commit -m '#0' $ hg -R src log -q 0:e1bab28bca43 - $ hg -R src debugrevlog -c | egrep 'format|flags' + $ hg -R src debugrevlog -c | grep -E 'format|flags' format : 0 flags : (none) $ hg root -R src -T json | sed 's|\\\\|\\|g'
--- a/tests/test-clonebundles-autogen.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-clonebundles-autogen.t Thu Jul 06 16:07:34 2023 +0200 @@ -10,7 +10,6 @@ > > [clone-bundles] > auto-generate.on-change = yes - > auto-generate.formats = v2 > upload-command = cp "\$HGCB_BUNDLE_PATH" "$TESTTMP"/final-upload/ > delete-command = rm -f "$TESTTMP/final-upload/\$HGCB_BASENAME" > url-template = file://$TESTTMP/final-upload/{basename} @@ -25,9 +24,36 @@ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd client +Test bundles are not generated if formats are not given +======================================================= + + $ touch noformats + $ hg -q commit -A -m 'add noformats' + $ hg push + pushing to $TESTTMP/server + searching for changes + clone-bundle auto-generate enabled, but no formats specified: disabling generation + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + $ test -f ../server/.hg/clonebundles.manifest + [1] + $ hg debugstrip -r tip + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/client/.hg/strip-backup/4823cdad4f38-4b2c3b65-backup.hg + $ hg --cwd ../server debugstrip -r tip + saved backup bundle to $TESTTMP/server/.hg/strip-backup/4823cdad4f38-4b2c3b65-backup.hg + clone-bundle auto-generate enabled, but no formats specified: disabling generation + clone-bundle auto-generate enabled, but no formats specified: disabling generation + Test bundles are generated on push ================================== + $ cat >> ../server/.hg/hgrc << EOF + > [clone-bundles] + > auto-generate.formats = v2 + > EOF $ touch foo $ hg -q commit -A -m 'add foo' $ touch bar
--- a/tests/test-context-metadata.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-context-metadata.t Thu Jul 06 16:07:34 2023 +0200 @@ -36,7 +36,7 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: Changed - $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | egrep '^RuntimeError' + $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'parents=0' 2>&1 | grep -E '^RuntimeError' RuntimeError: can't reuse the manifest: its p1 doesn't match the new ctx p1 $ hg --config extensions.metaedit=$TESTTMP/metaedit.py metaedit 'user=foo <foo@example.com>'
--- a/tests/test-contrib-perf.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-contrib-perf.t Thu Jul 06 16:07:34 2023 +0200 @@ -408,7 +408,7 @@ Function to check that statprof ran $ statprofran () { - > egrep 'Sample count:|No samples recorded' > /dev/null + > grep -E 'Sample count:|No samples recorded' > /dev/null > } $ hg perfdiscovery . --config perf.stub=no --config perf.run-limits='0.000000001-1' --config perf.profile-benchmark=yes 2>&1 | statprofran
--- a/tests/test-convert-cvs-synthetic.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-convert-cvs-synthetic.t Thu Jul 06 16:07:34 2023 +0200 @@ -108,7 +108,7 @@ cvs rlog output - $ cvscall -q rlog proj | egrep '^(RCS file|revision)' + $ cvscall -q rlog proj | grep -E '^(RCS file|revision)' RCS file: $TESTTMP/cvsrepo/proj/file1,v revision 1.1 RCS file: $TESTTMP/cvsrepo/proj/Attic/file2,v
--- a/tests/test-convert-hg-svn.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-convert-hg-svn.t Thu Jul 06 16:07:34 2023 +0200 @@ -1,7 +1,7 @@ #require svn svn-bindings $ filter_svn_output () { - > egrep -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true + > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true > } $ cat <<EOF >> $HGRCPATH
--- a/tests/test-convert-svn-source.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-convert-svn-source.t Thu Jul 06 16:07:34 2023 +0200 @@ -1,7 +1,7 @@ #require svn svn-bindings $ filter_svn_output () { - > egrep -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true + > grep -E -v 'Committing|Updating|(^$)' | sed -e 's/done$//' || true > } $ cat >> $HGRCPATH <<EOF
--- a/tests/test-copies-chain-merge.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-copies-chain-merge.t Thu Jul 06 16:07:34 2023 +0200 @@ -1649,7 +1649,7 @@ > [format] > exp-use-copies-side-data-changeset = yes > EOF - $ hg debugformat -v | egrep 'changelog-v2|revlog-v2|copies-sdc' + $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' copies-sdc: no yes no revlog-v2: no no no changelog-v2: no yes no @@ -1675,7 +1675,7 @@ > enabled=yes > numcpus=8 > EOF - $ hg debugformat -v | egrep 'changelog-v2|revlog-v2|copies-sdc' + $ hg debugformat -v | grep -E 'changelog-v2|revlog-v2|copies-sdc' copies-sdc: no yes no revlog-v2: no no no changelog-v2: no yes no @@ -2919,14 +2919,14 @@ Details on this hash ordering pick: - $ hg manifest --debug 'desc("g-1")' | egrep 'd$' + $ hg manifest --debug 'desc("g-1")' | grep -E 'd$' 17ec97e605773eb44a117d1136b3849bcdc1924f 644 d (no-changeset !) 5cce88bf349f7c742bb440f2c53f81db9c294279 644 d (changeset !) $ hg status --copies --rev 'desc("i-0")' --rev 'desc("g-1")' d A d a (no-changeset no-compatibility !) - $ hg manifest --debug 'desc("f-2")' | egrep 'd$' + $ hg manifest --debug 'desc("f-2")' | grep -E 'd$' 7b79e2fe0c8924e0e598a82f048a7b024afa4d96 644 d (no-changeset !) ae258f702dfeca05bf9b6a22a97a4b5645570f11 644 d (changeset !) $ hg status --copies --rev 'desc("i-0")' --rev 'desc("f-2")' d
--- a/tests/test-copies-in-changeset.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-copies-in-changeset.t Thu Jul 06 16:07:34 2023 +0200 @@ -32,13 +32,13 @@ $ hg init repo $ cd repo #if sidedata - $ hg debugformat -v | egrep 'format-variant|revlog-v2|copies-sdc|changelog-v2' + $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' format-variant repo config default copies-sdc: yes yes no revlog-v2: no no no changelog-v2: yes yes no #else - $ hg debugformat -v | egrep 'format-variant|revlog-v2|copies-sdc|changelog-v2' + $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' format-variant repo config default copies-sdc: no no no revlog-v2: no no no @@ -419,7 +419,7 @@ downgrading - $ hg debugformat -v | egrep 'format-variant|revlog-v2|copies-sdc|changelog-v2' + $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' format-variant repo config default copies-sdc: yes yes no revlog-v2: no no no @@ -445,7 +445,7 @@ processed revlogs: - changelog - $ hg debugformat -v | egrep 'format-variant|revlog-v2|copies-sdc|changelog-v2' + $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' format-variant repo config default copies-sdc: no no no revlog-v2: no no no @@ -470,7 +470,7 @@ processed revlogs: - changelog - $ hg debugformat -v | egrep 'format-variant|revlog-v2|copies-sdc|changelog-v2' + $ hg debugformat -v | grep -E 'format-variant|revlog-v2|copies-sdc|changelog-v2' format-variant repo config default copies-sdc: yes yes no revlog-v2: no no no
--- a/tests/test-debian-packages.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-debian-packages.t Thu Jul 06 16:07:34 2023 +0200 @@ -15,16 +15,16 @@ $ ls *.deb | grep -v 'dbg' mercurial_*.deb (glob) should have .so and .py - $ dpkg --contents mercurial_*.deb | egrep '(localrepo|parsers)' + $ dpkg --contents mercurial_*.deb | grep -E '(localrepo|parsers)' * ./usr/lib/python3/dist-packages/mercurial/cext/parsers*.so (glob) * ./usr/lib/python3/dist-packages/mercurial/localrepo.py (glob) * ./usr/lib/python3/dist-packages/mercurial/pure/parsers.py (glob) should have zsh completions - $ dpkg --contents mercurial_*.deb | egrep 'zsh.*[^/]$' + $ dpkg --contents mercurial_*.deb | grep -E 'zsh.*[^/]$' * ./usr/share/zsh/vendor-completions/_hg (glob) should have chg - $ dpkg --contents mercurial_*.deb | egrep 'chg$' + $ dpkg --contents mercurial_*.deb | grep -E 'chg$' * ./usr/bin/chg (glob) chg should come with a man page - $ dpkg --contents mercurial_*.deb | egrep 'man.*chg' + $ dpkg --contents mercurial_*.deb | grep -E 'man.*chg' * ./usr/share/man/man1/chg.1.gz (glob)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-debug-rebuild-dirstate.t Thu Jul 06 16:07:34 2023 +0200 @@ -0,0 +1,39 @@ +#require rust + + $ cat >> $HGRCPATH << EOF + > [format] + > use-dirstate-v2=1 + > [storage] + > dirstate-v2.slow-path=allow + > EOF + + $ hg init t + $ cd t + + $ for i in 1 2 3 4 5 6 7 8 9 10; do touch foobar$i; done + $ hg add . + adding foobar1 + adding foobar10 + adding foobar2 + adding foobar3 + adding foobar4 + adding foobar5 + adding foobar6 + adding foobar7 + adding foobar8 + adding foobar9 + $ hg commit -m "1" + +Check that there's no space leak on debugrebuilddirstate + + $ f --size .hg/dirstate* + .hg/dirstate: size=133 + .hg/dirstate.b870a51b: size=511 + $ hg debugrebuilddirstate + $ f --size .hg/dirstate* + .hg/dirstate: size=133 + .hg/dirstate.88698448: size=511 + $ hg debugrebuilddirstate + $ f --size .hg/dirstate* + .hg/dirstate: size=133 + .hg/dirstate.6b8ab34b: size=511
--- a/tests/test-debugcommands.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-debugcommands.t Thu Jul 06 16:07:34 2023 +0200 @@ -576,7 +576,7 @@ Test debugcolor #if no-windows - $ hg debugcolor --style --color always | egrep 'mode|style|log\.' + $ hg debugcolor --style --color always | grep -E 'mode|style|log\.' color mode: 'ansi' available style: \x1b[0;33mlog.changeset\x1b[0m: \x1b[0;33myellow\x1b[0m (esc)
--- a/tests/test-devel-warnings.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-devel-warnings.t Thu Jul 06 16:07:34 2023 +0200 @@ -191,7 +191,7 @@ $ echo a > a $ hg add a $ hg commit -m a - $ hg stripintr 2>&1 | egrep -v '^(\*\*| )' + $ hg stripintr 2>&1 | grep -E -v '^(\*\*| )' Traceback (most recent call last): *ProgrammingError: cannot strip from inside a transaction (glob) @@ -384,7 +384,7 @@ Test programming error failure: - $ hg buggytransaction 2>&1 | egrep -v '^ ' + $ hg buggytransaction 2>&1 | grep -E -v '^ ' ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) ** which supports versions unknown of Mercurial. ** Please disable "buggylocking" and try your action again. @@ -396,7 +396,7 @@ Traceback (most recent call last): *ProgrammingError: transaction requires locking (glob) - $ hg programmingerror 2>&1 | egrep -v '^ ' + $ hg programmingerror 2>&1 | grep -E -v '^ ' ** Unknown exception encountered with possibly-broken third-party extension "buggylocking" (version N/A) ** which supports versions unknown of Mercurial. ** Please disable "buggylocking" and try your action again.
--- a/tests/test-dirstate-version-fallback.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-dirstate-version-fallback.t Thu Jul 06 16:07:34 2023 +0200 @@ -10,8 +10,8 @@ $ hg init repo $ cd repo $ echo a > a - $ hg add a - $ hg commit -m a + $ touch file-with-somewhat-long-name-to-make-dirstate-v1-bigger-than-v2 + $ hg commit -Aqm a $ hg debugrequires | grep dirstate [1] $ ls -1 .hg/dirstate* @@ -22,7 +22,7 @@ Upgrade it to v2 - $ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | egrep 'added:|removed:' + $ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | grep -E 'added:|removed:' added: dirstate-v2 $ hg debugrequires | grep dirstate dirstate-v2
--- a/tests/test-docker-packaging.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-docker-packaging.t Thu Jul 06 16:07:34 2023 +0200 @@ -22,10 +22,10 @@ main deb should have .so but no .py $ ar x mercurial_*.deb - $ tar tf data.tar* | egrep '(localrepo|parsers)' + $ tar tf data.tar* | grep -E '(localrepo|parsers)' ./usr/lib/python2.7/dist-packages/mercurial/parsers*.so (glob) mercurial-common should have .py but no .so or .pyc $ ar x mercurial-common_*.deb - $ tar tf data.tar* | egrep '(localrepo|parsers)' + $ tar tf data.tar* | grep -E '(localrepo|parsers)' ./usr/lib/python2.7/dist-packages/mercurial/pure/parsers.py ./usr/lib/python2.7/dist-packages/mercurial/localrepo.py
--- a/tests/test-extension.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-extension.t Thu Jul 06 16:07:34 2023 +0200 @@ -1375,7 +1375,7 @@ throw external 1.0.0 No declared supported version, extension complains: - $ hg --config extensions.throw=throw.py throw 2>&1 | egrep '^\*\*' + $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 ** which supports versions unknown of Mercurial. ** Please disable "throw" and try your action again. @@ -1387,7 +1387,7 @@ empty declaration of supported version, extension complains (but doesn't choke if the value is improperly a str instead of bytes): $ echo "testedwith = ''" >> throw.py - $ hg --config extensions.throw=throw.py throw 2>&1 | egrep '^\*\*' + $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 ** which supports versions unknown of Mercurial. ** Please disable "throw" and try your action again. @@ -1401,7 +1401,7 @@ $ echo 'buglink = "http://example.com/bts"' >> throw.py $ rm -f throw.pyc throw.pyo $ rm -Rf __pycache__ - $ hg --config extensions.throw=throw.py throw 2>&1 | egrep '^\*\*' + $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 ** which supports versions unknown of Mercurial. ** Please disable "throw" and try your action again. @@ -1418,7 +1418,7 @@ $ rm -f throw.pyc throw.pyo $ rm -Rf __pycache__ $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ - > throw 2>&1 | egrep '^\*\*' + > throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) ** which supports versions 1.9 of Mercurial. ** Please disable "older" and try your action again. @@ -1432,7 +1432,7 @@ $ rm -f older.pyc older.pyo $ rm -Rf __pycache__ $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ - > throw 2>&1 | egrep '^\*\*' + > throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "older" (version N/A) ** which supports versions 1.9 of Mercurial. ** Please disable "older" and try your action again. @@ -1446,7 +1446,7 @@ $ rm -f older.pyc older.pyo $ rm -Rf __pycache__ $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ - > throw 2>&1 | egrep '^\*\*' + > throw 2>&1 | grep -E '^\*\*' ** Unknown exception encountered with possibly-broken third-party extension "throw" 1.0.0 ** which supports versions 2.1 of Mercurial. ** Please disable "throw" and try your action again. @@ -1457,7 +1457,7 @@ Ability to point to a different point $ hg --config extensions.throw=throw.py --config extensions.older=older.py \ - > --config ui.supportcontact='Your Local Goat Lenders' throw 2>&1 | egrep '^\*\*' + > --config ui.supportcontact='Your Local Goat Lenders' throw 2>&1 | grep -E '^\*\*' ** unknown exception encountered, please report by visiting ** Your Local Goat Lenders ** Python * (glob) @@ -1472,7 +1472,7 @@ > fi $ rm -f throw.pyc throw.pyo $ rm -Rf __pycache__ - $ hg --config extensions.throw=throw.py throw 2>&1 | egrep '^\*\*' + $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' ** unknown exception encountered, please report by visiting ** https://mercurial-scm.org/wiki/BugTracker ** Python * (glob) @@ -1484,7 +1484,7 @@ $ echo "util.version = lambda:b'3.2.2'" >> throw.py $ rm -f throw.pyc throw.pyo $ rm -Rf __pycache__ - $ hg --config extensions.throw=throw.py throw 2>&1 | egrep '^\*\*' + $ hg --config extensions.throw=throw.py throw 2>&1 | grep -E '^\*\*' ** unknown exception encountered, please report by visiting ** https://mercurial-scm.org/wiki/BugTracker ** Python * (glob) @@ -1595,7 +1595,7 @@ > util.version = lambda: b'3.6' > minimumhgversion = b'3.7' > EOF - $ hg --config extensions.minversion=minversion2.py version 2>&1 | egrep '\(third' + $ hg --config extensions.minversion=minversion2.py version 2>&1 | grep -E '\(third' (third party extension minversion requires version 3.7 or newer of Mercurial (current: 3.6); disabling) Can load version that is only off by point release @@ -1605,7 +1605,7 @@ > util.version = lambda: b'3.6.1' > minimumhgversion = b'3.6' > EOF - $ hg --config extensions.minversion=minversion3.py version 2>&1 | egrep '\(third' + $ hg --config extensions.minversion=minversion3.py version 2>&1 | grep -E '\(third' [1] Can load minimum version identical to current @@ -1615,7 +1615,7 @@ > util.version = lambda: b'3.5' > minimumhgversion = b'3.5' > EOF - $ hg --config extensions.minversion=minversion3.py version 2>&1 | egrep '\(third' + $ hg --config extensions.minversion=minversion3.py version 2>&1 | grep -E '\(third' [1] Don't explode on py3 with a bad version number (both str vs bytes, and not enough
--- a/tests/test-flagprocessor.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-flagprocessor.t Thu Jul 06 16:07:34 2023 +0200 @@ -215,7 +215,7 @@ raise error.Abort(msg) mercurial.error.Abort: cannot register multiple processors on flag '0x8'. *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'. - $ hg st 2>&1 | egrep 'cannot register multiple processors|flagprocessorext' + $ hg st 2>&1 | grep -E 'cannot register multiple processors|flagprocessorext' File "*/tests/flagprocessorext.py", line *, in extsetup (glob) mercurial.error.Abort: cannot register multiple processors on flag '0x8'. *** failed to set up extension duplicate: cannot register multiple processors on flag '0x8'.
--- a/tests/test-git-interop.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-git-interop.t Thu Jul 06 16:07:34 2023 +0200 @@ -358,7 +358,7 @@ $ hg status heads mismatch, rebuilding dagcache M beta - $ git status | egrep -v '^$|^ \(use ' + $ git status | grep -E -v '^$|^ \(use ' On branch master Changes not staged for commit: modified: beta
--- a/tests/test-help.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-help.t Thu Jul 06 16:07:34 2023 +0200 @@ -799,7 +799,7 @@ Checking that help adapts based on the config: - $ hg help diff --config ui.tweakdefaults=true | egrep -e '^ *(-g|config)' + $ hg help diff --config ui.tweakdefaults=true | grep -E -e '^ *(-g|config)' -g --[no-]git use git extended diff format (default: on from config) @@ -1585,7 +1585,7 @@ Show nested definitions ("profiling.type"[break]"ls"[break]"stat"[break]) - $ hg help config.type | egrep '^$'|wc -l + $ hg help config.type | grep -E '^$'|wc -l \s*3 (re) $ hg help config.profiling.type.ls @@ -1598,7 +1598,7 @@ Separate sections from subsections - $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq + $ hg help config.format | grep -E '^ ("|-)|^\s*$' | uniq "format" -------- @@ -1660,7 +1660,7 @@ Test templating help - $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) ' + $ hg help templating | grep -E '(desc|diffstat|firstline|nonempty) ' desc String. The text of the changeset description. diffstat String. Statistics of changes with the following format: firstline Any text. Returns the first line of text. @@ -1701,12 +1701,12 @@ help -c should only show debug --debug - $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$' + $ hg help -c --debug|grep -E debug|wc -l|grep -E '^\s*0\s*$' [1] help -c should only show deprecated for -v - $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$' + $ hg help -c -v|grep -E DEPRECATED|wc -l|grep -E '^\s*0\s*$' [1] Test -s / --system @@ -1720,11 +1720,11 @@ Test -e / -c / -k combinations - $ hg help -c|egrep '^[A-Z].*:|^ debug' + $ hg help -c|grep -E '^[A-Z].*:|^ debug' Commands: - $ hg help -e|egrep '^[A-Z].*:|^ debug' + $ hg help -e|grep -E '^[A-Z].*:|^ debug' Extensions: - $ hg help -k|egrep '^[A-Z].*:|^ debug' + $ hg help -k|grep -E '^[A-Z].*:|^ debug' Topics: Commands: Extensions: @@ -1735,11 +1735,11 @@ [10] $ hg help -e schemes |head -1 schemes extension - extend schemes with shortcuts to repository swarms - $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):' + $ hg help -c -k dates |grep -E '^(Topics|Extensions|Commands):' Commands: - $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):' + $ hg help -e -k a |grep -E '^(Topics|Extensions|Commands):' Extensions: - $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):' + $ hg help -e -c -k date |grep -E '^(Topics|Extensions|Commands):' Extensions: Commands: $ hg help -c commit > /dev/null
--- a/tests/test-hgweb-csp.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-hgweb-csp.t Thu Jul 06 16:07:34 2023 +0200 @@ -69,7 +69,7 @@ nonce should not be added to html if CSP doesn't use it - $ get-with-headers.py localhost:$HGPORT repo1/graph/tip | egrep 'content-security-policy|<script' + $ get-with-headers.py localhost:$HGPORT repo1/graph/tip | grep -E 'content-security-policy|<script' <script type="text/javascript" src="/repo1/static/mercurial.js"></script> <script type="text/javascript"> <script type="text/javascript"> @@ -104,7 +104,7 @@ nonce should be added to html when used - $ get-with-headers.py localhost:$HGPORT repo1/graph/tip content-security-policy | egrep 'content-security-policy|<script' + $ get-with-headers.py localhost:$HGPORT repo1/graph/tip content-security-policy | grep -E 'content-security-policy|<script' content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) <script type="text/javascript" src="/repo1/static/mercurial.js"></script> <script type="text/javascript" nonce="*"> (glob) @@ -125,7 +125,7 @@ nonce included in <script> and headers - $ get-with-headers.py localhost:$HGPORT graph/tip content-security-policy | egrep 'content-security-policy|<script' + $ get-with-headers.py localhost:$HGPORT graph/tip content-security-policy | grep -E 'content-security-policy|<script' content-security-policy: image-src 'self'; script-src https://example.com/ 'nonce-*' (glob) <script type="text/javascript" src="/static/mercurial.js"></script> <script type="text/javascript" nonce="*"> (glob)
--- a/tests/test-hgweb-diffs.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-hgweb-diffs.t Thu Jul 06 16:07:34 2023 +0200 @@ -318,7 +318,7 @@ patch header and diffstat $ get-with-headers.py localhost:$HGPORT 'rev/0' \ - > | egrep 'files changed|---|\+\+\+' + > | grep -E 'files changed|---|\+\+\+' 2 files changed, 2 insertions(+), 0 deletions(-) <span id="l1.2" class="minusline">--- /dev/null</span><a href="#l1.2"></a> <span id="l1.3" class="plusline">+++ a</span><a href="#l1.3"></a>
--- a/tests/test-hgweb-symrev.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-hgweb-symrev.t Thu Jul 06 16:07:34 2023 +0200 @@ -37,7 +37,7 @@ (De)referencing symbolic revisions (paper) - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper' | grep -E $REVLINKS <li><a href="/graph/tip?style=paper">graph</a></li> <li><a href="/rev/tip?style=paper">changeset</a></li> <li><a href="/file/tip?style=paper">browse</a></li> @@ -52,7 +52,7 @@ <a href="/shortlog/tip?revcount=120&style=paper">more</a> | rev 2: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/tip?style=paper">log</a></li> <li><a href="/rev/tip?style=paper">changeset</a></li> <li><a href="/file/tip?style=paper">browse</a></li> @@ -67,7 +67,7 @@ <a href="/graph/tip?revcount=120&style=paper">more</a> | rev 2: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/tip?style=paper">log</a></li> <li><a href="/graph/tip?style=paper">graph</a></li> <li><a href="/rev/tip?style=paper">changeset</a></li> @@ -77,24 +77,24 @@ <a href="/file/tip/dir/?style=paper"> <a href="/file/tip/foo?style=paper"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=paper' | grep -E $REVLINKS <a href="/shortlog/default?style=paper" class="open"> <a href="/shortlog/9d8c40cba617?style=paper" class="open"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=paper' | grep -E $REVLINKS <a href="/rev/tip?style=paper"> <a href="/rev/9d8c40cba617?style=paper"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=paper' | grep -E $REVLINKS <a href="/rev/xyzzy?style=paper"> <a href="/rev/a7c1559b7bba?style=paper"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper&rev=all()' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=paper&rev=all()' | grep -E $REVLINKS <a href="/rev/9d8c40cba617?style=paper">third</a> <a href="/rev/a7c1559b7bba?style=paper">second</a> <a href="/rev/43c799df6e75?style=paper">first</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/raw-rev/xyzzy?style=paper">raw</a></li> @@ -105,7 +105,7 @@ <td class="author"> <a href="/rev/9d8c40cba617?style=paper">9d8c40cba617</a></td> <td class="files"><a href="/file/a7c1559b7bba/foo?style=paper">foo</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=paper' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> <li><a href="/file/xyzzy?style=paper">browse</a></li> @@ -119,7 +119,7 @@ <a href="/shortlog/xyzzy?revcount=120&style=paper">more</a> | rev 1: <a href="/shortlog/43c799df6e75?style=paper">(0)</a> <a href="/shortlog/tip?style=paper">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> <li><a href="/file/xyzzy?style=paper">browse</a></li> @@ -133,7 +133,7 @@ <a href="/graph/xyzzy?revcount=120&style=paper">more</a> | rev 1: <a href="/graph/43c799df6e75?style=paper">(0)</a> <a href="/graph/tip?style=paper">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> @@ -143,7 +143,7 @@ <a href="/file/xyzzy/dir/?style=paper"> <a href="/file/xyzzy/foo?style=paper"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> @@ -158,7 +158,7 @@ <td class="author"><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> <td class="author"><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=paper' | grep -E $REVLINKS href="/atom-log/tip/foo" title="Atom feed for test:foo" /> href="/rss-log/tip/foo" title="RSS feed for test:foo" /> <li><a href="/shortlog/xyzzy?style=paper">log</a></li> @@ -181,7 +181,7 @@ <a href="/log/xyzzy/foo?revcount=120&style=paper">more</a> | <a href="/log/43c799df6e75/foo?style=paper">(0)</a> <a href="/log/tip/foo?style=paper">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> @@ -205,7 +205,7 @@ <a href="/diff/a7c1559b7bba/foo?style=paper">diff</a> <a href="/rev/a7c1559b7bba?style=paper">changeset</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> @@ -220,7 +220,7 @@ <td><a href="/file/43c799df6e75/foo?style=paper">43c799df6e75</a> </td> <td><a href="/file/9d8c40cba617/foo?style=paper">9d8c40cba617</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=paper' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=paper' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=paper">log</a></li> <li><a href="/graph/xyzzy?style=paper">graph</a></li> <li><a href="/rev/xyzzy?style=paper">changeset</a></li> @@ -237,7 +237,7 @@ (De)referencing symbolic revisions (coal) - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal' | grep -E $REVLINKS <li><a href="/graph/tip?style=coal">graph</a></li> <li><a href="/rev/tip?style=coal">changeset</a></li> <li><a href="/file/tip?style=coal">browse</a></li> @@ -252,7 +252,7 @@ <a href="/shortlog/tip?revcount=120&style=coal">more</a> | rev 2: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/tip?style=coal">log</a></li> <li><a href="/rev/tip?style=coal">changeset</a></li> <li><a href="/file/tip?style=coal">browse</a></li> @@ -267,7 +267,7 @@ <a href="/graph/tip?revcount=120&style=coal">more</a> | rev 2: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/tip?style=coal">log</a></li> <li><a href="/graph/tip?style=coal">graph</a></li> <li><a href="/rev/tip?style=coal">changeset</a></li> @@ -277,24 +277,24 @@ <a href="/file/tip/dir/?style=coal"> <a href="/file/tip/foo?style=coal"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=coal' | grep -E $REVLINKS <a href="/shortlog/default?style=coal" class="open"> <a href="/shortlog/9d8c40cba617?style=coal" class="open"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=coal' | grep -E $REVLINKS <a href="/rev/tip?style=coal"> <a href="/rev/9d8c40cba617?style=coal"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=coal' | grep -E $REVLINKS <a href="/rev/xyzzy?style=coal"> <a href="/rev/a7c1559b7bba?style=coal"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal&rev=all()' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=coal&rev=all()' | grep -E $REVLINKS <a href="/rev/9d8c40cba617?style=coal">third</a> <a href="/rev/a7c1559b7bba?style=coal">second</a> <a href="/rev/43c799df6e75?style=coal">first</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/raw-rev/xyzzy?style=coal">raw</a></li> @@ -305,7 +305,7 @@ <td class="author"> <a href="/rev/9d8c40cba617?style=coal">9d8c40cba617</a></td> <td class="files"><a href="/file/a7c1559b7bba/foo?style=coal">foo</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=coal' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> <li><a href="/file/xyzzy?style=coal">browse</a></li> @@ -319,7 +319,7 @@ <a href="/shortlog/xyzzy?revcount=120&style=coal">more</a> | rev 1: <a href="/shortlog/43c799df6e75?style=coal">(0)</a> <a href="/shortlog/tip?style=coal">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> <li><a href="/file/xyzzy?style=coal">browse</a></li> @@ -333,7 +333,7 @@ <a href="/graph/xyzzy?revcount=120&style=coal">more</a> | rev 1: <a href="/graph/43c799df6e75?style=coal">(0)</a> <a href="/graph/tip?style=coal">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> @@ -343,7 +343,7 @@ <a href="/file/xyzzy/dir/?style=coal"> <a href="/file/xyzzy/foo?style=coal"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> @@ -358,7 +358,7 @@ <td class="author"><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> <td class="author"><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=coal' | grep -E $REVLINKS href="/atom-log/tip/foo" title="Atom feed for test:foo" /> href="/rss-log/tip/foo" title="RSS feed for test:foo" /> <li><a href="/shortlog/xyzzy?style=coal">log</a></li> @@ -381,7 +381,7 @@ <a href="/log/xyzzy/foo?revcount=120&style=coal">more</a> | <a href="/log/43c799df6e75/foo?style=coal">(0)</a> <a href="/log/tip/foo?style=coal">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> @@ -405,7 +405,7 @@ <a href="/diff/a7c1559b7bba/foo?style=coal">diff</a> <a href="/rev/a7c1559b7bba?style=coal">changeset</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> @@ -420,7 +420,7 @@ <td><a href="/file/43c799df6e75/foo?style=coal">43c799df6e75</a> </td> <td><a href="/file/9d8c40cba617/foo?style=coal">9d8c40cba617</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=coal' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=coal' | grep -E $REVLINKS <li><a href="/shortlog/xyzzy?style=coal">log</a></li> <li><a href="/graph/xyzzy?style=coal">graph</a></li> <li><a href="/rev/xyzzy?style=coal">changeset</a></li> @@ -437,7 +437,7 @@ (De)referencing symbolic revisions (gitweb) - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=gitweb' | grep -E $REVLINKS <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | <a class="list" href="/rev/9d8c40cba617?style=gitweb"> <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | @@ -457,7 +457,7 @@ <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | <a href="/file/9d8c40cba617?style=gitweb">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb' | grep -E $REVLINKS <a href="/log/tip?style=gitweb">changelog</a> | <a href="/graph/tip?style=gitweb">graph</a> | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | @@ -473,7 +473,7 @@ <a href="/file/43c799df6e75?style=gitweb">files</a> <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=gitweb' | grep -E $REVLINKS <a href="/shortlog/tip?style=gitweb">shortlog</a> | <a href="/graph/tip?style=gitweb">graph</a> | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | @@ -486,7 +486,7 @@ <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=gitweb' | grep -E $REVLINKS <a href="/shortlog/tip?style=gitweb">shortlog</a> | <a href="/log/tip?style=gitweb">changelog</a> | <a href="/file/tip?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> | @@ -500,25 +500,25 @@ <a href="/graph/tip?revcount=120&style=gitweb">more</a> | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=gitweb' | grep -E $REVLINKS <td><a class="list" href="/rev/tip?style=gitweb"><b>tip</b></a></td> <a href="/rev/9d8c40cba617?style=gitweb">changeset</a> | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | <a href="/file/9d8c40cba617?style=gitweb">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=gitweb' | grep -E $REVLINKS <td><a class="list" href="/rev/xyzzy?style=gitweb"><b>xyzzy</b></a></td> <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> | <a href="/log/a7c1559b7bba?style=gitweb">changelog</a> | <a href="/file/a7c1559b7bba?style=gitweb">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=gitweb' | grep -E $REVLINKS <td class="open"><a class="list" href="/shortlog/default?style=gitweb"><b>default</b></a></td> <a href="/changeset/9d8c40cba617?style=gitweb">changeset</a> | <a href="/log/9d8c40cba617?style=gitweb">changelog</a> | <a href="/file/9d8c40cba617?style=gitweb">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=gitweb' | grep -E $REVLINKS <a href="/rev/tip?style=gitweb">changeset</a> | <a href="/archive/tip.zip">zip</a> | <a href="/file/tip/dir?style=gitweb">dir</a> <a href="/file/tip/dir/?style=gitweb"></a> @@ -528,7 +528,7 @@ <a href="/log/tip/foo?style=gitweb">revisions</a> | <a href="/annotate/tip/foo?style=gitweb">annotate</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb&rev=all()' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=gitweb&rev=all()' | grep -E $REVLINKS <a href="/file?style=gitweb">files</a> | <a href="/archive/tip.zip">zip</a> <a class="title" href="/rev/9d8c40cba617?style=gitweb"> <a href="/rev/9d8c40cba617?style=gitweb">changeset</a><br/> @@ -537,7 +537,7 @@ <a class="title" href="/rev/43c799df6e75?style=gitweb"> <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=gitweb' | grep -E $REVLINKS <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | <a href="/log/xyzzy?style=gitweb">changelog</a> | <a href="/graph/xyzzy?style=gitweb">graph</a> | @@ -554,7 +554,7 @@ <a href="/comparison/a7c1559b7bba/foo?style=gitweb">comparison</a> | <a href="/log/a7c1559b7bba/foo?style=gitweb">revisions</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=gitweb' | grep -E $REVLINKS <a href="/log/xyzzy?style=gitweb">changelog</a> | <a href="/graph/xyzzy?style=gitweb">graph</a> | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | @@ -567,7 +567,7 @@ <a href="/file/43c799df6e75?style=gitweb">files</a> <a href="/shortlog/43c799df6e75?style=gitweb">(0)</a> <a href="/shortlog/tip?style=gitweb">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=gitweb' | grep -E $REVLINKS <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | <a href="/graph/xyzzy?style=gitweb">graph</a> | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | @@ -578,7 +578,7 @@ <a href="/rev/43c799df6e75?style=gitweb">changeset</a><br/> <a href="/log/43c799df6e75?style=gitweb">(0)</a> <a href="/log/tip?style=gitweb">tip</a> <br/> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=gitweb' | grep -E $REVLINKS <a href="/shortlog/xyzzy?style=gitweb">shortlog</a> | <a href="/log/xyzzy?style=gitweb">changelog</a> | <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/archive/xyzzy.zip">zip</a> | @@ -591,7 +591,7 @@ <a href="/graph/xyzzy?revcount=120&style=gitweb">more</a> | <a href="/graph/43c799df6e75?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=gitweb' | grep -E $REVLINKS <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/archive/xyzzy.zip">zip</a> | <a href="/file/xyzzy/dir?style=gitweb">dir</a> <a href="/file/xyzzy/dir/?style=gitweb"></a> @@ -601,7 +601,7 @@ <a href="/log/xyzzy/foo?style=gitweb">revisions</a> | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=gitweb' | grep -E $REVLINKS <a href="/file/xyzzy/?style=gitweb">files</a> | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/file/tip/foo?style=gitweb">latest</a> | @@ -614,7 +614,7 @@ <a class="list" href="/file/43c799df6e75/foo?style=gitweb"> <a class="list" href="/file/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a></td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=gitweb' | grep -E $REVLINKS <a href="/file/xyzzy/foo?style=gitweb">file</a> | <a href="/annotate/xyzzy/foo?style=gitweb">annotate</a> | <a href="/diff/xyzzy/foo?style=gitweb">diff</a> | @@ -633,7 +633,7 @@ <a href="/log/xyzzy/foo?revcount=120&style=gitweb">more</a> <a href="/log/43c799df6e75/foo?style=gitweb">(0)</a> <a href="/log/tip/foo?style=gitweb">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=gitweb' | grep -E $REVLINKS <a href="/file/xyzzy/?style=gitweb">files</a> | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/file/xyzzy/foo?style=gitweb">file</a> | @@ -655,7 +655,7 @@ <a href="/diff/a7c1559b7bba/foo?style=gitweb">diff</a> <a href="/rev/a7c1559b7bba?style=gitweb">changeset</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=gitweb' | grep -E $REVLINKS <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/file/xyzzy/foo?style=gitweb">file</a> | @@ -668,7 +668,7 @@ <a class="list" href="/diff/43c799df6e75/foo?style=gitweb"> <a class="list" href="/diff/9d8c40cba617/foo?style=gitweb">9d8c40cba617</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=gitweb' | grep -E $REVLINKS <a href="/file/xyzzy?style=gitweb">files</a> | <a href="/rev/xyzzy?style=gitweb">changeset</a> | <a href="/file/xyzzy/foo?style=gitweb">file</a> | @@ -683,7 +683,7 @@ (De)referencing symbolic revisions (monoblue) - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'summary?style=monoblue' | grep -E $REVLINKS <li><a href="/archive/tip.zip">zip</a></li> <a href="/rev/9d8c40cba617?style=monoblue"> <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | @@ -703,7 +703,7 @@ <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | <a href="/file/9d8c40cba617?style=monoblue">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/tip?style=monoblue">graph</a></li> <li><a href="/file/tip?style=monoblue">files</a></li> <li><a href="/archive/tip.zip">zip</a></li> @@ -718,7 +718,7 @@ <a href="/file/43c799df6e75?style=monoblue">files</a> <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/tip?style=monoblue">graph</a></li> <li><a href="/file/tip?style=monoblue">files</a></li> <li><a href="/archive/tip.zip">zip</a></li> @@ -727,7 +727,7 @@ <a class="title" href="/rev/43c799df6e75?style=monoblue"> <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=monoblue' | grep -E $REVLINKS <li><a href="/file/tip?style=monoblue">files</a></li> <li><a href="/archive/tip.zip">zip</a></li> <a href="/rev/9d8c40cba617?style=monoblue">third</a> @@ -737,25 +737,25 @@ <a href="/graph/tip?revcount=120&style=monoblue">more</a> | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=monoblue' | grep -E $REVLINKS <td><a href="/rev/tip?style=monoblue">tip</a></td> <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | <a href="/file/9d8c40cba617?style=monoblue">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'bookmarks?style=monoblue' | grep -E $REVLINKS <td><a href="/rev/xyzzy?style=monoblue">xyzzy</a></td> <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> | <a href="/log/a7c1559b7bba?style=monoblue">changelog</a> | <a href="/file/a7c1559b7bba?style=monoblue">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=monoblue' | grep -E $REVLINKS <td class="open"><a href="/shortlog/default?style=monoblue">default</a></td> <a href="/rev/9d8c40cba617?style=monoblue">changeset</a> | <a href="/log/9d8c40cba617?style=monoblue">changelog</a> | <a href="/file/9d8c40cba617?style=monoblue">files</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/tip?style=monoblue">graph</a></li> <li><a href="/rev/tip?style=monoblue">changeset</a></li> <li><a href="/archive/tip.zip">zip</a></li> @@ -767,13 +767,13 @@ <a href="/log/tip/foo?style=monoblue">revisions</a> | <a href="/annotate/tip/foo?style=monoblue">annotate</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue&rev=all()' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=monoblue&rev=all()' | grep -E $REVLINKS <li><a href="/archive/tip.zip">zip</a></li> <a class="title" href="/rev/9d8c40cba617?style=monoblue"> <a class="title" href="/rev/a7c1559b7bba?style=monoblue"> <a class="title" href="/rev/43c799df6e75?style=monoblue"> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/raw-rev/xyzzy">raw</a></li> @@ -789,7 +789,7 @@ <a href="/comparison/a7c1559b7bba/foo?style=monoblue">comparison</a> | <a href="/log/a7c1559b7bba/foo?style=monoblue">revisions</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/archive/xyzzy.zip">zip</a></li> @@ -801,7 +801,7 @@ <a href="/file/43c799df6e75?style=monoblue">files</a> <a href="/shortlog/43c799df6e75?style=monoblue">(0)</a> <a href="/shortlog/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/archive/xyzzy.zip">zip</a></li> @@ -809,7 +809,7 @@ <a class="title" href="/rev/43c799df6e75?style=monoblue"> <a href="/log/43c799df6e75?style=monoblue">(0)</a> <a href="/log/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=monoblue' | grep -E $REVLINKS <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/archive/xyzzy.zip">zip</a></li> <a href="/rev/a7c1559b7bba?style=monoblue">second</a> @@ -818,7 +818,7 @@ <a href="/graph/xyzzy?revcount=120&style=monoblue">more</a> | <a href="/graph/43c799df6e75?style=monoblue">(0)</a> <a href="/graph/tip?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/rev/xyzzy?style=monoblue">changeset</a></li> <li><a href="/archive/xyzzy.zip">zip</a></li> @@ -830,7 +830,7 @@ <a href="/log/xyzzy/foo?style=monoblue">revisions</a> | <a href="/annotate/xyzzy/foo?style=monoblue">annotate</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy/?style=monoblue">files</a></li> <li><a href="/file/tip/foo?style=monoblue">latest</a></li> @@ -843,7 +843,7 @@ <a href="/file/43c799df6e75/foo?style=monoblue"> <a href="/file/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> @@ -861,7 +861,7 @@ <a href="/annotate/43c799df6e75/foo?style=monoblue">annotate</a> <a href="/log/43c799df6e75/foo?style=monoblue">(0)</a> <a href="/log/tip/foo?style=monoblue">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy/?style=monoblue">files</a></li> <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> @@ -883,7 +883,7 @@ <a href="/diff/a7c1559b7bba/foo?style=monoblue">diff</a> <a href="/rev/a7c1559b7bba?style=monoblue">changeset</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> @@ -896,7 +896,7 @@ <dd><a href="/diff/43c799df6e75/foo?style=monoblue">43c799df6e75</a></dd> <dd><a href="/diff/9d8c40cba617/foo?style=monoblue">9d8c40cba617</a></dd> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'comparison/xyzzy/foo?style=monoblue' | grep -E $REVLINKS <li><a href="/graph/xyzzy?style=monoblue">graph</a></li> <li><a href="/file/xyzzy?style=monoblue">files</a></li> <li><a href="/file/xyzzy/foo?style=monoblue">file</a></li> @@ -911,7 +911,7 @@ (De)referencing symbolic revisions (spartan) - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan' | grep -E $REVLINKS <a href="/log/tip?style=spartan">changelog</a> <a href="/graph/tip?style=spartan">graph</a> <a href="/file/tip/?style=spartan">files</a> @@ -922,7 +922,7 @@ <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log?style=spartan' | grep -E $REVLINKS <a href="/shortlog/tip?style=spartan">shortlog</a> <a href="/graph/tip?style=spartan">graph</a> <a href="/file/tip?style=spartan">files</a> @@ -939,7 +939,7 @@ <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph?style=spartan' | grep -E $REVLINKS <a href="/log/tip?style=spartan">changelog</a> <a href="/shortlog/tip?style=spartan">shortlog</a> <a href="/file/tip/?style=spartan">files</a> @@ -949,13 +949,13 @@ <a href="/rev/43c799df6e75?style=spartan">first</a> navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'tags?style=spartan' | grep -E $REVLINKS <a href="/rev/9d8c40cba617?style=spartan">tip</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'branches?style=spartan' | grep -E $REVLINKS <a href="/shortlog/9d8c40cba617?style=spartan" class="open">default</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file?style=spartan' | grep -E $REVLINKS <a href="/log/tip?style=spartan">changelog</a> <a href="/shortlog/tip?style=spartan">shortlog</a> <a href="/graph/tip?style=spartan">graph</a> @@ -966,7 +966,7 @@ <a href="/file/tip/dir/?style=spartan"> <td><a href="/file/tip/foo?style=spartan">foo</a></td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan&rev=all()' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog?style=spartan&rev=all()' | grep -E $REVLINKS <a href="/archive/tip.zip">zip</a> <td class="node"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> <a href="/rev/a7c1559b7bba?style=spartan">a7c1559b7bba</a> @@ -982,7 +982,7 @@ <th class="files"><a href="/file/43c799df6e75?style=spartan">files</a>:</th> <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'rev/xyzzy?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a> @@ -994,7 +994,7 @@ <td class="child"><a href="/rev/9d8c40cba617?style=spartan">9d8c40cba617</a></td> <td class="files"><a href="/file/a7c1559b7bba/foo?style=spartan">foo</a> </td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'shortlog/xyzzy?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/graph/xyzzy?style=spartan">graph</a> <a href="/file/xyzzy/?style=spartan">files</a> @@ -1004,7 +1004,7 @@ <td class="node"><a href="/rev/43c799df6e75?style=spartan">first</a></td> navigate: <small class="navigate"><a href="/shortlog/43c799df6e75?style=spartan">(0)</a> <a href="/shortlog/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy?style=spartan' | grep -E $REVLINKS <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a> <a href="/file/xyzzy?style=spartan">files</a> @@ -1018,7 +1018,7 @@ <td class="files"><a href="/diff/43c799df6e75/dir/bar?style=spartan">dir/bar</a> <a href="/diff/43c799df6e75/foo?style=spartan">foo</a> </td> navigate: <small class="navigate"><a href="/log/43c799df6e75?style=spartan">(0)</a> <a href="/log/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'graph/xyzzy?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/file/xyzzy/?style=spartan">files</a> @@ -1027,7 +1027,7 @@ <a href="/rev/43c799df6e75?style=spartan">first</a> navigate: <small class="navigate"><a href="/graph/43c799df6e75?style=spartan">(0)</a> <a href="/graph/tip?style=spartan">tip</a> </small> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a> @@ -1038,7 +1038,7 @@ <a href="/file/xyzzy/dir/?style=spartan"> <td><a href="/file/xyzzy/foo?style=spartan">foo</a></td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'file/xyzzy/foo?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a> @@ -1051,7 +1051,7 @@ <a href="/file/43c799df6e75/foo?style=spartan"> <td><a href="/file/9d8c40cba617/foo?style=spartan">9d8c40cba617</a></td> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'log/xyzzy/foo?style=spartan' | grep -E $REVLINKS href="/atom-log/tip/foo" title="Atom feed for test:foo"> href="/rss-log/tip/foo" title="RSS feed for test:foo"> <a href="/file/xyzzy/foo?style=spartan">file</a> @@ -1068,7 +1068,7 @@ <a href="/diff/43c799df6e75/foo?style=spartan">(diff)</a> <a href="/annotate/43c799df6e75/foo?style=spartan">(annotate)</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'annotate/xyzzy/foo?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a> @@ -1090,7 +1090,7 @@ <a href="/diff/a7c1559b7bba/foo?style=spartan">diff</a> <a href="/rev/a7c1559b7bba?style=spartan">changeset</a> - $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=spartan' | egrep $REVLINKS + $ "$TESTDIR/get-with-headers.py" $LOCALIP:$HGPORT 'diff/xyzzy/foo?style=spartan' | grep -E $REVLINKS <a href="/log/xyzzy?style=spartan">changelog</a> <a href="/shortlog/xyzzy?style=spartan">shortlog</a> <a href="/graph/xyzzy?style=spartan">graph</a>
--- a/tests/test-hgweb.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-hgweb.t Thu Jul 06 16:07:34 2023 +0200 @@ -783,19 +783,19 @@ access bookmarks - $ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | egrep '^200|changeset 0:' + $ get-with-headers.py localhost:$HGPORT 'rev/@?style=paper' | grep -E '^200|changeset 0:' 200 Script output follows changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> - $ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | egrep '^200|changeset 0:' + $ get-with-headers.py localhost:$HGPORT 'rev/%40?style=paper' | grep -E '^200|changeset 0:' 200 Script output follows changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> - $ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | egrep '^200|changeset 0:' + $ get-with-headers.py localhost:$HGPORT 'rev/a%20b%20c?style=paper' | grep -E '^200|changeset 0:' 200 Script output follows changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a> - $ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | egrep '^200|changeset 0:' + $ get-with-headers.py localhost:$HGPORT 'rev/d%252Fe%252Ff?style=paper' | grep -E '^200|changeset 0:' 200 Script output follows changeset 0:<a href="/rev/2ef0ac749a14?style=paper">2ef0ac749a14</a>
--- a/tests/test-histedit-fold.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-histedit-fold.t Thu Jul 06 16:07:34 2023 +0200 @@ -236,7 +236,7 @@ $ hg --config progress.debug=1 --debug \ > histedit 1ddb6c90f2ee --commands - 2>&1 <<EOF | \ - > egrep 'editing|unresolved' + > grep -E 'editing|unresolved' > pick 1ddb6c90f2ee e > fold 10c36dd37515 f > EOF
--- a/tests/test-hook.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-hook.t Thu Jul 06 16:07:34 2023 +0200 @@ -975,7 +975,7 @@ (run with --traceback for stack trace) [255] - $ hg pull ../a --traceback 2>&1 | egrep 'pulling|searching|^exception|Traceback|SyntaxError|ImportError|ModuleNotFoundError|HookLoadError|abort' + $ hg pull ../a --traceback 2>&1 | grep -E 'pulling|searching|^exception|Traceback|SyntaxError|ImportError|ModuleNotFoundError|HookLoadError|abort' pulling from ../a searching for changes exception from first failed import attempt: @@ -1142,7 +1142,7 @@ $ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc $ echo a >> a - $ hg --traceback commit -ma 2>&1 | egrep '^exception|ImportError|ModuleNotFoundError|Traceback|HookLoadError|abort' + $ hg --traceback commit -ma 2>&1 | grep -E '^exception|ImportError|ModuleNotFoundError|Traceback|HookLoadError|abort' exception from first failed import attempt: Traceback (most recent call last): ModuleNotFoundError: No module named 'somebogusmodule'
--- a/tests/test-import.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-import.t Thu Jul 06 16:07:34 2023 +0200 @@ -371,7 +371,7 @@ new changesets 80971e65b431 updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ egrep -v '^(Subject|email)' msg.patch | hg --cwd b import - + $ grep -E -v '^(Subject|email)' msg.patch | hg --cwd b import - applying patch from stdin abort: empty commit message [10]
--- a/tests/test-issue6642.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-issue6642.t Thu Jul 06 16:07:34 2023 +0200 @@ -26,7 +26,7 @@ $ hg log -r . --debug | grep files [1] - $ hg log -r . --debug -T json | egrep '(added|removed|modified)' + $ hg log -r . --debug -T json | grep -E '(added|removed|modified)' "added": [], "modified": [], "removed": [],
--- a/tests/test-largefiles-cache.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-largefiles-cache.t Thu Jul 06 16:07:34 2023 +0200 @@ -186,7 +186,7 @@ share_dst/.hg/largefiles/dirstate share_dst/.hg/largefiles/undo.backup.dirstate.bck - $ find src/.hg/largefiles/* | egrep "(dirstate|$hash)" | sort + $ find src/.hg/largefiles/* | grep -E "(dirstate|$hash)" | sort src/.hg/largefiles/dirstate src/.hg/largefiles/e2fb5f2139d086ded2cb600d5a91a196e76bf020
--- a/tests/test-lfs-serve-access.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-lfs-serve-access.t Thu Jul 06 16:07:34 2023 +0200 @@ -411,7 +411,7 @@ > -A $TESTTMP/access.log -E $TESTTMP/errors.log $ mv hg.pid $DAEMON_PIDS - $ hg clone --debug http://localhost:$HGPORT1 auth_clone | egrep '^[{}]| ' + $ hg clone --debug http://localhost:$HGPORT1 auth_clone | grep -E '^[{}]| ' { "objects": [ { @@ -460,7 +460,7 @@ (api=http://localhost:$HGPORT1/.git/info/lfs/objects/batch, action=upload) [50] - $ hg -R auth_clone --debug push | egrep '^[{}]| ' + $ hg -R auth_clone --debug push | grep -E '^[{}]| ' { "objects": [ {
--- a/tests/test-lfs.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-lfs.t Thu Jul 06 16:07:34 2023 +0200 @@ -116,7 +116,7 @@ $ hg debugrequires -R $TESTTMP/server/ | grep lfs [1] - $ hg push -v | egrep -v '^(uncompressed| )' + $ hg push -v | grep -E -v '^(uncompressed| )' pushing to $TESTTMP/server searching for changes lfs: found f11e77c257047a398492d8d6cb9f6acf3aa7c4384bb23080b43546053e183e4b in the local lfs store
--- a/tests/test-mac-packages.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-mac-packages.t Thu Jul 06 16:07:34 2023 +0200 @@ -41,7 +41,7 @@ ./usr/local/share/zsh/site-functions/_hg 100644 0/0 $ grep bash-completion/completions/hg boms.txt | cut -d ' ' -f 1,2,3 ./usr/local/share/bash-completion-completions/hg 100644 0/0 - $ egrep 'man[15]' boms.txt | cut -d ' ' -f 1,2,3 + $ grep -E 'man[15]' boms.txt | cut -d ' ' -f 1,2,3 ./usr/local/share/man/man1 40755 0/0 ./usr/local/share/man/man1/chg.1 100644 0/0 ./usr/local/share/man/man1/hg.1 100644 0/0 @@ -57,7 +57,7 @@ ./Library/Python/2.7/site-packages/mercurial/localrepo.py 100644 0/0 ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc 100644 0/0 ./Library/Python/2.7/site-packages/mercurial/localrepo.pyo 100644 0/0 - $ egrep 'bin/' boms.txt | cut -d ' ' -f 1,2,3 + $ grep -E 'bin/' boms.txt | cut -d ' ' -f 1,2,3 ./usr/local/bin/chg 100755 0/0 ./usr/local/bin/hg 100755 0/0
--- a/tests/test-mq.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-mq.t Thu Jul 06 16:07:34 2023 +0200 @@ -1581,8 +1581,6 @@ > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi - > import cgitb - > cgitb.enable() > app = hgweb(b'.', b'test') > wsgicgi.launch(app) > HGWEB
--- a/tests/test-narrow-exchange-merges.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-narrow-exchange-merges.t Thu Jul 06 16:07:34 2023 +0200 @@ -54,7 +54,7 @@ $ hg update -r 'desc("outside 4a")' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge -r 'desc("outside 4b")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon @@ -66,7 +66,7 @@ $ echo 6 > outside/f $ hg commit -Aqm 'outside 6' - $ hg merge -r 'desc("outside 4c")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4c")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon @@ -78,7 +78,7 @@ $ echo 8 > outside/f $ hg commit -Aqm 'outside 8' - $ hg merge -r 'desc("outside 4d")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
--- a/tests/test-narrow-merge.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-narrow-merge.t Thu Jul 06 16:07:34 2023 +0200 @@ -71,7 +71,7 @@ Can merge conflicting changes inside narrow spec $ hg update -q 'desc("modify inside/f1")' - $ hg merge 'desc("conflicting inside/f1")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge 'desc("conflicting inside/f1")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging inside/f1 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
--- a/tests/test-narrow-rebase.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-narrow-rebase.t Thu Jul 06 16:07:34 2023 +0200 @@ -69,7 +69,7 @@ $ hg update -q 0 $ echo conflicting > inside/f1 $ hg ci -qm 'conflicting inside/f1' - $ hg rebase -d 'desc("modify inside/f1")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg rebase -d 'desc("modify inside/f1")' 2>&1 | grep -E -v '(warning:|incomplete!)' rebasing 6:cdce97fbf653 tip "conflicting inside/f1" merging inside/f1 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
--- a/tests/test-narrow-shallow-merges.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-narrow-shallow-merges.t Thu Jul 06 16:07:34 2023 +0200 @@ -55,7 +55,7 @@ $ hg update -r 'desc("outside 4a")' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge -r 'desc("outside 4b")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon @@ -67,7 +67,7 @@ $ echo 6 > outside/f $ hg commit -Aqm 'outside 6' - $ hg merge -r 'desc("outside 4c")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4c")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon @@ -79,7 +79,7 @@ $ echo 8 > outside/f $ hg commit -Aqm 'outside 8' - $ hg merge -r 'desc("outside 4d")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging outside/f 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon @@ -279,7 +279,7 @@ $ cd ../pullmaster $ hg update -r 'desc("outside 4a")' 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge -r 'desc("outside 4b")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4b")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging inside/f merging outside/f 0 files updated, 0 files merged, 0 files removed, 2 files unresolved @@ -293,7 +293,7 @@ $ hg update -r 'desc("outside 4c")' 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge -r 'desc("outside 4d")' 2>&1 | egrep -v '(warning:|incomplete!)' + $ hg merge -r 'desc("outside 4d")' 2>&1 | grep -E -v '(warning:|incomplete!)' merging inside/f merging outside/f 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
--- a/tests/test-newcgi.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-newcgi.t Thu Jul 06 16:07:34 2023 +0200 @@ -9,9 +9,6 @@ > # > # An example CGI script to use hgweb, edit as necessary > - > import cgitb - > cgitb.enable() - > > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi @@ -35,9 +32,6 @@ > # > # An example CGI script to export multiple hgweb repos, edit as necessary > - > import cgitb - > cgitb.enable() - > > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgwebdir > from mercurial.hgweb import wsgicgi
--- a/tests/test-newercgi.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-newercgi.t Thu Jul 06 16:07:34 2023 +0200 @@ -9,9 +9,6 @@ > # > # An example CGI script to use hgweb, edit as necessary > - > import cgitb - > cgitb.enable() - > > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi @@ -32,9 +29,6 @@ > # > # An example CGI script to export multiple hgweb repos, edit as necessary > - > import cgitb - > cgitb.enable() - > > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgwebdir > from mercurial.hgweb import wsgicgi
--- a/tests/test-obsolete-bounds-checking.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-obsolete-bounds-checking.t Thu Jul 06 16:07:34 2023 +0200 @@ -17,7 +17,7 @@ adding a $ hg commit -m "Initial commit" $ echo a >> a - $ hg amend 2>&1 | egrep -v '^(\*\*| )' + $ hg amend 2>&1 | grep -E -v '^(\*\*| )' transaction abort! rollback completed Traceback (most recent call last):
--- a/tests/test-obsolete-divergent.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-obsolete-divergent.t Thu Jul 06 16:07:34 2023 +0200 @@ -674,19 +674,19 @@ check an obsolete changeset that was rewritten and also split - $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | egrep 'rewritten|split' + $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=paper' | grep -E 'rewritten|split' <td>rewritten as <a href="/rev/bed64f5d2f5a?style=paper">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> split as <a href="/rev/7ae126973a96?style=paper">7ae126973a96</a> <a href="/rev/14608b260df8?style=paper">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> - $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | egrep 'rewritten|split' + $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=coal' | grep -E 'rewritten|split' <td>rewritten as <a href="/rev/bed64f5d2f5a?style=coal">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span><br> split as <a href="/rev/7ae126973a96?style=coal">7ae126973a96</a> <a href="/rev/14608b260df8?style=coal">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> - $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | egrep 'rewritten|split' + $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=gitweb' | grep -E 'rewritten|split' <td>rewritten as <a class="list" href="/rev/bed64f5d2f5a?style=gitweb">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> <td>split as <a class="list" href="/rev/7ae126973a96?style=gitweb">7ae126973a96</a> <a class="list" href="/rev/14608b260df8?style=gitweb">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> - $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | egrep 'rewritten|split' + $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=monoblue' | grep -E 'rewritten|split' <dd>rewritten as <a href="/rev/bed64f5d2f5a?style=monoblue">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> <dd>split as <a href="/rev/7ae126973a96?style=monoblue">7ae126973a96</a> <a href="/rev/14608b260df8?style=monoblue">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></dd> - $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | egrep 'rewritten|split' + $ get-with-headers.py localhost:$HGPORT 'rev/e442cfc57690?style=spartan' | grep -E 'rewritten|split' <td class="obsolete">rewritten as <a href="/rev/bed64f5d2f5a?style=spartan">bed64f5d2f5a</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> <td class="obsolete">split as <a href="/rev/7ae126973a96?style=spartan">7ae126973a96</a> <a href="/rev/14608b260df8?style=spartan">14608b260df8</a> by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td>
--- a/tests/test-obsolete.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-obsolete.t Thu Jul 06 16:07:34 2023 +0200 @@ -1233,23 +1233,23 @@ check explanation for an orphan, phase-divergent and content-divergent changeset - $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=paper' | egrep '(orphan|phase-divergent|content-divergent):' + $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=paper' | grep -E '(orphan|phase-divergent|content-divergent):' <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a><br> phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a><br> content-divergent: <a href="/rev/6f9641995072?style=paper">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a></td> - $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=coal' | egrep '(orphan|phase-divergent|content-divergent):' + $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=coal' | grep -E '(orphan|phase-divergent|content-divergent):' <td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a><br> phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a><br> content-divergent: <a href="/rev/6f9641995072?style=coal">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a></td> - $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=gitweb' | egrep '(orphan|phase-divergent|content-divergent):' + $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=gitweb' | grep -E '(orphan|phase-divergent|content-divergent):' <td>orphan: obsolete parent <a class="list" href="/rev/3de5eca88c00?style=gitweb">3de5eca88c00</a></td> <td>phase-divergent: immutable predecessor <a class="list" href="/rev/245bde4270cd?style=gitweb">245bde4270cd</a></td> <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> - $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=monoblue' | egrep '(orphan|phase-divergent|content-divergent):' + $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=monoblue' | grep -E '(orphan|phase-divergent|content-divergent):' <dd>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=monoblue">3de5eca88c00</a></dd> <dd>phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> <dd>content-divergent: <a href="/rev/6f9641995072?style=monoblue">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=monoblue">245bde4270cd</a></dd> - $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=spartan' | egrep '(orphan|phase-divergent|content-divergent):' + $ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=spartan' | grep -E '(orphan|phase-divergent|content-divergent):' <td class="unstable">orphan: obsolete parent <a href="/rev/3de5eca88c00?style=spartan">3de5eca88c00</a></td> <td class="unstable">phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td> <td class="unstable">content-divergent: <a href="/rev/6f9641995072?style=spartan">6f9641995072</a> (draft) predecessor <a href="/rev/245bde4270cd?style=spartan">245bde4270cd</a></td>
--- a/tests/test-oldcgi.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-oldcgi.t Thu Jul 06 16:07:34 2023 +0200 @@ -8,8 +8,7 @@ > # > # An example CGI script to use hgweb, edit as necessary > - > import cgitb, os, sys - > cgitb.enable() + > import os, sys > > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install > from mercurial import hgweb @@ -30,8 +29,7 @@ > # > # An example CGI script to export multiple hgweb repos, edit as necessary > - > import cgitb, sys - > cgitb.enable() + > import sys > > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install > from mercurial import hgweb
--- a/tests/test-patchbomb-tls.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-patchbomb-tls.t Thu Jul 06 16:07:34 2023 +0200 @@ -5,9 +5,8 @@ $ CERTSDIR="$TESTDIR/sslcerts" $ cat "$CERTSDIR/priv.pem" "$CERTSDIR/pub.pem" >> server.pem - $ "$PYTHON" "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid -d \ + $ "$PYTHON" "$TESTDIR/dummysmtpd.py" -p $HGPORT --pid-file a.pid --logfile log -d \ > --tls smtps --certificate `pwd`/server.pem - listening at localhost:$HGPORT (?) $ cat a.pid >> $DAEMON_PIDS Set up repository: @@ -47,6 +46,11 @@ (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) (?i)abort: .*?certificate.verify.failed.* (re) [255] + + $ cat ../log + * ssl error: * (glob) + $ : > ../log + #endif #if defaultcacertsloaded @@ -58,6 +62,10 @@ (?i)abort: .*?certificate.verify.failed.* (re) [255] + $ cat ../log + * ssl error: * (glob) + $ : > ../log + #endif $ DISABLECACERTS="--config devel.disableloaddefaultcerts=true" @@ -75,6 +83,11 @@ (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) [150] + $ cat ../log + connection from * (glob) + no hello: b'' + $ : > ../log + With global certificates: $ try --debug --config web.cacerts="$CERTSDIR/pub.pem" @@ -86,6 +99,40 @@ (verifying remote certificate) sending [PATCH] a ... + $ cat ../log + connection from * (glob) + * from=quux to=foo, bar (glob) + MIME-Version: 1.0 + Content-Type: text/plain; charset="us-ascii" + Content-Transfer-Encoding: 7bit + Subject: [PATCH] a + X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab + X-Mercurial-Series-Index: 1 + X-Mercurial-Series-Total: 1 + Message-Id: <*@test-hostname> (glob) + X-Mercurial-Series-Id: <*@test-hostname> (glob) + User-Agent: Mercurial-patchbomb* (glob) + Date: * (glob) + From: quux + To: foo + Cc: bar + + # HG changeset patch + # User test + # Date 1 0 + # Thu Jan 01 00:00:01 1970 +0000 + # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab + # Parent 0000000000000000000000000000000000000000 + a + + diff -r 0000000000000000000000000000000000000000 -r 8580ff50825a50c8f716709acdf8de0deddcd6ab a + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/a Thu Jan 01 00:00:01 1970 +0000 + @@ -0,0 +1,1 @@ + +a + + $ : > ../log + With invalid certificates: $ try --config web.cacerts="$CERTSDIR/pub-other.pem" @@ -96,4 +143,8 @@ (?i)abort: .*?certificate.verify.failed.* (re) [255] + $ cat ../log + * ssl error: * (glob) + $ : > ../log + $ cd ..
--- a/tests/test-persistent-nodemap-stream-clone.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-persistent-nodemap-stream-clone.t Thu Jul 06 16:07:34 2023 +0200 @@ -43,7 +43,7 @@ No race condition - $ hg clone -U --stream ssh://user@dummy/test-repo stream-clone --debug | egrep '00(changelog|manifest)' + $ hg clone -U --stream ssh://user@dummy/test-repo stream-clone --debug | grep -E '00(changelog|manifest)' adding [s] 00manifest.n (62 bytes) adding [s] 00manifest-*.nd (118 KB) (glob) adding [s] 00manifest.d (4?? KB) (glob) @@ -52,7 +52,7 @@ adding [s] 00changelog-*.nd (118 KB) (glob) adding [s] 00changelog.d (3?? KB) (glob) adding [s] 00changelog.i (313 KB) - $ ls -1 stream-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 stream-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' 00changelog-*.nd (glob) 00changelog.n 00manifest-*.nd (glob) @@ -112,7 +112,7 @@ Do a mix of clone and commit at the same time so that the file listed on disk differ at actual transfer time. - $ (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) & + $ (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) & $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 $ hg -R test-repo/ commit -m foo created new head @@ -211,7 +211,7 @@ Performe the mix of clone and full refresh of the nodemap, so that the files (and filenames) are different between listing time and actual transfer time. - $ (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) & + $ (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) & $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1 $ rm test-repo/.hg/store/00changelog.n $ rm test-repo/.hg/store/00changelog-*.nd
--- a/tests/test-persistent-nodemap.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-persistent-nodemap.t Thu Jul 06 16:07:34 2023 +0200 @@ -615,10 +615,10 @@ $ hg share race-repo ./other-wc --config format.use-share-safe=yes updating working directory 5001 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg debugformat -R ./race-repo | egrep 'share-safe|persistent-nodemap' + $ hg debugformat -R ./race-repo | grep -E 'share-safe|persistent-nodemap' share-safe: yes persistent-nodemap: yes - $ hg debugformat -R ./other-wc/ | egrep 'share-safe|persistent-nodemap' + $ hg debugformat -R ./other-wc/ | grep -E 'share-safe|persistent-nodemap' share-safe: yes persistent-nodemap: yes $ hg -R ./other-wc update 'min(head())' @@ -818,7 +818,7 @@ - changelog - manifest - $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' [1] $ hg debugnodemap --metadata @@ -860,7 +860,7 @@ - changelog - manifest - $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' 00changelog-*.nd (glob) 00changelog.n 00manifest-*.nd (glob) @@ -891,7 +891,7 @@ - changelog - manifest - $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 .hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' 00changelog-*.nd (glob) 00changelog.n 00manifest-*.nd (glob) @@ -916,7 +916,7 @@ The persistent nodemap should exist after a streaming clone $ hg clone --pull --quiet -U test-repo standard-clone - $ ls -1 standard-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 standard-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' 00changelog-*.nd (glob) 00changelog.n 00manifest-*.nd (glob) @@ -936,7 +936,7 @@ The persistent nodemap should exist after a streaming clone $ hg clone -U test-repo local-clone - $ ls -1 local-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' + $ ls -1 local-clone/.hg/store/ | grep -E '00(changelog|manifest)(\.n|-.*\.nd)' 00changelog-*.nd (glob) 00changelog.n 00manifest-*.nd (glob)
--- a/tests/test-profile.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-profile.t Thu Jul 06 16:07:34 2023 +0200 @@ -6,7 +6,7 @@ Function to check that statprof ran $ statprofran () { - > egrep 'Sample count:|No samples recorded' > /dev/null + > grep -E 'Sample count:|No samples recorded' > /dev/null > } test --profile
--- a/tests/test-push-cgi.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-push-cgi.t Thu Jul 06 16:07:34 2023 +0200 @@ -16,8 +16,6 @@ create hgweb invocation script $ cat >hgweb.cgi <<HGWEB - > import cgitb - > cgitb.enable() > from mercurial import demandimport; demandimport.enable() > from mercurial.hgweb import hgweb > from mercurial.hgweb import wsgicgi
--- a/tests/test-pushvars.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-pushvars.t Thu Jul 06 16:07:34 2023 +0200 @@ -5,7 +5,7 @@ $ cat > $TESTTMP/pretxnchangegroup.sh << EOF > #!/bin/sh - > env | egrep "^HG_USERVAR_(DEBUG|BYPASS_REVIEW)" | sort + > env | grep -E "^HG_USERVAR_(DEBUG|BYPASS_REVIEW)" | sort > exit 0 > EOF $ cat >> $HGRCPATH << EOF
--- a/tests/test-remotefilelog-corrupt-cache.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-remotefilelog-corrupt-cache.t Thu Jul 06 16:07:34 2023 +0200 @@ -37,7 +37,7 @@ > EOF $ chmod u+w $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 $ echo x > $CACHEDIR/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0 - $ hg up tip 2>&1 | egrep "^[^ ].*unexpected remotefilelog" + $ hg up tip 2>&1 | grep -E "^[^ ].*unexpected remotefilelog" abort: unexpected remotefilelog header: illegal format Verify detection and remediation when remotefilelog.validatecachelog is set
--- a/tests/test-remotefilelog-gc.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-remotefilelog-gc.t Thu Jul 06 16:07:34 2023 +0200 @@ -106,6 +106,11 @@ # Test that warning is displayed when the repo path is malformed $ printf "asdas\0das" >> $CACHEDIR/repos +#if py311 + $ hg gc + finished: removed 0 of 4 files (0.00 GB to 0.00 GB) +#else $ hg gc abort: invalid path asdas\x00da: .*(null|NULL).* (re) [255] +#endif
--- a/tests/test-remotefilelog-gcrepack.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-remotefilelog-gcrepack.t Thu Jul 06 16:07:34 2023 +0200 @@ -41,7 +41,7 @@ 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) $ hg repack - $ find $CACHEDIR | sort | egrep ".datapack|.histpack" + $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack @@ -72,7 +72,7 @@ $ hg repack - $ find $CACHEDIR | sort | egrep ".datapack|.histpack" + $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack $TESTTMP/hgcache/master/packs/a4e1d094ec2aee8a08a4d6d95a13c634cc7d7394.datapack @@ -98,7 +98,7 @@ 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) $ hg repack - $ find $CACHEDIR | sort | egrep ".datapack|.histpack" + $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack @@ -130,7 +130,7 @@ $ hg repack - $ find $CACHEDIR | sort | egrep ".datapack|.histpack" + $ find $CACHEDIR | sort | grep -E ".datapack|.histpack" $TESTTMP/hgcache/master/packs/7bcd2d90b99395ca43172a0dd24e18860b2902f9.histpack $TESTTMP/hgcache/master/packs/dc8f8fdc76690ce27791ce9f53a18da379e50d37.datapack
--- a/tests/test-sidedata.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-sidedata.t Thu Jul 06 16:07:34 2023 +0200 @@ -61,10 +61,10 @@ ------------------------------------- $ hg init up-no-side-data --config experimental.revlogv2=no - $ hg debugformat -v -R up-no-side-data | egrep 'changelog-v2|revlog-v2' + $ hg debugformat -v -R up-no-side-data | grep -E 'changelog-v2|revlog-v2' revlog-v2: no no no changelog-v2: no no no - $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | egrep 'changelog-v2|revlog-v2' + $ hg debugformat -v -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data | grep -E 'changelog-v2|revlog-v2' revlog-v2: no yes no changelog-v2: no no no $ hg debugupgraderepo -R up-no-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data > /dev/null @@ -73,10 +73,10 @@ ----------------------------------------- $ hg init up-side-data --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data - $ hg debugformat -v -R up-side-data | egrep 'changelog-v2|revlog-v2' + $ hg debugformat -v -R up-side-data | grep -E 'changelog-v2|revlog-v2' revlog-v2: yes no no changelog-v2: no no no - $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | egrep 'changelog-v2|revlog-v2' + $ hg debugformat -v -R up-side-data --config experimental.revlogv2=no | grep -E 'changelog-v2|revlog-v2' revlog-v2: yes no no changelog-v2: no no no $ hg debugupgraderepo -R up-side-data --config experimental.revlogv2=no > /dev/null
--- a/tests/test-sparse.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-sparse.t Thu Jul 06 16:07:34 2023 +0200 @@ -312,7 +312,7 @@ $ touch dir1/notshown $ hg commit -A dir1/notshown -m "notshown" $ hg debugsparse --include 'dir1/dir2' - $ "$PYTHON" $TESTDIR/list-tree.py . | egrep -v '\.[\/]\.hg' + $ "$PYTHON" $TESTDIR/list-tree.py . | grep -E -v '\.[\/]\.hg' ./ ./dir1/ ./dir1/dir2/ @@ -320,7 +320,7 @@ ./hide.orig $ hg debugsparse --delete 'dir1/dir2' $ hg debugsparse --include 'glob:dir1/dir2' - $ "$PYTHON" $TESTDIR/list-tree.py . | egrep -v '\.[\/]\.hg' + $ "$PYTHON" $TESTDIR/list-tree.py . | grep -E -v '\.[\/]\.hg' ./ ./dir1/ ./dir1/dir2/
--- a/tests/test-subrepo-deep-nested-change.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-subrepo-deep-nested-change.t Thu Jul 06 16:07:34 2023 +0200 @@ -396,7 +396,7 @@ archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) \r (no-eol) (esc) - $ diff -r . ../wdir | egrep -v '\.hg$|^Common subdirectories:' + $ diff -r . ../wdir | grep -E -v '\.hg$|^Common subdirectories:' Only in ../wdir: .hg_archival.txt $ find ../wdir -type f | sort @@ -815,7 +815,7 @@ $ hg add sub1/sub2 $ hg archive -S -r 'wdir()' ../wdir2 - $ diff -r . ../wdir2 | egrep -v '\.hg$|^Common subdirectories:' + $ diff -r . ../wdir2 | grep -E -v '\.hg$|^Common subdirectories:' Only in ../wdir2: .hg_archival.txt Only in .: .hglf Only in .: foo @@ -854,7 +854,7 @@ $ echo 'mod' > large.bin $ echo 'mod' > sub1/sub2/large.dat $ hg archive -S -r 'wdir()' ../wdir3 - $ diff -r . ../wdir3 | egrep -v '\.hg$|^Common subdirectories' + $ diff -r . ../wdir3 | grep -E -v '\.hg$|^Common subdirectories' Only in ../wdir3: .hg_archival.txt Only in .: .hglf Only in .: foo
--- a/tests/test-subrepo-git.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-subrepo-git.t Thu Jul 06 16:07:34 2023 +0200 @@ -263,7 +263,7 @@ make and push changes to hg without updating the subrepo $ cd ../t - $ hg clone . ../td 2>&1 | egrep -v '^Cloning into|^done\.' + $ hg clone . ../td 2>&1 | grep -E -v '^Cloning into|^done\.' updating to branch default cloning subrepo s from $TESTTMP/gitroot checking out detached HEAD in subrepository "s"
--- a/tests/test-subrepo-recursion.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-subrepo-recursion.t Thu Jul 06 16:07:34 2023 +0200 @@ -436,7 +436,7 @@ (unzip date formating is unstable, we do not care about it and glob it out) - $ unzip -l ../archive.zip | grep -v -- ----- | egrep -v files$ + $ unzip -l ../archive.zip | grep -v -- ----- | grep -E -v files$ Archive: ../archive.zip Length [ ]* Date [ ]* Time [ ]* Name (re) 172 [0-9:\- ]* .hg_archival.txt (re)
--- a/tests/test-subrepo-svn.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-subrepo-svn.t Thu Jul 06 16:07:34 2023 +0200 @@ -4,7 +4,7 @@ $ SVNREPOURL="`"$PYTHON" $TESTDIR/svnurlof.py \"$SVNREPOPATH\"`" $ filter_svn_output () { - > egrep -v 'Committing|Transmitting|Updating|(^$)' || true + > grep -E -v 'Committing|Transmitting|Updating|(^$)' || true > } create subversion repo
--- a/tests/test-template-map.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-template-map.t Thu Jul 06 16:07:34 2023 +0200 @@ -227,7 +227,7 @@ $ hg log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg log -T phases > phases.out - $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' + $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' +phase: draft +phase: draft +phase: draft @@ -243,7 +243,7 @@ $ hg log -v --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg log -v -T phases > phases.out - $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' + $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' +phase: draft +phase: draft +phase: draft @@ -299,7 +299,7 @@ $ hg --color=debug log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg --color=debug log -T phases > phases.out - $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' + $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' +[log.phase|phase: draft] +[log.phase|phase: draft] +[log.phase|phase: draft] @@ -315,7 +315,7 @@ $ hg --color=debug -v log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg --color=debug -v log -T phases > phases.out - $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' + $ diff -U 0 log.out phases.out | grep -E -v '^---|^\+\+\+|^@@' +[log.phase|phase: draft] +[log.phase|phase: draft] +[log.phase|phase: draft]
--- a/tests/test-upgrade-repo.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-upgrade-repo.t Thu Jul 06 16:07:34 2023 +0200 @@ -2013,7 +2013,7 @@ For multiple change at the same time ------------------------------------ - $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)' + $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' dirstate-v2: no tracked-hint: yes share-safe: no @@ -2031,7 +2031,7 @@ (see `hg help config.format.use-share-safe` for details) automatically downgrading repository from the `tracked-hint` feature (see `hg help config.format.use-dirstate-tracked-hint` for details) - $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)' + $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' dirstate-v2: yes tracked-hint: no share-safe: yes @@ -2040,7 +2040,7 @@ --------------------------- - $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)' + $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' dirstate-v2: yes tracked-hint: no share-safe: yes @@ -2055,7 +2055,7 @@ > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ > --config format.use-share-safe=no - $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)' + $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' dirstate-v2: no tracked-hint: yes share-safe: no @@ -2070,7 +2070,7 @@ > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \ > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \ > --config format.use-share-safe=yes - $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)' + $ hg debugformat -R auto-upgrade | grep -E '(dirstate-v2|tracked|share-safe)' dirstate-v2: yes tracked-hint: no share-safe: yes
--- a/tests/test-walk.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-walk.t Thu Jul 06 16:07:34 2023 +0200 @@ -676,7 +676,7 @@ > EOF $ "$PYTHON" printnum.py >> overflow.list $ echo fenugreek >> overflow.list - $ hg debugwalk 'listfile:overflow.list' 2>&1 | egrep -v '^xxx' + $ hg debugwalk 'listfile:overflow.list' 2>&1 | grep -E -v '^xxx' f fennel fennel exact f fenugreek fenugreek exact $ cd ..
--- a/tests/test-worker.t Thu Jun 22 11:28:17 2023 +0200 +++ b/tests/test-worker.t Thu Jul 06 16:07:34 2023 +0200 @@ -84,7 +84,7 @@ [255] $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ - > test 100000.0 abort --traceback 2>&1 | egrep '(WorkerError|Abort)' + > test 100000.0 abort --traceback 2>&1 | grep -E '(WorkerError|Abort)' raise error.Abort(b'known exception') mercurial.error.Abort: known exception raise error.WorkerError(status)