Show More
@@ -254,3 +254,4 b' c083d9776cb2fb6056715b2988d1ea48055f3162' | |||||
254 | 27055614b68538576fb0439007009acf93fe0a49 0 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 |
@@ -270,3 +270,4 b' c083d9776cb2fb6056715b2988d1ea48055f3162' | |||||
270 | 27055614b68538576fb0439007009acf93fe0a49 6.6rc0 |
|
270 | 27055614b68538576fb0439007009acf93fe0a49 6.6rc0 | |
271 | 26c57e7a0890b96e2c473b394de380d6753c9230 6.6 |
|
271 | 26c57e7a0890b96e2c473b394de380d6753c9230 6.6 | |
272 | 71bd09bebbe36a09569cbfb388f371433360056b 6.6.1 |
|
272 | 71bd09bebbe36a09569cbfb388f371433360056b 6.6.1 | |
|
273 | 136902b3a95db38854ebaf5198a627641065c2ea 6.6.2 |
@@ -6,6 +6,10 b'' | |||||
6 | # GNU General Public License version 2 or any later version. |
|
6 | # GNU General Public License version 2 or any later version. | |
7 |
|
7 | |||
8 |
|
8 | |||
|
9 | from mercurial.i18n import _ | |||
|
10 | ||||
|
11 | from mercurial.utils import stringutil | |||
|
12 | ||||
9 | from mercurial import ( |
|
13 | from mercurial import ( | |
10 | bundle2, |
|
14 | bundle2, | |
11 | error, |
|
15 | error, | |
@@ -82,20 +86,38 b' def narrow_widen(' | |||||
82 | # work around ''.split(',') => [''] |
|
86 | # work around ''.split(',') => [''] | |
83 | return data.split(b',') if data else [] |
|
87 | return data.split(b',') if data else [] | |
84 |
|
88 | |||
85 | oldincludes = splitpaths(oldincludes) |
|
89 | oldincludes = set(splitpaths(oldincludes)) | |
86 | newincludes = splitpaths(newincludes) |
|
90 | newincludes = set(splitpaths(newincludes)) | |
87 | oldexcludes = splitpaths(oldexcludes) |
|
91 | oldexcludes = set(splitpaths(oldexcludes)) | |
88 | newexcludes = splitpaths(newexcludes) |
|
92 | newexcludes = set(splitpaths(newexcludes)) | |
89 |
|
93 | |||
90 | # enforce narrow acl if set |
|
94 | # enforce narrow acl if set | |
91 | if repo.ui.has_section(exchange._NARROWACL_SECTION): |
|
95 | if repo.ui.has_section(exchange._NARROWACL_SECTION): | |
92 |
exchange.applynarrowacl( |
|
96 | kwargs = exchange.applynarrowacl( | |
|
97 | repo, {'includepats': newincludes, 'excludepats': newexcludes} | |||
|
98 | ) | |||
|
99 | newincludes = kwargs['includepats'] | |||
|
100 | requiredexcludes = kwargs['excludepats'] - newexcludes | |||
|
101 | if requiredexcludes: | |||
|
102 | # XXX: The below code to get the username was copied from exchange.py, | |||
|
103 | # where it is noted that this is technically a layering violation for | |||
|
104 | # assuming the existence of HTTP. Using it anyway to make the error | |||
|
105 | # message consistent with the error message for invalid includes. | |||
|
106 | ui = repo.ui | |||
|
107 | username = ui.shortuser( | |||
|
108 | ui.environ.get(b'REMOTE_USER') or ui.username() | |||
|
109 | ) | |||
|
110 | raise error.Abort( | |||
|
111 | _(b"The following excludes cannot be removed for %s: %s") | |||
|
112 | % (username, stringutil.pprint(list(requiredexcludes))) | |||
|
113 | ) | |||
|
114 | newexcludes = kwargs['excludepats'] | |||
93 |
|
115 | |||
94 | # validate the patterns |
|
116 | # validate the patterns | |
95 |
narrowspec.validatepatterns( |
|
117 | narrowspec.validatepatterns(oldincludes) | |
96 |
narrowspec.validatepatterns( |
|
118 | narrowspec.validatepatterns(newincludes) | |
97 |
narrowspec.validatepatterns( |
|
119 | narrowspec.validatepatterns(oldexcludes) | |
98 |
narrowspec.validatepatterns( |
|
120 | narrowspec.validatepatterns(newexcludes) | |
99 |
|
121 | |||
100 | common = wireprototypes.decodelist(commonheads) |
|
122 | common = wireprototypes.decodelist(commonheads) | |
101 | known = wireprototypes.decodelist(known) |
|
123 | known = wireprototypes.decodelist(known) |
@@ -1593,13 +1593,13 b' def bundle(ui, repo, fname, *dests, **op' | |||||
1593 | _(b'packed bundles cannot be produced by "hg bundle"'), |
|
1593 | _(b'packed bundles cannot be produced by "hg bundle"'), | |
1594 | hint=_(b"use 'hg debugcreatestreamclonebundle'"), |
|
1594 | hint=_(b"use 'hg debugcreatestreamclonebundle'"), | |
1595 | ) |
|
1595 | ) | |
1596 |
|
1596 | base_opt = opts.get('base') | ||
1597 | if opts.get('all'): |
|
1597 | if opts.get('all'): | |
1598 | if dests: |
|
1598 | if dests: | |
1599 | raise error.InputError( |
|
1599 | raise error.InputError( | |
1600 | _(b"--all is incompatible with specifying destinations") |
|
1600 | _(b"--all is incompatible with specifying destinations") | |
1601 | ) |
|
1601 | ) | |
1602 |
if |
|
1602 | if base_opt: | |
1603 | ui.warn(_(b"ignoring --base because --all was specified\n")) |
|
1603 | ui.warn(_(b"ignoring --base because --all was specified\n")) | |
1604 | if opts.get('exact'): |
|
1604 | if opts.get('exact'): | |
1605 | ui.warn(_(b"ignoring --exact because --all was specified\n")) |
|
1605 | ui.warn(_(b"ignoring --exact because --all was specified\n")) | |
@@ -1609,19 +1609,24 b' def bundle(ui, repo, fname, *dests, **op' | |||||
1609 | raise error.InputError( |
|
1609 | raise error.InputError( | |
1610 | _(b"--exact is incompatible with specifying destinations") |
|
1610 | _(b"--exact is incompatible with specifying destinations") | |
1611 | ) |
|
1611 | ) | |
1612 |
if |
|
1612 | if base_opt: | |
1613 | ui.warn(_(b"ignoring --base because --exact was specified\n")) |
|
1613 | ui.warn(_(b"ignoring --base because --exact was specified\n")) | |
1614 | base = repo.revs(b'parents(%ld) - %ld', revs, revs) |
|
1614 | base = repo.revs(b'parents(%ld) - %ld', revs, revs) | |
1615 | if not base: |
|
1615 | if not base: | |
1616 | base = [nullrev] |
|
1616 | base = [nullrev] | |
|
1617 | elif base_opt: | |||
|
1618 | base = logcmdutil.revrange(repo, base_opt) | |||
|
1619 | if not base: | |||
|
1620 | # base specified, but nothing was selected | |||
|
1621 | base = [nullrev] | |||
1617 | else: |
|
1622 | else: | |
1618 | base = logcmdutil.revrange(repo, opts.get('base')) |
|
1623 | base = None | |
1619 | if cgversion not in changegroup.supportedoutgoingversions(repo): |
|
1624 | if cgversion not in changegroup.supportedoutgoingversions(repo): | |
1620 | raise error.Abort( |
|
1625 | raise error.Abort( | |
1621 | _(b"repository does not support bundle version %s") % cgversion |
|
1626 | _(b"repository does not support bundle version %s") % cgversion | |
1622 | ) |
|
1627 | ) | |
1623 |
|
1628 | |||
1624 | if base: |
|
1629 | if base is not None: | |
1625 | if dests: |
|
1630 | if dests: | |
1626 | raise error.InputError( |
|
1631 | raise error.InputError( | |
1627 | _(b"--base is incompatible with specifying destinations") |
|
1632 | _(b"--base is incompatible with specifying destinations") |
@@ -202,6 +202,13 b' class bytestr(bytes):' | |||||
202 | >>> bytestr(bytesable()) |
|
202 | >>> bytestr(bytesable()) | |
203 | 'bytes' |
|
203 | 'bytes' | |
204 |
|
204 | |||
|
205 | ...unless the argument is the bytes *type* itself: it gets a | |||
|
206 | __bytes__() method in Python 3.11, which cannot be used as in an instance | |||
|
207 | of bytes: | |||
|
208 | ||||
|
209 | >>> bytestr(bytes) | |||
|
210 | "<class 'bytes'>" | |||
|
211 | ||||
205 | There's no implicit conversion from non-ascii str as its encoding is |
|
212 | There's no implicit conversion from non-ascii str as its encoding is | |
206 | unknown: |
|
213 | unknown: | |
207 |
|
214 | |||
@@ -251,10 +258,9 b' class bytestr(bytes):' | |||||
251 | def __new__(cls: Type[_Tbytestr], s: object = b'') -> _Tbytestr: |
|
258 | def __new__(cls: Type[_Tbytestr], s: object = b'') -> _Tbytestr: | |
252 | if isinstance(s, bytestr): |
|
259 | if isinstance(s, bytestr): | |
253 | return s |
|
260 | return s | |
254 | if not isinstance( |
|
261 | if not isinstance(s, (bytes, bytearray)) and ( | |
255 | s, (bytes, bytearray) |
|
262 | isinstance(s, type) | |
256 |
|
|
263 | or not builtins.hasattr(s, u'__bytes__') # hasattr-py3-only | |
257 | s, u'__bytes__' |
|
|||
258 | ): |
|
264 | ): | |
259 | s = str(s).encode('ascii') |
|
265 | s = str(s).encode('ascii') | |
260 | return bytes.__new__(cls, s) |
|
266 | return bytes.__new__(cls, s) |
@@ -1,3 +1,12 b'' | |||||
|
1 | = Mercurial 6.6.2 = | |||
|
2 | ||||
|
3 | * histedit: remove superfluous echo() and endwin() calls (issue6859) | |||
|
4 | * persistent-nodemap: avoid writing nodemap for empty revlog | |||
|
5 | * persistent-nodemap: respect the mmap setting when refreshing data | |||
|
6 | * bundle: do not detect --base argument that match nothing as lack of argument | |||
|
7 | * narrow: prevent removal of ACL-defined excludes | |||
|
8 | * pycompat: fix bytestr(bytes) in Python 3.11 | |||
|
9 | ||||
1 | = Mercurial 6.6.1 = |
|
10 | = Mercurial 6.6.1 = | |
2 |
|
11 | |||
3 | The first two patches fix aborted transactions that could happen since 6.6. |
|
12 | The first two patches fix aborted transactions that could happen since 6.6. |
@@ -140,6 +140,10 b' should fail' | |||||
140 | $ hg -R test bundle --base 2 --all test-bundle-all-2.hg |
|
140 | $ hg -R test bundle --base 2 --all test-bundle-all-2.hg | |
141 | ignoring --base because --all was specified |
|
141 | ignoring --base because --all was specified | |
142 | 9 changesets found |
|
142 | 9 changesets found | |
|
143 | $ hg -R test bundle --base 3-3 -r tip test-base-match-nothing-with-dest.hg --config paths.default=$TESTTMP/test-3 | |||
|
144 | 5 changesets found | |||
|
145 | $ hg -R test bundle --base 3-3 -r tip test-base-match-nothing-no-dest.hg | |||
|
146 | 5 changesets found | |||
143 | $ hg -R test bundle --base 3 -r tip test-bundle-should-fail.hg |
|
147 | $ hg -R test bundle --base 3 -r tip test-bundle-should-fail.hg | |
144 | 1 changesets found |
|
148 | 1 changesets found | |
145 |
|
149 |
@@ -1,4 +1,4 b'' | |||||
1 | Make a narrow clone then archive it |
|
1 | Test exclusion-based ACL enforcement | |
2 | $ . "$TESTDIR/narrow-library.sh" |
|
2 | $ . "$TESTDIR/narrow-library.sh" | |
3 |
|
3 | |||
4 | $ hg init master |
|
4 | $ hg init master | |
@@ -11,7 +11,9 b' Make a narrow clone then archive it' | |||||
11 | > done |
|
11 | > done | |
12 | $ cat >> .hg/hgrc << EOF |
|
12 | $ cat >> .hg/hgrc << EOF | |
13 | > [narrowacl] |
|
13 | > [narrowacl] | |
14 |
> default.includes= |
|
14 | > default.includes=* | |
|
15 | > default.excludes=f2 f3 | |||
|
16 | > test.excludes=f3 | |||
15 | > EOF |
|
17 | > EOF | |
16 | $ hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid |
|
18 | $ hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid | |
17 | $ cat hg.pid >> "$DAEMON_PIDS" |
|
19 | $ cat hg.pid >> "$DAEMON_PIDS" | |
@@ -37,43 +39,37 b' Requirements should contain narrowhg' | |||||
37 | $ hg debugrequires -R narrowclone1 | grep narrowhg |
|
39 | $ hg debugrequires -R narrowclone1 | grep narrowhg | |
38 | narrowhg-experimental |
|
40 | narrowhg-experimental | |
39 |
|
41 | |||
40 |
NarrowHG should |
|
42 | NarrowHG should exclude f3. | |
41 | $ hg -R narrowclone1 tracked |
|
43 | $ hg -R narrowclone1 tracked | |
42 |
I path: |
|
44 | I path:. | |
43 |
|
|
45 | X path:f3 | |
44 |
|
46 | |||
45 | Narrow should not be able to widen to include f3 |
|
47 | Narrow should not be able to widen to include f3 | |
46 | $ hg -R narrowclone1 tracked --addinclude f3 |
|
48 | $ hg -R narrowclone1 tracked --addinclude f3 | |
47 | comparing with http://localhost:$HGPORT1/ |
|
49 | comparing with http://localhost:$HGPORT1/ | |
48 | searching for changes |
|
50 | searching for changes | |
49 | abort: The following includes are not accessible for test: ['path:f3'] |
|
51 | adding changesets | |
|
52 | adding manifests | |||
|
53 | adding file changes | |||
|
54 | $ ls -A -1 narrowclone1 | sort | |||
|
55 | .hg | |||
|
56 | f1 | |||
|
57 | f2 | |||
|
58 | $ hg -R narrowclone1 tracked | |||
|
59 | I path:. | |||
|
60 | X path:f3 | |||
|
61 | ||||
|
62 | ||||
|
63 | Narrow should not be able to remove the exclusion for f3 | |||
|
64 | $ hg -R narrowclone1 tracked --removeexclude f3 | |||
|
65 | comparing with http://localhost:$HGPORT1/ | |||
|
66 | searching for changes | |||
|
67 | abort: The following excludes cannot be removed for test: ['path:f3'] | |||
50 | [255] |
|
68 | [255] | |
51 | $ ls -A -1 narrowclone1 | sort |
|
69 | $ ls -A -1 narrowclone1 | sort | |
52 | .hg |
|
70 | .hg | |
53 | f1 |
|
71 | f1 | |
54 | f2 |
|
72 | f2 | |
55 | $ hg -R narrowclone1 tracked |
|
73 | $ hg -R narrowclone1 tracked | |
56 |
I path: |
|
74 | I path:. | |
57 |
|
|
75 | X path:f3 | |
58 |
|
||||
59 | Narrow should allow widen to include f2 |
|
|||
60 | $ hg -R narrowclone1 tracked --removeinclude f2 > /dev/null |
|
|||
61 | $ hg -R narrowclone1 tracked |
|
|||
62 | I path:f1 |
|
|||
63 | $ ls -A -1 narrowclone1 | sort |
|
|||
64 | .hg |
|
|||
65 | f1 |
|
|||
66 | $ hg -R narrowclone1 tracked --addinclude f2 |
|
|||
67 | comparing with http://localhost:$HGPORT1/ |
|
|||
68 | searching for changes |
|
|||
69 | adding changesets |
|
|||
70 | adding manifests |
|
|||
71 | adding file changes |
|
|||
72 | added 0 changesets with 1 changes to 1 files |
|
|||
73 | $ hg -R narrowclone1 tracked |
|
|||
74 | I path:f1 |
|
|||
75 | I path:f2 |
|
|||
76 | $ ls -A -1 narrowclone1 | sort |
|
|||
77 | .hg |
|
|||
78 | f1 |
|
|||
79 | f2 |
|
General Comments 0
You need to be logged in to leave comments.
Login now