##// END OF EJS Templates
branching: merge with stable
marmoute -
r50867:1bd33932 merge default
parent child Browse files
Show More
@@ -34,6 +34,7 b' checks:'
34 variables:
34 variables:
35 RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
35 RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
36 PYTHON: python3
36 PYTHON: python3
37 CI_CLEVER_CLOUD_FLAVOR: S
37
38
38 rust-cargo-test:
39 rust-cargo-test:
39 <<: *all
40 <<: *all
@@ -44,6 +45,7 b' rust-cargo-test:'
44 - make cargo-clippy
45 - make cargo-clippy
45 variables:
46 variables:
46 PYTHON: python3
47 PYTHON: python3
48 CI_CLEVER_CLOUD_FLAVOR: S
47
49
48 test-c:
50 test-c:
49 <<: *runtests
51 <<: *runtests
@@ -44,6 +44,12 b' try:'
44 revision = breezy.revision
44 revision = breezy.revision
45 revisionspec = breezy.revisionspec
45 revisionspec = breezy.revisionspec
46 revisionspec.RevisionSpec
46 revisionspec.RevisionSpec
47
48 try:
49 # brz 3.3.0 (revno: 7614.2.2)
50 from breezy.transport import NoSuchFile
51 except ImportError:
52 from breezy.errors import NoSuchFile
47 except ImportError:
53 except ImportError:
48 pass
54 pass
49
55
@@ -153,7 +159,7 b' class bzr_source(common.converter_source'
153
159
154 try:
160 try:
155 kind = revtree.kind(name)
161 kind = revtree.kind(name)
156 except breezy.errors.NoSuchFile:
162 except NoSuchFile:
157 return None, None
163 return None, None
158 if kind not in supportedkinds:
164 if kind not in supportedkinds:
159 # the file is not available anymore - was deleted
165 # the file is not available anymore - was deleted
@@ -142,7 +142,9 b' class convert_cvs(converter_source):'
142
142
143 if root.startswith(b":pserver:"):
143 if root.startswith(b":pserver:"):
144 root = root[9:]
144 root = root[9:]
145 m = re.match(r'(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)', root)
145 m = re.match(
146 br'(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)', root
147 )
146 if m:
148 if m:
147 conntype = b"pserver"
149 conntype = b"pserver"
148 user, passw, serv, port, root = m.groups()
150 user, passw, serv, port, root = m.groups()
@@ -197,7 +199,7 b' class convert_cvs(converter_source):'
197 if sck.recv(128) != b"I LOVE YOU\n":
199 if sck.recv(128) != b"I LOVE YOU\n":
198 raise error.Abort(_(b"CVS pserver authentication failed"))
200 raise error.Abort(_(b"CVS pserver authentication failed"))
199
201
200 self.writep = self.readp = sck.makefile(b'r+')
202 self.writep = self.readp = sck.makefile('rwb')
201
203
202 if not conntype and root.startswith(b":local:"):
204 if not conntype and root.startswith(b":local:"):
203 conntype = b"local"
205 conntype = b"local"
@@ -686,7 +686,10 b' def createchangeset(ui, log, fuzz=60, me'
686
686
687 files = set()
687 files = set()
688 if len(changesets) % 100 == 0:
688 if len(changesets) % 100 == 0:
689 t = b'%d %s' % (len(changesets), repr(e.comment)[1:-1])
689 t = b'%d %s' % (
690 len(changesets),
691 pycompat.byterepr(e.comment)[2:-1],
692 )
690 ui.status(stringutil.ellipsis(t, 80) + b'\n')
693 ui.status(stringutil.ellipsis(t, 80) + b'\n')
691
694
692 c.entries.append(e)
695 c.entries.append(e)
@@ -533,6 +533,8 b' def makebundlerepository(ui, repopath, b'
533 try:
533 try:
534 repo = localrepo.instance(ui, repopath, create=False)
534 repo = localrepo.instance(ui, repopath, create=False)
535 tempparent = None
535 tempparent = None
536 except error.RequirementError:
537 raise # no fallback if the backing repo is unsupported
536 except error.RepoError:
538 except error.RepoError:
537 tempparent = pycompat.mkdtemp()
539 tempparent = pycompat.mkdtemp()
538 try:
540 try:
@@ -10,7 +10,6 b' import binascii'
10 import functools
10 import functools
11 import random
11 import random
12 import re
12 import re
13 import sys
14
13
15 from .i18n import _
14 from .i18n import _
16 from .pycompat import getattr
15 from .pycompat import getattr
@@ -2352,7 +2351,7 b' def roots(repo, subset, x):'
2352 return subset & s.filter(filter, condrepr=b'<roots>')
2351 return subset & s.filter(filter, condrepr=b'<roots>')
2353
2352
2354
2353
2355 MAXINT = sys.maxsize
2354 MAXINT = (1 << 31) - 1
2356 MININT = -MAXINT - 1
2355 MININT = -MAXINT - 1
2357
2356
2358
2357
@@ -278,6 +278,11 b' def checknewlabel(repo, lbl, kind):'
278 )
278 )
279 try:
279 try:
280 int(lbl)
280 int(lbl)
281 if b'_' in lbl:
282 # If label contains underscores, Python might consider it an
283 # integer (with "_" as visual separators), but we do not.
284 # See PEP 515 - Underscores in Numeric Literals.
285 raise ValueError
281 raise error.InputError(_(b"cannot use an integer as a name"))
286 raise error.InputError(_(b"cannot use an integer as a name"))
282 except ValueError:
287 except ValueError:
283 pass
288 pass
@@ -59,7 +59,10 b' try:'
59 from importlib import resources # pytype: disable=import-error
59 from importlib import resources # pytype: disable=import-error
60
60
61 # Force loading of the resources module
61 # Force loading of the resources module
62 resources.open_binary # pytype: disable=module-attr
62 if pycompat.safehasattr(resources, 'files'):
63 resources.files # pytype: disable=module-attr
64 else:
65 resources.open_binary # pytype: disable=module-attr
63
66
64 # py2exe raises an AssertionError if uses importlib.resources
67 # py2exe raises an AssertionError if uses importlib.resources
65 if getattr(sys, "frozen", None) in ("console_exe", "windows_exe"):
68 if getattr(sys, "frozen", None) in ("console_exe", "windows_exe"):
@@ -92,9 +95,18 b' else:'
92 from .. import encoding
95 from .. import encoding
93
96
94 def open_resource(package, name):
97 def open_resource(package, name):
95 return resources.open_binary( # pytype: disable=module-attr
98 if pycompat.safehasattr(resources, 'files'):
96 pycompat.sysstr(package), pycompat.sysstr(name)
99 return (
97 )
100 resources.files( # pytype: disable=module-attr
101 pycompat.sysstr(package)
102 )
103 .joinpath(pycompat.sysstr(name))
104 .open('rb')
105 )
106 else:
107 return resources.open_binary( # pytype: disable=module-attr
108 pycompat.sysstr(package), pycompat.sysstr(name)
109 )
98
110
99 def is_resource(package, name):
111 def is_resource(package, name):
100 return resources.is_resource( # pytype: disable=module-attr
112 return resources.is_resource( # pytype: disable=module-attr
@@ -217,9 +217,10 b' class hgcommand:'
217 cmd = self.cmd + args
217 cmd = self.cmd + args
218 returncode, out, err = runcmd(cmd, self.env)
218 returncode, out, err = runcmd(cmd, self.env)
219 err = filterhgerr(err)
219 err = filterhgerr(err)
220 if err or returncode != 0:
220 if err:
221 print("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr)
221 print("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr)
222 print(err, file=sys.stderr)
222 print(err, file=sys.stderr)
223 if returncode != 0:
223 return b''
224 return b''
224 return out
225 return out
225
226
@@ -333,8 +334,12 b" if os.path.isdir('.hg'):"
333 else: # no tag found
334 else: # no tag found
334 ltagcmd = ['parents', '--template', '{latesttag}']
335 ltagcmd = ['parents', '--template', '{latesttag}']
335 ltag = sysstr(hg.run(ltagcmd))
336 ltag = sysstr(hg.run(ltagcmd))
337 if not ltag:
338 ltag = 'null'
336 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag]
339 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag]
337 changessince = len(hg.run(changessincecmd).splitlines())
340 changessince = len(hg.run(changessincecmd).splitlines())
341 if ltag == 'null':
342 ltag = '0.0'
338 version = '%s+hg%s.%s' % (ltag, changessince, hgid)
343 version = '%s+hg%s.%s' % (ltag, changessince, hgid)
339 if version.endswith('+'):
344 if version.endswith('+'):
340 version = version[:-1] + 'local' + time.strftime('%Y%m%d')
345 version = version[:-1] + 'local' + time.strftime('%Y%m%d')
@@ -31,6 +31,11 b' for line in sys.stdin:'
31 elif not line.startswith(' '):
31 elif not line.startswith(' '):
32 state = 'none'
32 state = 'none'
33
33
34 elif not line.replace('^', '').replace('~', '').strip():
35 # PEP 657: Fine-grained error locations in tracebacks
36 # ~~~~~~^^^^^^^^^
37 continue
38
34 elif state == 'file':
39 elif state == 'file':
35 # Ignore lines after " File "
40 # Ignore lines after " File "
36 state = 'tb'
41 state = 'tb'
@@ -206,7 +206,7 b' def has_pyoxidizer():'
206 "pyoxidizer-in-memory",
206 "pyoxidizer-in-memory",
207 "running with pyoxidizer build as 'hg' with embedded resources",
207 "running with pyoxidizer build as 'hg' with embedded resources",
208 )
208 )
209 def has_pyoxidizer():
209 def has_pyoxidizer_mem():
210 return 'PYOXIDIZED_IN_MEMORY_RSRC' in os.environ
210 return 'PYOXIDIZED_IN_MEMORY_RSRC' in os.environ
211
211
212
212
@@ -214,7 +214,7 b' def has_pyoxidizer():'
214 "pyoxidizer-in-filesystem",
214 "pyoxidizer-in-filesystem",
215 "running with pyoxidizer build as 'hg' with external resources",
215 "running with pyoxidizer build as 'hg' with external resources",
216 )
216 )
217 def has_pyoxidizer():
217 def has_pyoxidizer_fs():
218 return 'PYOXIDIZED_FILESYSTEM_RSRC' in os.environ
218 return 'PYOXIDIZED_FILESYSTEM_RSRC' in os.environ
219
219
220
220
@@ -661,36 +661,22 b' def has_pygments():'
661 return False
661 return False
662
662
663
663
664 @check("pygments25", "Pygments version >= 2.5")
664 def getpygmentsversion():
665 def pygments25():
666 try:
665 try:
667 import pygments
666 import pygments
668
667
669 v = pygments.__version__
668 v = pygments.__version__
669
670 parts = v.split(".")
671 return (int(parts[0]), int(parts[1]))
670 except ImportError:
672 except ImportError:
671 return False
673 return (0, 0)
672
673 parts = v.split(".")
674 major = int(parts[0])
675 minor = int(parts[1])
676
677 return (major, minor) >= (2, 5)
678
674
679
675
680 @check("pygments211", "Pygments version >= 2.11")
676 @checkvers("pygments", "Pygments version >= %s", (2.5, 2.11, 2.14))
681 def pygments211():
677 def has_pygments_range(v):
682 try:
678 major, minor = v.split('.')[0:2]
683 import pygments
679 return getpygmentsversion() >= (int(major), int(minor))
684
685 v = pygments.__version__
686 except ImportError:
687 return False
688
689 parts = v.split(".")
690 major = int(parts[0])
691 minor = int(parts[1])
692
693 return (major, minor) >= (2, 11)
694
680
695
681
696 @check("outer-repo", "outer repo")
682 @check("outer-repo", "outer repo")
@@ -82,6 +82,11 b' trailing or leading spaces should be str'
82 (use 'hg update' to switch to it)
82 (use 'hg update' to switch to it)
83 [10]
83 [10]
84
84
85 underscores in numeric branch names (issue6737)
86
87 $ hg branch 2700_210
88 marked working directory as branch 2700_210
89
85 verify update will accept invalid legacy branch names
90 verify update will accept invalid legacy branch names
86
91
87 $ hg init test-invalid-branch-name
92 $ hg init test-invalid-branch-name
@@ -14,7 +14,8 b' In tests, enforce $PYTHON and *not* /usr'
14 > -X tests/test-check-format.t \
14 > -X tests/test-check-format.t \
15 > -X tests/test-check-module-imports.t \
15 > -X tests/test-check-module-imports.t \
16 > -X tests/test-check-pyflakes.t \
16 > -X tests/test-check-pyflakes.t \
17 > -X tests/test-check-shbang.t
17 > -X tests/test-check-shbang.t \
18 > -X tests/test-highlight.t
18 [1]
19 [1]
19
20
20 The above exclusions are because they're looking for files that
21 The above exclusions are because they're looking for files that
@@ -8,6 +8,7 b' import sys'
8 import types
8 import types
9
9
10 # Don't import pycompat because it has too many side-effects.
10 # Don't import pycompat because it has too many side-effects.
11 ispy311 = (sys.version_info.major, sys.version_info.minor) >= (3, 11)
11
12
12 # Only run if demandimport is allowed
13 # Only run if demandimport is allowed
13 if subprocess.call(
14 if subprocess.call(
@@ -73,8 +74,7 b' demandimport.enable()'
73 assert 'mercurial.error' not in sys.modules
74 assert 'mercurial.error' not in sys.modules
74 from mercurial import error as errorproxy
75 from mercurial import error as errorproxy
75
76
76 # unsure why this isn't lazy.
77 assert isinstance(errorproxy, _LazyModule)
77 assert not isinstance(f, _LazyModule)
78 assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy)
78 assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy)
79
79
80 doc = ' '.join(errorproxy.__doc__.split()[:3])
80 doc = ' '.join(errorproxy.__doc__.split()[:3])
@@ -92,10 +92,16 b' assert f(errorproxy) == "<module \'mercur'
92 import os
92 import os
93
93
94 assert not isinstance(os, _LazyModule)
94 assert not isinstance(os, _LazyModule)
95 assert f(os) == "<module 'os' from '?'>", f(os)
95 if ispy311:
96 assert f(os) == "<module 'os' (frozen)>", f(os)
97 else:
98 assert f(os) == "<module 'os' from '?'>", f(os)
96
99
97 assert f(os.system) == '<built-in function system>', f(os.system)
100 assert f(os.system) == '<built-in function system>', f(os.system)
98 assert f(os) == "<module 'os' from '?'>", f(os)
101 if ispy311:
102 assert f(os) == "<module 'os' (frozen)>", f(os)
103 else:
104 assert f(os) == "<module 'os' from '?'>", f(os)
99
105
100 assert 'mercurial.utils.procutil' not in sys.modules
106 assert 'mercurial.utils.procutil' not in sys.modules
101 from mercurial.utils import procutil
107 from mercurial.utils import procutil
@@ -598,6 +598,7 b' Even though the extension fails during u'
598 uisetup(ui)
598 uisetup(ui)
599 File "$TESTTMP/baduisetup.py", line 2, in uisetup
599 File "$TESTTMP/baduisetup.py", line 2, in uisetup
600 1 / 0
600 1 / 0
601 ~~^~~ (py311 !)
601 ZeroDivisionError: * by zero (glob)
602 ZeroDivisionError: * by zero (glob)
602 *** failed to set up extension baduisetup: * by zero (glob)
603 *** failed to set up extension baduisetup: * by zero (glob)
603 Mercurial Distributed SCM (version *) (glob)
604 Mercurial Distributed SCM (version *) (glob)
@@ -163,7 +163,8 b' hgweb filerevision, html'
163 <span id="l7"><span class="kn">import</span> <span class="nn">itertools</span></span><a href="#l7"></a>
163 <span id="l7"><span class="kn">import</span> <span class="nn">itertools</span></span><a href="#l7"></a>
164 <span id="l8"></span><a href="#l8"></a>
164 <span id="l8"></span><a href="#l8"></a>
165 <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a>
165 <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a>
166 <span id="l10"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a>
166 <span id="l10"><span class="w"> </span><span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a> (pygments214 !)
167 <span id="l10"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a> (no-pygments214 !)
167 <span id="l11"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a>
168 <span id="l11"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a>
168 <span id="l12"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a>
169 <span id="l12"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a>
169 <span id="l13"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a>
170 <span id="l13"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a>
@@ -489,7 +490,8 b' hgweb fileannotate, html'
489 <a href="/rev/687f2d169546">changeset</a>
490 <a href="/rev/687f2d169546">changeset</a>
490 </div>
491 </div>
491 </td>
492 </td>
492 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
493 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="w"> </span><span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td> (pygments214 !)
494 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td> (no-pygments214 !)
493 </tr>
495 </tr>
494 <tr id="l11" class="thisrev">
496 <tr id="l11" class="thisrev">
495 <td class="annotate parity0">
497 <td class="annotate parity0">
@@ -1008,7 +1010,7 b' We attempt to highlight unknown files by'
1008 > EOF
1010 > EOF
1009
1011
1010 $ cat > unknownfile << EOF
1012 $ cat > unknownfile << EOF
1011 > #!$PYTHON
1013 > #!/this/helps/pygments/detect/python
1012 > def foo():
1014 > def foo():
1013 > pass
1015 > pass
1014 > EOF
1016 > EOF
@@ -340,12 +340,14 b' Test a checksum failure during the proce'
340 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
340 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
341 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
341 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
342 $LOCALIP - - [$ERRDATE$] HG error: verifies = store.verify(oid) (glob)
342 $LOCALIP - - [$ERRDATE$] HG error: verifies = store.verify(oid) (glob)
343 $LOCALIP - - [$ERRDATE$] HG error: ^^^^^^^^^^^^^^^^^ (glob) (py311 !)
343 $LOCALIP - - [$ERRDATE$] HG error: raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
344 $LOCALIP - - [$ERRDATE$] HG error: raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
344 $LOCALIP - - [$ERRDATE$] HG error: *Error: [Errno *] f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e: I/O error (glob)
345 $LOCALIP - - [$ERRDATE$] HG error: *Error: [Errno *] f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e: I/O error (glob)
345 $LOCALIP - - [$ERRDATE$] HG error: (glob)
346 $LOCALIP - - [$ERRDATE$] HG error: (glob)
346 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
347 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
347 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
348 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
348 $LOCALIP - - [$ERRDATE$] HG error: verifies = store.verify(oid) (glob)
349 $LOCALIP - - [$ERRDATE$] HG error: verifies = store.verify(oid) (glob)
350 $LOCALIP - - [$ERRDATE$] HG error: ^^^^^^^^^^^^^^^^^ (glob) (py311 !)
349 $LOCALIP - - [$ERRDATE$] HG error: raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
351 $LOCALIP - - [$ERRDATE$] HG error: raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
350 $LOCALIP - - [$ERRDATE$] HG error: *Error: [Errno *] b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c: I/O error (glob)
352 $LOCALIP - - [$ERRDATE$] HG error: *Error: [Errno *] b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c: I/O error (glob)
351 $LOCALIP - - [$ERRDATE$] HG error: (glob)
353 $LOCALIP - - [$ERRDATE$] HG error: (glob)
@@ -363,19 +365,26 b' Test a checksum failure during the proce'
363 self.do_hgweb()
365 self.do_hgweb()
364 for chunk in self.server.application(env, self._start_response):
366 for chunk in self.server.application(env, self._start_response):
365 for r in self._runwsgi(req, res, repo):
367 for r in self._runwsgi(req, res, repo):
368 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
366 handled = wireprotoserver.handlewsgirequest( (py38 !)
369 handled = wireprotoserver.handlewsgirequest( (py38 !)
370 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
367 return _processbasictransfer( (py38 !)
371 return _processbasictransfer( (py38 !)
372 ^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
368 rctx, req, res, self.check_perm (no-py38 !)
373 rctx, req, res, self.check_perm (no-py38 !)
369 rctx.repo, req, res, lambda perm: checkperm(rctx, req, perm) (no-py38 !)
374 rctx.repo, req, res, lambda perm: checkperm(rctx, req, perm) (no-py38 !)
370 res.setbodybytes(localstore.read(oid))
375 res.setbodybytes(localstore.read(oid))
376 ^^^^^^^^^^^^^^^^^^^^ (py311 !)
371 blob = self._read(self.vfs, oid, verify)
377 blob = self._read(self.vfs, oid, verify)
378 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
372 raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8"))
379 raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8"))
373 *Error: [Errno *] 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d: I/O error (glob)
380 *Error: [Errno *] 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d: I/O error (glob)
374
381
375 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
382 $LOCALIP - - [$ERRDATE$] HG error: Exception happened while processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
376 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
383 $LOCALIP - - [$ERRDATE$] HG error: Traceback (most recent call last): (glob)
377 $LOCALIP - - [$ERRDATE$] HG error: res.setbodybytes(localstore.read(oid)) (glob)
384 $LOCALIP - - [$ERRDATE$] HG error: res.setbodybytes(localstore.read(oid)) (glob)
385 $LOCALIP - - [$ERRDATE$] HG error: ^^^^^^^^^^^^^^^^^^^^ (glob) (py311 !)
378 $LOCALIP - - [$ERRDATE$] HG error: blob = self._read(self.vfs, oid, verify) (glob)
386 $LOCALIP - - [$ERRDATE$] HG error: blob = self._read(self.vfs, oid, verify) (glob)
387 $LOCALIP - - [$ERRDATE$] HG error: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (glob) (py311 !)
379 $LOCALIP - - [$ERRDATE$] HG error: blobstore._verify(oid, b'dummy content') (glob)
388 $LOCALIP - - [$ERRDATE$] HG error: blobstore._verify(oid, b'dummy content') (glob)
380 $LOCALIP - - [$ERRDATE$] HG error: raise LfsCorruptionError( (glob) (py38 !)
389 $LOCALIP - - [$ERRDATE$] HG error: raise LfsCorruptionError( (glob) (py38 !)
381 $LOCALIP - - [$ERRDATE$] HG error: hint=_(b'run hg verify'), (glob) (no-py38 !)
390 $LOCALIP - - [$ERRDATE$] HG error: hint=_(b'run hg verify'), (glob) (no-py38 !)
@@ -81,4 +81,14 b' another repository of push/pull/clone on'
81 abort: required features are not supported in the destination: featuresetup-test
81 abort: required features are not supported in the destination: featuresetup-test
82 [255]
82 [255]
83
83
84 Bundlerepo also enforces the underlying repo requirements
85
86 $ hg --cwd supported bundle --all ../bundle.hg
87 1 changesets found
88 $ echo outdoor-pool > push-dst/.hg/requires
89 $ hg --cwd push-dst log -R ../bundle.hg -T phases
90 abort: repository requires features unknown to this Mercurial: outdoor-pool
91 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
92 [255]
93
84 $ cd ..
94 $ cd ..
@@ -2981,16 +2981,16 b' random sort'
2981 $ hg log --rev 'sort(all(), "-random")' | wc -l
2981 $ hg log --rev 'sort(all(), "-random")' | wc -l
2982 \s*8 (re)
2982 \s*8 (re)
2983 $ hg log --rev 'sort(all(), "random", random.seed=celeste)'
2983 $ hg log --rev 'sort(all(), "random", random.seed=celeste)'
2984 0 b12 m111 u112 111 10800
2985 4 b111 m112 u111 110 14400
2986 2 b111 m11 u12 111 3600
2984 6 b111 t2 tu 130 0
2987 6 b111 t2 tu 130 0
2988 1 b11 m12 u111 112 7200
2985 7 b111 t3 tu 130 0
2989 7 b111 t3 tu 130 0
2986 4 b111 m112 u111 110 14400
2987 3 b112 m111 u11 120 0
2988 5 b111 t1 tu 130 0
2990 5 b111 t1 tu 130 0
2991 3 b112 m111 u11 120 0
2992 $ hg log --rev 'first(sort(all(), "random", random.seed=celeste))'
2989 0 b12 m111 u112 111 10800
2993 0 b12 m111 u112 111 10800
2990 1 b11 m12 u111 112 7200
2991 2 b111 m11 u12 111 3600
2992 $ hg log --rev 'first(sort(all(), "random", random.seed=celeste))'
2993 6 b111 t2 tu 130 0
2994
2994
2995
2995
2996 topographical sorting can't be combined with other sort keys, and you can't
2996 topographical sorting can't be combined with other sort keys, and you can't
General Comments 0
You need to be logged in to leave comments. Login now