Show More
@@ -0,0 +1,38 b'' | |||||
|
1 | # | |||
|
2 | # This file is autogenerated by pip-compile with python 3.9 | |||
|
3 | # To update, run: | |||
|
4 | # | |||
|
5 | # pip-compile --generate-hashes --no-reuse-hashes --output-file=contrib/packaging/requirements-macos.txt contrib/packaging/requirements-macos.txt.in | |||
|
6 | # | |||
|
7 | docutils==0.19 \ | |||
|
8 | --hash=sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6 \ | |||
|
9 | --hash=sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc | |||
|
10 | # via -r contrib/packaging/requirements-macos.txt.in | |||
|
11 | fuzzywuzzy==0.18.0 \ | |||
|
12 | --hash=sha256:45016e92264780e58972dca1b3d939ac864b78437422beecebb3095f8efd00e8 \ | |||
|
13 | --hash=sha256:928244b28db720d1e0ee7587acf660ea49d7e4c632569cad4f1cd7e68a5f0993 | |||
|
14 | # via -r contrib/packaging/requirements-macos.txt.in | |||
|
15 | importlib-metadata==5.1.0 \ | |||
|
16 | --hash=sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b \ | |||
|
17 | --hash=sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313 | |||
|
18 | # via keyring | |||
|
19 | jaraco-classes==3.2.3 \ | |||
|
20 | --hash=sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158 \ | |||
|
21 | --hash=sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a | |||
|
22 | # via keyring | |||
|
23 | keyring==23.11.0 \ | |||
|
24 | --hash=sha256:3dd30011d555f1345dec2c262f0153f2f0ca6bca041fb1dc4588349bb4c0ac1e \ | |||
|
25 | --hash=sha256:ad192263e2cdd5f12875dedc2da13534359a7e760e77f8d04b50968a821c2361 | |||
|
26 | # via -r contrib/packaging/requirements-macos.txt.in | |||
|
27 | more-itertools==9.0.0 \ | |||
|
28 | --hash=sha256:250e83d7e81d0c87ca6bd942e6aeab8cc9daa6096d12c5308f3f92fa5e5c1f41 \ | |||
|
29 | --hash=sha256:5a6257e40878ef0520b1803990e3e22303a41b5714006c32a3fd8304b26ea1ab | |||
|
30 | # via jaraco-classes | |||
|
31 | pygments==2.13.0 \ | |||
|
32 | --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \ | |||
|
33 | --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42 | |||
|
34 | # via -r contrib/packaging/requirements-macos.txt.in | |||
|
35 | zipp==3.11.0 \ | |||
|
36 | --hash=sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa \ | |||
|
37 | --hash=sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766 | |||
|
38 | # via importlib-metadata |
@@ -0,0 +1,22 b'' | |||||
|
1 | # Declare macOS-specific requirements for generating | |||
|
2 | # the compiled (frozen) set of requirements in | |||
|
3 | # ./requirements-macos.txt. | |||
|
4 | # If run on Windows, it may be necessary to run dos2unix | |||
|
5 | # on the output file to replace any CRLF newlines with LF. | |||
|
6 | ||||
|
7 | # TODO: dulwich, pygit2, and pytest-vcr are flagged as being | |||
|
8 | # incompatible with in-memory resources. Maybe there's a | |||
|
9 | # way to bundle just them externally. | |||
|
10 | ||||
|
11 | docutils | |||
|
12 | #dulwich | |||
|
13 | ||||
|
14 | # Needed by the release note tooling | |||
|
15 | fuzzywuzzy | |||
|
16 | ||||
|
17 | keyring | |||
|
18 | #pygit2 | |||
|
19 | pygments | |||
|
20 | ||||
|
21 | # Needed by the phabricator tests | |||
|
22 | #pytest-vcr |
@@ -237,3 +237,4 b' dbdee8ac3e3fcdda1fa55b90c0a235125b7f8e6f' | |||||
237 | a3356ab610fc50000cf0ba55c424a4d96da11db7 0 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 |
@@ -253,3 +253,4 b' 04f1dba53c961dfdb875c8469adc96fa999cfbed' | |||||
253 | 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0 |
|
253 | 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0 | |
254 | 0000000000000000000000000000000000000000 6.3.0 |
|
254 | 0000000000000000000000000000000000000000 6.3.0 | |
255 | c890d8b8bc59b18e5febf60caada629df5356ee2 6.3.1 |
|
255 | c890d8b8bc59b18e5febf60caada629df5356ee2 6.3.1 | |
|
256 | 59466b13a3ae0e29a5d4f485393e516cfbb057d0 6.3.2 |
@@ -260,10 +260,9 b' pyoxidizer:' | |||||
260 | $(PYOXIDIZER) build --path ./rust/hgcli --release |
|
260 | $(PYOXIDIZER) build --path ./rust/hgcli --release | |
261 |
|
261 | |||
262 |
|
262 | |||
263 | PYOX_DIR=build/pyoxidizer/x86_64-pc-windows-msvc/release/app |
|
|||
264 |
|
||||
265 | # a temporary target to setup all we need for run-tests.py --pyoxidizer |
|
263 | # a temporary target to setup all we need for run-tests.py --pyoxidizer | |
266 | # (should go away as the run-tests implementation improves |
|
264 | # (should go away as the run-tests implementation improves | |
|
265 | pyoxidizer-windows-tests: PYOX_DIR=build/pyoxidizer/x86_64-pc-windows-msvc/release/app | |||
267 | pyoxidizer-windows-tests: pyoxidizer |
|
266 | pyoxidizer-windows-tests: pyoxidizer | |
268 | rm -rf $(PYOX_DIR)/templates |
|
267 | rm -rf $(PYOX_DIR)/templates | |
269 | cp -ar $(PYOX_DIR)/lib/mercurial/templates $(PYOX_DIR)/templates |
|
268 | cp -ar $(PYOX_DIR)/lib/mercurial/templates $(PYOX_DIR)/templates | |
@@ -277,9 +276,25 b' pyoxidizer-windows-tests: pyoxidizer' | |||||
277 | cp -ar doc $(PYOX_DIR)/doc |
|
276 | cp -ar doc $(PYOX_DIR)/doc | |
278 |
|
277 | |||
279 |
|
278 | |||
|
279 | # a temporary target to setup all we need for run-tests.py --pyoxidizer | |||
|
280 | # (should go away as the run-tests implementation improves | |||
|
281 | pyoxidizer-macos-tests: PYOX_DIR=build/pyoxidizer/x86_64-apple-darwin/release/app | |||
|
282 | pyoxidizer-macos-tests: pyoxidizer | |||
|
283 | rm -rf $(PYOX_DIR)/templates | |||
|
284 | cp -a mercurial/templates $(PYOX_DIR)/templates | |||
|
285 | rm -rf $(PYOX_DIR)/helptext | |||
|
286 | cp -a mercurial/helptext $(PYOX_DIR)/helptext | |||
|
287 | rm -rf $(PYOX_DIR)/defaultrc | |||
|
288 | cp -a mercurial/defaultrc $(PYOX_DIR)/defaultrc | |||
|
289 | rm -rf $(PYOX_DIR)/contrib | |||
|
290 | cp -a contrib $(PYOX_DIR)/contrib | |||
|
291 | rm -rf $(PYOX_DIR)/doc | |||
|
292 | cp -a doc $(PYOX_DIR)/doc | |||
|
293 | ||||
|
294 | ||||
280 | .PHONY: help all local build doc cleanbutpackages clean install install-bin \ |
|
295 | .PHONY: help all local build doc cleanbutpackages clean install install-bin \ | |
281 | install-doc install-home install-home-bin install-home-doc \ |
|
296 | install-doc install-home install-home-bin install-home-doc \ | |
282 | dist dist-notests check tests rust-tests check-code format-c \ |
|
297 | dist dist-notests check tests rust-tests check-code format-c \ | |
283 | update-pot pyoxidizer pyoxidizer-windows-tests \ |
|
298 | update-pot pyoxidizer pyoxidizer-windows-tests pyoxidizer-macos-tests \ | |
284 | $(packaging_targets) \ |
|
299 | $(packaging_targets) \ | |
285 | osx |
|
300 | osx |
@@ -3,7 +3,7 b' Upstream-Name: mercurial' | |||||
3 | Source: https://www.mercurial-scm.org/ |
|
3 | Source: https://www.mercurial-scm.org/ | |
4 |
|
4 | |||
5 | Files: * |
|
5 | Files: * | |
6 |
Copyright: 2005-202 |
|
6 | Copyright: 2005-2023, Olivia Mackall <olivia@selenic.com> and others. | |
7 | License: GPL-2+ |
|
7 | License: GPL-2+ | |
8 | This program is free software; you can redistribute it |
|
8 | This program is free software; you can redistribute it | |
9 | and/or modify it under the terms of the GNU General Public |
|
9 | and/or modify it under the terms of the GNU General Public |
@@ -6,7 +6,7 b'' | |||||
6 | #endif |
|
6 | #endif | |
7 |
|
7 | |||
8 | [Setup] |
|
8 | [Setup] | |
9 |
AppCopyright=Copyright 2005-202 |
|
9 | AppCopyright=Copyright 2005-2023 Olivia Mackall and others | |
10 | AppName=Mercurial |
|
10 | AppName=Mercurial | |
11 | AppVersion={#VERSION} |
|
11 | AppVersion={#VERSION} | |
12 | OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX} |
|
12 | OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX} | |
@@ -29,7 +29,7 b' AppContact=mercurial@mercurial-scm.org' | |||||
29 | DefaultDirName={pf}\Mercurial |
|
29 | DefaultDirName={pf}\Mercurial | |
30 | SourceDir=stage |
|
30 | SourceDir=stage | |
31 | VersionInfoDescription=Mercurial distributed SCM (version {#VERSION}) |
|
31 | VersionInfoDescription=Mercurial distributed SCM (version {#VERSION}) | |
32 |
VersionInfoCopyright=Copyright 2005-202 |
|
32 | VersionInfoCopyright=Copyright 2005-2023 Olivia Mackall and others | |
33 | VersionInfoCompany=Olivia Mackall and others |
|
33 | VersionInfoCompany=Olivia Mackall and others | |
34 | VersionInfoVersion={#QUAD_VERSION} |
|
34 | VersionInfoVersion={#QUAD_VERSION} | |
35 | InternalCompressLevel=max |
|
35 | InternalCompressLevel=max |
@@ -140,7 +140,7 b' editor = whatever' | |||||
140 | </p> |
|
140 | </p> | |
141 |
|
141 | |||
142 | <p> |
|
142 | <p> | |
143 |
Mercurial is Copyright 2005-202 |
|
143 | Mercurial is Copyright 2005-2023 Olivia Mackall and others. | |
144 | </p> |
|
144 | </p> | |
145 |
|
145 | |||
146 | <p> |
|
146 | <p> |
@@ -87,7 +87,7 b' class LazyFinder:' | |||||
87 | return getattr(object.__getattribute__(self, "_finder"), name) |
|
87 | return getattr(object.__getattribute__(self, "_finder"), name) | |
88 |
|
88 | |||
89 | def __delattr__(self, name): |
|
89 | def __delattr__(self, name): | |
90 | return delattr(object.__getattribute__(self, "_finder")) |
|
90 | return delattr(object.__getattribute__(self, "_finder"), name) | |
91 |
|
91 | |||
92 | def __setattr__(self, name, value): |
|
92 | def __setattr__(self, name, value): | |
93 | return setattr(object.__getattribute__(self, "_finder"), name, value) |
|
93 | return setattr(object.__getattribute__(self, "_finder"), name, value) |
@@ -7943,7 +7943,7 b' def version_(ui, **opts):' | |||||
7943 | ) |
|
7943 | ) | |
7944 | license = _( |
|
7944 | license = _( | |
7945 | b"(see https://mercurial-scm.org for more information)\n" |
|
7945 | b"(see https://mercurial-scm.org for more information)\n" | |
7946 |
b"\nCopyright (C) 2005-202 |
|
7946 | b"\nCopyright (C) 2005-2023 Olivia Mackall and others\n" | |
7947 | b"This is free software; see the source for copying conditions. " |
|
7947 | b"This is free software; see the source for copying conditions. " | |
7948 | b"There is NO\nwarranty; " |
|
7948 | b"There is NO\nwarranty; " | |
7949 | b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
|
7949 | b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" |
@@ -729,6 +729,8 b' def _disabledpaths():' | |||||
729 | '''find paths of disabled extensions. returns a dict of {name: path}''' |
|
729 | '''find paths of disabled extensions. returns a dict of {name: path}''' | |
730 | import hgext |
|
730 | import hgext | |
731 |
|
731 | |||
|
732 | exts = {} | |||
|
733 | ||||
732 | # The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and |
|
734 | # The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and | |
733 | # it might not be on a filesystem even if it does. |
|
735 | # it might not be on a filesystem even if it does. | |
734 | if util.safehasattr(hgext, '__file__'): |
|
736 | if util.safehasattr(hgext, '__file__'): | |
@@ -738,23 +740,21 b' def _disabledpaths():' | |||||
738 | try: |
|
740 | try: | |
739 | files = os.listdir(extpath) |
|
741 | files = os.listdir(extpath) | |
740 | except OSError: |
|
742 | except OSError: | |
741 |
|
|
743 | pass | |
742 | else: |
|
744 | else: | |
743 | return {} |
|
745 | for e in files: | |
|
746 | if e.endswith(b'.py'): | |||
|
747 | name = e.rsplit(b'.', 1)[0] | |||
|
748 | path = os.path.join(extpath, e) | |||
|
749 | else: | |||
|
750 | name = e | |||
|
751 | path = os.path.join(extpath, e, b'__init__.py') | |||
|
752 | if not os.path.exists(path): | |||
|
753 | continue | |||
|
754 | if name in exts or name in _order or name == b'__init__': | |||
|
755 | continue | |||
|
756 | exts[name] = path | |||
744 |
|
757 | |||
745 | exts = {} |
|
|||
746 | for e in files: |
|
|||
747 | if e.endswith(b'.py'): |
|
|||
748 | name = e.rsplit(b'.', 1)[0] |
|
|||
749 | path = os.path.join(extpath, e) |
|
|||
750 | else: |
|
|||
751 | name = e |
|
|||
752 | path = os.path.join(extpath, e, b'__init__.py') |
|
|||
753 | if not os.path.exists(path): |
|
|||
754 | continue |
|
|||
755 | if name in exts or name in _order or name == b'__init__': |
|
|||
756 | continue |
|
|||
757 | exts[name] = path |
|
|||
758 | for name, path in _disabledextensions.items(): |
|
758 | for name, path in _disabledextensions.items(): | |
759 | # If no path was provided for a disabled extension (e.g. "color=!"), |
|
759 | # If no path was provided for a disabled extension (e.g. "color=!"), | |
760 | # don't replace the path we already found by the scan above. |
|
760 | # don't replace the path we already found by the scan above. | |
@@ -841,6 +841,22 b' def disabled_help(name):' | |||||
841 | paths = _disabledpaths() |
|
841 | paths = _disabledpaths() | |
842 | if name in paths: |
|
842 | if name in paths: | |
843 | return _disabledhelp(paths[name]) |
|
843 | return _disabledhelp(paths[name]) | |
|
844 | else: | |||
|
845 | try: | |||
|
846 | import hgext | |||
|
847 | from hgext import __index__ # pytype: disable=import-error | |||
|
848 | ||||
|
849 | # The extensions are filesystem based, so either an error occurred | |||
|
850 | # or all are enabled. | |||
|
851 | if util.safehasattr(hgext, '__file__'): | |||
|
852 | return | |||
|
853 | ||||
|
854 | if name in _order: # enabled | |||
|
855 | return | |||
|
856 | else: | |||
|
857 | return gettext(__index__.docs.get(name)) | |||
|
858 | except (ImportError, AttributeError): | |||
|
859 | pass | |||
844 |
|
860 | |||
845 |
|
861 | |||
846 | def _walkcommand(node): |
|
862 | def _walkcommand(node): |
@@ -1132,7 +1132,9 b' def _run_partial_resolution_tools(repo, ' | |||||
1132 | patterns = ui.configlist(section, b'%s.patterns' % name, []) |
|
1132 | patterns = ui.configlist(section, b'%s.patterns' % name, []) | |
1133 | is_match = True |
|
1133 | is_match = True | |
1134 | if patterns: |
|
1134 | if patterns: | |
1135 |
m = match.match( |
|
1135 | m = match.match( | |
|
1136 | repo.root, b'', patterns, ctx=local.fctx.changectx() | |||
|
1137 | ) | |||
1136 | is_match = m(local.fctx.path()) |
|
1138 | is_match = m(local.fctx.path()) | |
1137 | if is_match: |
|
1139 | if is_match: | |
1138 | if ui.configbool(section, b'%s.disable' % name): |
|
1140 | if ui.configbool(section, b'%s.disable' % name): |
@@ -112,7 +112,7 b' Mailing list: https://www.mercurial-scm.' | |||||
112 |
|
112 | |||
113 | Copying |
|
113 | Copying | |
114 | """"""" |
|
114 | """"""" | |
115 |
Copyright (C) 2005-202 |
|
115 | Copyright (C) 2005-2023 Olivia Mackall. | |
116 | Free use of this software is granted under the terms of the GNU General |
|
116 | Free use of this software is granted under the terms of the GNU General | |
117 | Public License version 2 or any later version. |
|
117 | Public License version 2 or any later version. | |
118 |
|
118 |
@@ -26,7 +26,7 b' See Also' | |||||
26 | Copying |
|
26 | Copying | |
27 | ======= |
|
27 | ======= | |
28 | This manual page is copyright 2006 Vadim Gelfer. |
|
28 | This manual page is copyright 2006 Vadim Gelfer. | |
29 |
Mercurial is copyright 2005-202 |
|
29 | Mercurial is copyright 2005-2023 Olivia Mackall. | |
30 | Free use of this software is granted under the terms of the GNU General |
|
30 | Free use of this software is granted under the terms of the GNU General | |
31 | Public License version 2 or any later version. |
|
31 | Public License version 2 or any later version. | |
32 |
|
32 |
@@ -34,7 +34,7 b' See Also' | |||||
34 | Copying |
|
34 | Copying | |
35 | ======= |
|
35 | ======= | |
36 | This manual page is copyright 2005 Bryan O'Sullivan. |
|
36 | This manual page is copyright 2005 Bryan O'Sullivan. | |
37 |
Mercurial is copyright 2005-202 |
|
37 | Mercurial is copyright 2005-2023 Olivia Mackall. | |
38 | Free use of this software is granted under the terms of the GNU General |
|
38 | Free use of this software is granted under the terms of the GNU General | |
39 | Public License version 2 or any later version. |
|
39 | Public License version 2 or any later version. | |
40 |
|
40 |
@@ -789,7 +789,7 b' def clone(' | |||||
789 | # data. |
|
789 | # data. | |
790 | createopts[b'lfs'] = True |
|
790 | createopts[b'lfs'] = True | |
791 |
|
791 | |||
792 |
if |
|
792 | if b'lfs' in extensions.disabled(): | |
793 | ui.status( |
|
793 | ui.status( | |
794 | _( |
|
794 | _( | |
795 | b'(remote is using large file support (lfs), but it is ' |
|
795 | b'(remote is using large file support (lfs), but it is ' |
@@ -366,6 +366,7 b' addunfinished(' | |||||
366 | fname=b'bisect.state', |
|
366 | fname=b'bisect.state', | |
367 | allowcommit=True, |
|
367 | allowcommit=True, | |
368 | reportonly=True, |
|
368 | reportonly=True, | |
|
369 | cmdhint=_(b"use 'hg bisect --reset'"), | |||
369 | statushint=_( |
|
370 | statushint=_( | |
370 | b'To mark the changeset good: hg bisect --good\n' |
|
371 | b'To mark the changeset good: hg bisect --good\n' | |
371 | b'To mark the changeset bad: hg bisect --bad\n' |
|
372 | b'To mark the changeset bad: hg bisect --bad\n' |
@@ -1,6 +1,6 b'' | |||||
1 | # utils.urlutil - code related to [paths] management |
|
1 | # utils.urlutil - code related to [paths] management | |
2 | # |
|
2 | # | |
3 |
# Copyright 2005-202 |
|
3 | # Copyright 2005-2023 Olivia Mackall <olivia@selenic.com> and others | |
4 | # |
|
4 | # | |
5 | # This software may be used and distributed according to the terms of the |
|
5 | # This software may be used and distributed according to the terms of the | |
6 | # GNU General Public License version 2 or any later version. |
|
6 | # GNU General Public License version 2 or any later version. |
@@ -1,3 +1,23 b'' | |||||
|
1 | = Mercurial 6.3.2 = | |||
|
2 | ||||
|
3 | * [ecfc84b956a8] tests: expect the message from 1baf0fffd82f in test-hghave.t (issue6762) | |||
|
4 | * [5c095119bff4] tests: add the missing space to test-hghave.t (issue6762) | |||
|
5 | * [2c346c1c75ec] tests: use an all too familiar executable in test-run-tests.t (issue6661) | |||
|
6 | * [13c0e3b4fd35] tests: use `test -f` instead of `ls` to see if a file is present (issue6662) | |||
|
7 | * [8ced4ca30ea1] bisect: correct message about aborting an in-progress bisect (issue6527) | |||
|
8 | * filemerge: fix crash when using filesets in [partial-merge-tools] | |||
|
9 | * help: fix a py3 error interpolating Set into b'%s' | |||
|
10 | * match: make the FLAG_RE pattern a raw string | |||
|
11 | * python-compat: adapt to Python 3.11 BC breakage with `random.sample` | |||
|
12 | * rust-status: fix thread count ceiling | |||
|
13 | * hg: show the correct message when cloning an LFS repo with extension disabled | |||
|
14 | * extensions: process disabled external paths when `hgext` package is in-memory | |||
|
15 | * emitrevision: consider ancestors revision to emit as available base | |||
|
16 | * make: add a target for building pyoxidizer tests on macOS | |||
|
17 | * run-tests: support --pyoxidized on macOS | |||
|
18 | * packaging: add dependencies to the PyOxidizer build on macOS | |||
|
19 | * Miscellaneous test fixes | |||
|
20 | ||||
1 | = Mercurial 6.3.1 = |
|
21 | = Mercurial 6.3.1 = | |
2 |
|
22 | |||
3 | * memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be) |
|
23 | * memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be) |
@@ -55,7 +55,7 b" pub fn status<'dirstate>(" | |||||
55 | // instantiated in `rhg` or some other caller. |
|
55 | // instantiated in `rhg` or some other caller. | |
56 | // TODO find the underlying cause and fix it, then remove this. |
|
56 | // TODO find the underlying cause and fix it, then remove this. | |
57 | rayon::ThreadPoolBuilder::new() |
|
57 | rayon::ThreadPoolBuilder::new() | |
58 | .num_threads(16) |
|
58 | .num_threads(16.min(rayon::current_num_threads())) | |
59 | .build_global() |
|
59 | .build_global() | |
60 | .ok(); |
|
60 | .ok(); | |
61 |
|
61 |
@@ -33,6 +33,7 b' SIGNING_SUBJECT_NAME = VARS.get("SIGNING' | |||||
33 | TIME_STAMP_SERVER_URL = VARS.get("TIME_STAMP_SERVER_URL", "http://timestamp.digicert.com") |
|
33 | TIME_STAMP_SERVER_URL = VARS.get("TIME_STAMP_SERVER_URL", "http://timestamp.digicert.com") | |
34 |
|
34 | |||
35 | IS_WINDOWS = "windows" in BUILD_TARGET_TRIPLE |
|
35 | IS_WINDOWS = "windows" in BUILD_TARGET_TRIPLE | |
|
36 | IS_MACOS = "apple" in BUILD_TARGET_TRIPLE | |||
36 |
|
37 | |||
37 | # Use in-memory resources for all resources. If false, most of the Python |
|
38 | # Use in-memory resources for all resources. If false, most of the Python | |
38 | # stdlib will be in memory, but other things such as Mercurial itself will not |
|
39 | # stdlib will be in memory, but other things such as Mercurial itself will not | |
@@ -148,6 +149,10 b' def make_exe(dist):' | |||||
148 | exe.add_python_resources( |
|
149 | exe.add_python_resources( | |
149 | exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py3.txt"]), |
|
150 | exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py3.txt"]), | |
150 | ) |
|
151 | ) | |
|
152 | if IS_MACOS: | |||
|
153 | exe.add_python_resources( | |||
|
154 | exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-macos.txt"]), | |||
|
155 | ) | |||
151 | extra_packages = VARS.get("extra_py_packages", "") |
|
156 | extra_packages = VARS.get("extra_py_packages", "") | |
152 | if extra_packages: |
|
157 | if extra_packages: | |
153 | for extra in extra_packages.split(","): |
|
158 | for extra in extra_packages.split(","): |
@@ -1658,7 +1658,7 b' if py2exeloaded:' | |||||
1658 | extra['console'] = [ |
|
1658 | extra['console'] = [ | |
1659 | { |
|
1659 | { | |
1660 | 'script': 'hg', |
|
1660 | 'script': 'hg', | |
1661 |
'copyright': 'Copyright (C) 2005-202 |
|
1661 | 'copyright': 'Copyright (C) 2005-2023 Olivia Mackall and others', | |
1662 | 'product_version': version, |
|
1662 | 'product_version': version, | |
1663 | } |
|
1663 | } | |
1664 | ] |
|
1664 | ] |
@@ -202,6 +202,22 b' def has_pyoxidizer():' | |||||
202 | return 'PYOXIDIZED_INSTALLED_AS_HG' in os.environ |
|
202 | return 'PYOXIDIZED_INSTALLED_AS_HG' in os.environ | |
203 |
|
203 | |||
204 |
|
204 | |||
|
205 | @check( | |||
|
206 | "pyoxidizer-in-memory", | |||
|
207 | "running with pyoxidizer build as 'hg' with embedded resources", | |||
|
208 | ) | |||
|
209 | def has_pyoxidizer(): | |||
|
210 | return 'PYOXIDIZED_IN_MEMORY_RSRC' in os.environ | |||
|
211 | ||||
|
212 | ||||
|
213 | @check( | |||
|
214 | "pyoxidizer-in-filesystem", | |||
|
215 | "running with pyoxidizer build as 'hg' with external resources", | |||
|
216 | ) | |||
|
217 | def has_pyoxidizer(): | |||
|
218 | return 'PYOXIDIZED_FILESYSTEM_RSRC' in os.environ | |||
|
219 | ||||
|
220 | ||||
205 | @check("cvs", "cvs client/server") |
|
221 | @check("cvs", "cvs client/server") | |
206 | def has_cvs(): |
|
222 | def has_cvs(): | |
207 | re = br'Concurrent Versions System.*?server' |
|
223 | re = br'Concurrent Versions System.*?server' | |
@@ -612,7 +628,7 b' def has_pyflakes():' | |||||
612 |
|
628 | |||
613 | @check("pylint", "Pylint python linter") |
|
629 | @check("pylint", "Pylint python linter") | |
614 | def has_pylint(): |
|
630 | def has_pylint(): | |
615 | return matchoutput("pylint --help", br"Usage:[ ]+pylint", True) |
|
631 | return matchoutput("pylint --help", br"[Uu]sage:[ ]+pylint", True) | |
616 |
|
632 | |||
617 |
|
633 | |||
618 | @check("clang-format", "clang-format C code formatter (>= 11)") |
|
634 | @check("clang-format", "clang-format C code formatter (>= 11)") | |
@@ -877,7 +893,7 b' def has_demandimport():' | |||||
877 |
|
893 | |||
878 | # Add "py27", "py35", ... as possible feature checks. Note that there's no |
|
894 | # Add "py27", "py35", ... as possible feature checks. Note that there's no | |
879 | # punctuation here. |
|
895 | # punctuation here. | |
880 | @checkvers("py", "Python >= %s", (2.7, 3.5, 3.6, 3.7, 3.8, 3.9)) |
|
896 | @checkvers("py", "Python >= %s", (2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11)) | |
881 | def has_python_range(v): |
|
897 | def has_python_range(v): | |
882 | major, minor = v.split('.')[0:2] |
|
898 | major, minor = v.split('.')[0:2] | |
883 | py_major, py_minor = sys.version_info.major, sys.version_info.minor |
|
899 | py_major, py_minor = sys.version_info.major, sys.version_info.minor | |
@@ -895,7 +911,7 b' def has_python3exe():' | |||||
895 | py = 'python3' |
|
911 | py = 'python3' | |
896 | if os.name == 'nt': |
|
912 | if os.name == 'nt': | |
897 | py = 'py -3' |
|
913 | py = 'py -3' | |
898 | return matchoutput('%s -V' % py, br'^Python 3.(5|6|7|8|9)') |
|
914 | return matchoutput('%s -V' % py, br'^Python 3.(5|6|7|8|9|10|11)') | |
899 |
|
915 | |||
900 |
|
916 | |||
901 | @check("pure", "running with pure Python code") |
|
917 | @check("pure", "running with pure Python code") |
@@ -86,6 +86,7 b' if sys.version_info < (3, 5, 0):' | |||||
86 | ) |
|
86 | ) | |
87 | sys.exit(70) # EX_SOFTWARE from `man 3 sysexit` |
|
87 | sys.exit(70) # EX_SOFTWARE from `man 3 sysexit` | |
88 |
|
88 | |||
|
89 | MACOS = sys.platform == 'darwin' | |||
89 | WINDOWS = os.name == r'nt' |
|
90 | WINDOWS = os.name == r'nt' | |
90 | shellquote = shlex.quote |
|
91 | shellquote = shlex.quote | |
91 |
|
92 | |||
@@ -745,8 +746,8 b' def parseargs(args, parser):' | |||||
745 | parser.error('chg does not work on %s' % os.name) |
|
746 | parser.error('chg does not work on %s' % os.name) | |
746 | if (options.rhg or options.with_rhg) and WINDOWS: |
|
747 | if (options.rhg or options.with_rhg) and WINDOWS: | |
747 | parser.error('rhg does not work on %s' % os.name) |
|
748 | parser.error('rhg does not work on %s' % os.name) | |
748 | if options.pyoxidized and not WINDOWS: |
|
749 | if options.pyoxidized and not (MACOS or WINDOWS): | |
749 | parser.error('--pyoxidized is currently Windows only') |
|
750 | parser.error('--pyoxidized is currently macOS and Windows only') | |
750 | if options.with_chg: |
|
751 | if options.with_chg: | |
751 | options.chg = False # no installation to temporary location |
|
752 | options.chg = False # no installation to temporary location | |
752 | options.with_chg = canonpath(_sys2bytes(options.with_chg)) |
|
753 | options.with_chg = canonpath(_sys2bytes(options.with_chg)) | |
@@ -3205,9 +3206,18 b' class TestRunner:' | |||||
3205 | testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0]))) |
|
3206 | testdir = os.path.dirname(_sys2bytes(canonpath(sys.argv[0]))) | |
3206 | reporootdir = os.path.dirname(testdir) |
|
3207 | reporootdir = os.path.dirname(testdir) | |
3207 | # XXX we should ideally install stuff instead of using the local build |
|
3208 | # XXX we should ideally install stuff instead of using the local build | |
3208 | bin_path = ( |
|
3209 | ||
3209 | b'build/pyoxidizer/x86_64-pc-windows-msvc/release/app/hg.exe' |
|
3210 | exe = b'hg' | |
3210 |
|
|
3211 | triple = b'' | |
|
3212 | ||||
|
3213 | if WINDOWS: | |||
|
3214 | triple = b'x86_64-pc-windows-msvc' | |||
|
3215 | exe = b'hg.exe' | |||
|
3216 | elif MACOS: | |||
|
3217 | # TODO: support Apple silicon too | |||
|
3218 | triple = b'x86_64-apple-darwin' | |||
|
3219 | ||||
|
3220 | bin_path = b'build/pyoxidizer/%s/release/app/%s' % (triple, exe) | |||
3211 | full_path = os.path.join(reporootdir, bin_path) |
|
3221 | full_path = os.path.join(reporootdir, bin_path) | |
3212 | self._hgcommand = full_path |
|
3222 | self._hgcommand = full_path | |
3213 | # Affects hghave.py |
|
3223 | # Affects hghave.py | |
@@ -3441,6 +3451,9 b' class TestRunner:' | |||||
3441 | verbosity = 2 |
|
3451 | verbosity = 2 | |
3442 | runner = TextTestRunner(self, verbosity=verbosity) |
|
3452 | runner = TextTestRunner(self, verbosity=verbosity) | |
3443 |
|
3453 | |||
|
3454 | osenvironb.pop(b'PYOXIDIZED_IN_MEMORY_RSRC', None) | |||
|
3455 | osenvironb.pop(b'PYOXIDIZED_FILESYSTEM_RSRC', None) | |||
|
3456 | ||||
3444 | if self.options.list_tests: |
|
3457 | if self.options.list_tests: | |
3445 | result = runner.listtests(suite) |
|
3458 | result = runner.listtests(suite) | |
3446 | else: |
|
3459 | else: | |
@@ -3851,8 +3864,15 b' class TestRunner:' | |||||
3851 | vlog('# build a pyoxidized version of Mercurial') |
|
3864 | vlog('# build a pyoxidized version of Mercurial') | |
3852 | assert os.path.dirname(self._bindir) == self._installdir |
|
3865 | assert os.path.dirname(self._bindir) == self._installdir | |
3853 | assert self._hgroot, 'must be called after _installhg()' |
|
3866 | assert self._hgroot, 'must be called after _installhg()' | |
3854 | cmd = b'"%(make)s" pyoxidizer-windows-tests' % { |
|
3867 | target = b'' | |
|
3868 | if WINDOWS: | |||
|
3869 | target = b'windows' | |||
|
3870 | elif MACOS: | |||
|
3871 | target = b'macos' | |||
|
3872 | ||||
|
3873 | cmd = b'"%(make)s" pyoxidizer-%(platform)s-tests' % { | |||
3855 | b'make': b'make', |
|
3874 | b'make': b'make', | |
|
3875 | b'platform': target, | |||
3856 | } |
|
3876 | } | |
3857 | cwd = self._hgroot |
|
3877 | cwd = self._hgroot | |
3858 | vlog("# Running", cmd) |
|
3878 | vlog("# Running", cmd) | |
@@ -3869,6 +3889,20 b' class TestRunner:' | |||||
3869 | sys.stdout.buffer.write(out) |
|
3889 | sys.stdout.buffer.write(out) | |
3870 | sys.exit(1) |
|
3890 | sys.exit(1) | |
3871 |
|
3891 | |||
|
3892 | cmd = _bytes2sys(b"%s debuginstall -Tjson" % self._hgcommand) | |||
|
3893 | p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) | |||
|
3894 | out, err = p.communicate() | |||
|
3895 | ||||
|
3896 | props = json.loads(out)[0] | |||
|
3897 | ||||
|
3898 | # Affects hghave.py | |||
|
3899 | osenvironb.pop(b'PYOXIDIZED_IN_MEMORY_RSRC', None) | |||
|
3900 | osenvironb.pop(b'PYOXIDIZED_FILESYSTEM_RSRC', None) | |||
|
3901 | if props["hgmodules"] == props["pythonexe"]: | |||
|
3902 | osenvironb[b'PYOXIDIZED_IN_MEMORY_RSRC'] = b'1' | |||
|
3903 | else: | |||
|
3904 | osenvironb[b'PYOXIDIZED_FILESYSTEM_RSRC'] = b'1' | |||
|
3905 | ||||
3872 | def _outputcoverage(self): |
|
3906 | def _outputcoverage(self): | |
3873 | """Produce code coverage output.""" |
|
3907 | """Produce code coverage output.""" | |
3874 | import coverage |
|
3908 | import coverage |
@@ -794,3 +794,14 b' user adds irrelevant but consistent info' | |||||
794 | 17:228c06deef46 |
|
794 | 17:228c06deef46 | |
795 | 18:d42e18c7bc9b |
|
795 | 18:d42e18c7bc9b | |
796 | $ hg log -q -r 'bisect(untested)' |
|
796 | $ hg log -q -r 'bisect(untested)' | |
|
797 | ||||
|
798 | in-progress bisect interacts with hg merge (issue6527) | |||
|
799 | ||||
|
800 | $ hg up -r 17 -q | |||
|
801 | $ hg merge 7 | |||
|
802 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
803 | (branch merge, don't forget to commit) | |||
|
804 | $ hg merge --abort | |||
|
805 | abort: cannot abort merge with bisect in progress | |||
|
806 | (use 'hg bisect --reset') | |||
|
807 | [20] |
@@ -8,6 +8,7 b' new check.' | |||||
8 |
|
8 | |||
9 | Current checks: |
|
9 | Current checks: | |
10 | - W0102: no mutable default argument |
|
10 | - W0102: no mutable default argument | |
|
11 | - C0321: only one statement on a single line | |||
11 |
|
12 | |||
12 | $ touch $TESTTMP/fakerc |
|
13 | $ touch $TESTTMP/fakerc | |
13 | $ pylint --rcfile=$TESTTMP/fakerc --disable=all \ |
|
14 | $ pylint --rcfile=$TESTTMP/fakerc --disable=all \ |
@@ -1,5 +1,11 b'' | |||||
1 | #require chg |
|
1 | #require chg | |
2 |
|
2 | |||
|
3 | Scale the timeout for the chg-server to the test timeout scaling. | |||
|
4 | This is done to reduce the flakiness of this test on heavy load. | |||
|
5 | ||||
|
6 | $ CHGTIMEOUT=`expr $HGTEST_TIMEOUT / 6` | |||
|
7 | $ export CHGTIMEOUT | |||
|
8 | ||||
3 | $ mkdir log |
|
9 | $ mkdir log | |
4 | $ cp $HGRCPATH $HGRCPATH.unconfigured |
|
10 | $ cp $HGRCPATH $HGRCPATH.unconfigured | |
5 | $ cat <<'EOF' >> $HGRCPATH |
|
11 | $ cat <<'EOF' >> $HGRCPATH |
@@ -43,16 +43,20 b'' | |||||
43 | tested with: 3.0 3.1 3.2.1 |
|
43 | tested with: 3.0 3.1 3.2.1 | |
44 | bug reporting: https://example.org/bts |
|
44 | bug reporting: https://example.org/bts | |
45 | histedit |
|
45 | histedit | |
46 | location: */hgext/histedit.py* (glob) |
|
46 | location: */hgext/histedit.py* (glob) (no-pyoxidizer-in-memory !) | |
|
47 | location: */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
47 | bundled: yes |
|
48 | bundled: yes | |
48 | mq |
|
49 | mq | |
49 | location: */hgext/mq.py* (glob) |
|
50 | location: */hgext/mq.py* (glob) (no-pyoxidizer-in-memory !) | |
|
51 | location: */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
50 | bundled: yes |
|
52 | bundled: yes | |
51 | patchbomb |
|
53 | patchbomb | |
52 | location: */hgext/patchbomb.py* (glob) |
|
54 | location: */hgext/patchbomb.py* (glob) (no-pyoxidizer-in-memory !) | |
|
55 | location: */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
53 | bundled: yes |
|
56 | bundled: yes | |
54 | rebase |
|
57 | rebase | |
55 | location: */hgext/rebase.py* (glob) |
|
58 | location: */hgext/rebase.py* (glob) (no-pyoxidizer-in-memory !) | |
|
59 | location: */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
56 | bundled: yes |
|
60 | bundled: yes | |
57 |
|
61 | |||
58 | $ hg debugextensions -Tjson | sed 's|\\\\|/|g' |
|
62 | $ hg debugextensions -Tjson | sed 's|\\\\|/|g' | |
@@ -75,28 +79,32 b'' | |||||
75 | "buglink": "", |
|
79 | "buglink": "", | |
76 | "bundled": true, |
|
80 | "bundled": true, | |
77 | "name": "histedit", |
|
81 | "name": "histedit", | |
78 | "source": "*/hgext/histedit.py*", (glob) |
|
82 | "source": "*/hgext/histedit.py*", (glob) (no-pyoxidizer-in-memory !) | |
|
83 | "source": */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
79 | "testedwith": [] |
|
84 | "testedwith": [] | |
80 | }, |
|
85 | }, | |
81 | { |
|
86 | { | |
82 | "buglink": "", |
|
87 | "buglink": "", | |
83 | "bundled": true, |
|
88 | "bundled": true, | |
84 | "name": "mq", |
|
89 | "name": "mq", | |
85 | "source": "*/hgext/mq.py*", (glob) |
|
90 | "source": "*/hgext/mq.py*", (glob) (no-pyoxidizer-in-memory !) | |
|
91 | "source": */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
86 | "testedwith": [] |
|
92 | "testedwith": [] | |
87 | }, |
|
93 | }, | |
88 | { |
|
94 | { | |
89 | "buglink": "", |
|
95 | "buglink": "", | |
90 | "bundled": true, |
|
96 | "bundled": true, | |
91 | "name": "patchbomb", |
|
97 | "name": "patchbomb", | |
92 | "source": "*/hgext/patchbomb.py*", (glob) |
|
98 | "source": "*/hgext/patchbomb.py*", (glob) (no-pyoxidizer-in-memory !) | |
|
99 | "source": */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
93 | "testedwith": [] |
|
100 | "testedwith": [] | |
94 | }, |
|
101 | }, | |
95 | { |
|
102 | { | |
96 | "buglink": "", |
|
103 | "buglink": "", | |
97 | "bundled": true, |
|
104 | "bundled": true, | |
98 | "name": "rebase", |
|
105 | "name": "rebase", | |
99 | "source": "*/hgext/rebase.py*", (glob) |
|
106 | "source": "*/hgext/rebase.py*", (glob) (no-pyoxidizer-in-memory !) | |
|
107 | "source": */release/app/hg* (glob) (pyoxidizer-in-memory !) | |||
100 | "testedwith": [] |
|
108 | "testedwith": [] | |
101 | } |
|
109 | } | |
102 | ] |
|
110 | ] |
@@ -25,6 +25,7 b' Testing hghave extensibility for third p' | |||||
25 | > "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \ |
|
25 | > "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \ | |
26 | > $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \ |
|
26 | > $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \ | |
27 | > ) |
|
27 | > ) | |
|
28 | installed Mercurial in * seconds (glob) (?) | |||
28 | running 1 tests using 1 parallel processes |
|
29 | running 1 tests using 1 parallel processes | |
29 | . |
|
30 | . | |
30 | # Ran 1 tests, 0 skipped, 0 failed. |
|
31 | # Ran 1 tests, 0 skipped, 0 failed. |
@@ -308,7 +308,7 b' XXX-PYOXIDIZER Pyoxidizer build have tro' | |||||
308 | we accept the bad output for now as this is the last thing in the way of |
|
308 | we accept the bad output for now as this is the last thing in the way of | |
309 | testing the pyoxidizer build. |
|
309 | testing the pyoxidizer build. | |
310 |
|
310 | |||
311 | #if no-pyoxidizer |
|
311 | #if no-pyoxidizer-in-filesystem | |
312 | $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf= |
|
312 | $ HGRCSKIPREPO=1 hg paths --config extensions.zeroconf= | |
313 | foo = $TESTTMP/bar |
|
313 | foo = $TESTTMP/bar | |
314 | #else |
|
314 | #else |
@@ -13,7 +13,8 b' hg debuginstall' | |||||
13 | checking Mercurial version (*) (glob) |
|
13 | checking Mercurial version (*) (glob) | |
14 | checking Mercurial custom build (*) (glob) |
|
14 | checking Mercurial custom build (*) (glob) | |
15 | checking module policy (*) (glob) |
|
15 | checking module policy (*) (glob) | |
16 | checking installed modules (*mercurial)... (glob) |
|
16 | checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !) | |
|
17 | checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !) | |||
17 | checking registered compression engines (*zlib*) (glob) |
|
18 | checking registered compression engines (*zlib*) (glob) | |
18 | checking available compression engines (*zlib*) (glob) |
|
19 | checking available compression engines (*zlib*) (glob) | |
19 | checking available compression engines for wire protocol (*zlib*) (glob) |
|
20 | checking available compression engines for wire protocol (*zlib*) (glob) | |
@@ -43,7 +44,8 b' hg debuginstall JSON' | |||||
43 | "encodingerror": null, |
|
44 | "encodingerror": null, | |
44 | "extensionserror": null, (no-pure !) |
|
45 | "extensionserror": null, (no-pure !) | |
45 | "hgmodulepolicy": "*", (glob) |
|
46 | "hgmodulepolicy": "*", (glob) | |
46 | "hgmodules": "*mercurial", (glob) |
|
47 | "hgmodules": "*mercurial", (glob) (no-pyoxidizer-in-memory !) | |
|
48 | "hgmodules": "*/release/app/hg*", (glob) (pyoxidizer-in-memory !) | |||
47 | "hgver": "*", (glob) |
|
49 | "hgver": "*", (glob) | |
48 | "hgverextra": "*", (glob) |
|
50 | "hgverextra": "*", (glob) | |
49 | "problems": 0, |
|
51 | "problems": 0, | |
@@ -76,7 +78,8 b' hg debuginstall with no username' | |||||
76 | checking Mercurial version (*) (glob) |
|
78 | checking Mercurial version (*) (glob) | |
77 | checking Mercurial custom build (*) (glob) |
|
79 | checking Mercurial custom build (*) (glob) | |
78 | checking module policy (*) (glob) |
|
80 | checking module policy (*) (glob) | |
79 | checking installed modules (*mercurial)... (glob) |
|
81 | checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !) | |
|
82 | checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !) | |||
80 | checking registered compression engines (*zlib*) (glob) |
|
83 | checking registered compression engines (*zlib*) (glob) | |
81 | checking available compression engines (*zlib*) (glob) |
|
84 | checking available compression engines (*zlib*) (glob) | |
82 | checking available compression engines for wire protocol (*zlib*) (glob) |
|
85 | checking available compression engines for wire protocol (*zlib*) (glob) | |
@@ -125,7 +128,8 b' path variables are expanded (~ is the sa' | |||||
125 | checking Mercurial version (*) (glob) |
|
128 | checking Mercurial version (*) (glob) | |
126 | checking Mercurial custom build (*) (glob) |
|
129 | checking Mercurial custom build (*) (glob) | |
127 | checking module policy (*) (glob) |
|
130 | checking module policy (*) (glob) | |
128 | checking installed modules (*mercurial)... (glob) |
|
131 | checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !) | |
|
132 | checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !) | |||
129 | checking registered compression engines (*zlib*) (glob) |
|
133 | checking registered compression engines (*zlib*) (glob) | |
130 | checking available compression engines (*zlib*) (glob) |
|
134 | checking available compression engines (*zlib*) (glob) | |
131 | checking available compression engines for wire protocol (*zlib*) (glob) |
|
135 | checking available compression engines for wire protocol (*zlib*) (glob) | |
@@ -154,7 +158,8 b' not found (this is intentionally using b' | |||||
154 | checking Mercurial version (*) (glob) |
|
158 | checking Mercurial version (*) (glob) | |
155 | checking Mercurial custom build (*) (glob) |
|
159 | checking Mercurial custom build (*) (glob) | |
156 | checking module policy (*) (glob) |
|
160 | checking module policy (*) (glob) | |
157 | checking installed modules (*mercurial)... (glob) |
|
161 | checking installed modules (*mercurial)... (glob) (no-pyoxidizer-in-memory !) | |
|
162 | checking installed modules (*/release/app/hg*)... (glob) (pyoxidizer-in-memory !) | |||
158 | checking registered compression engines (*zlib*) (glob) |
|
163 | checking registered compression engines (*zlib*) (glob) | |
159 | checking available compression engines (*zlib*) (glob) |
|
164 | checking available compression engines (*zlib*) (glob) | |
160 | checking available compression engines for wire protocol (*zlib*) (glob) |
|
165 | checking available compression engines for wire protocol (*zlib*) (glob) |
@@ -196,6 +196,30 b' only `tail` should run' | |||||
196 | >>>>>>> merge rev: 8c217da987be - test: a b c d e f2 |
|
196 | >>>>>>> merge rev: 8c217da987be - test: a b c d e f2 | |
197 |
|
197 | |||
198 |
|
198 | |||
|
199 | Filesets can be used to select which files to run partial merge tools on. | |||
|
200 | ||||
|
201 | $ hg up -C 4 | |||
|
202 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
203 | $ hg merge 3 -t :merge3 --config partial-merge-tools.head.patterns=set:other | |||
|
204 | merging file | |||
|
205 | warning: conflicts while merging file! (edit, then use 'hg resolve --mark') | |||
|
206 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |||
|
207 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | |||
|
208 | [1] | |||
|
209 | $ cat file | |||
|
210 | b | |||
|
211 | c | |||
|
212 | d | |||
|
213 | e | |||
|
214 | <<<<<<< working copy: d57edaa6e21a - test: a b c d e f3 | |||
|
215 | f3 | |||
|
216 | ||||||| common ancestor: 8ae8bb9cc43a - test: a b c d e f | |||
|
217 | f | |||
|
218 | ======= | |||
|
219 | f2 | |||
|
220 | >>>>>>> merge rev: 8c217da987be - test: a b c d e f2 | |||
|
221 | ||||
|
222 | ||||
199 | If there are several matching tools, they are run in requested order. We move |
|
223 | If there are several matching tools, they are run in requested order. We move | |
200 | `head` after `tail` in order here so it has no effect (the conflict in "f" thus |
|
224 | `head` after `tail` in order here so it has no effect (the conflict in "f" thus | |
201 | remains). |
|
225 | remains). |
@@ -144,7 +144,7 b' XXX-PYOXIDIZER Pyoxidizer build have tro' | |||||
144 | we accept the bad output for now as this is the last thing in the way of |
|
144 | we accept the bad output for now as this is the last thing in the way of | |
145 | testing the pyoxidizer build. |
|
145 | testing the pyoxidizer build. | |
146 |
|
146 | |||
147 | #if no-pyoxidizer |
|
147 | #if no-pyoxidizer-in-filesystem | |
148 | $ hg paths --config extensions.zeroconf= |
|
148 | $ hg paths --config extensions.zeroconf= | |
149 | dupe = $TESTTMP/b#tip |
|
149 | dupe = $TESTTMP/b#tip | |
150 | dupe:pushurl = https://example.com/dupe |
|
150 | dupe:pushurl = https://example.com/dupe |
@@ -21,9 +21,9 b' Define a helper to avoid the install ste' | |||||
21 | error paths |
|
21 | error paths | |
22 |
|
22 | |||
23 | #if symlink |
|
23 | #if symlink | |
24 | $ ln -s "/"bin"/"true hg |
|
24 | $ ln -s $TESTDIR/run-tests.py hg | |
25 | $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg |
|
25 | $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg | |
26 |
|
|
26 | warning: --with-hg should specify an hg script, not: run-tests.py | |
27 |
|
|
27 | running 0 tests using 0 parallel processes | |
28 |
|
28 | |||
29 | # Ran 0 tests, 0 skipped, 0 failed. |
|
29 | # Ran 0 tests, 0 skipped, 0 failed. |
@@ -165,8 +165,7 b' update not affecting the tracked set' | |||||
165 | Test upgrade and downgrade |
|
165 | Test upgrade and downgrade | |
166 | ========================== |
|
166 | ========================== | |
167 |
|
167 | |||
168 |
$ |
|
168 | $ test -f .hg/dirstate-tracked-hint | |
169 | .hg/dirstate-tracked-hint |
|
|||
170 | $ hg debugrequires | grep 'tracked' |
|
169 | $ hg debugrequires | grep 'tracked' | |
171 | dirstate-tracked-key-v1 |
|
170 | dirstate-tracked-key-v1 | |
172 |
|
171 | |||
@@ -181,9 +180,8 b' downgrade' | |||||
181 |
|
180 | |||
182 | no revlogs to process |
|
181 | no revlogs to process | |
183 |
|
182 | |||
184 |
$ |
|
183 | $ test -f .hg/dirstate-tracked-hint | |
185 | ls: *.hg/dirstate-tracked-hint*: $ENOENT$ (glob) |
|
184 | [1] | |
186 | [2] |
|
|||
187 |
$ |
|
185 | $ hg debugrequires | grep 'tracked' | |
188 | [1] |
|
186 | [1] | |
189 |
|
187 | |||
@@ -198,8 +196,7 b' upgrade' | |||||
198 |
|
196 | |||
199 | no revlogs to process |
|
197 | no revlogs to process | |
200 |
|
198 | |||
201 |
$ |
|
199 | $ test -f .hg/dirstate-tracked-hint | |
202 | .hg/dirstate-tracked-hint |
|
|||
203 | $ hg debugrequires | grep 'tracked' |
|
200 | $ hg debugrequires | grep 'tracked' | |
204 | dirstate-tracked-key-v1 |
|
201 | dirstate-tracked-key-v1 | |
205 | $ cd .. |
|
202 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now