Show More
@@ -227,3 +227,4 b' c00d3ce4e94bb0ee8d809e25e1dcb2a5fab84e2c' | |||||
227 | d4486810a1795fba9521449b8885ced034f3a6dd 0 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 |
@@ -240,3 +240,4 b' c00d3ce4e94bb0ee8d809e25e1dcb2a5fab84e2c' | |||||
240 | d4486810a1795fba9521449b8885ced034f3a6dd 6.1 |
|
240 | d4486810a1795fba9521449b8885ced034f3a6dd 6.1 | |
241 | 5bd6bcd31dd1ebb63b8914b00064f96297267af7 6.1.1 |
|
241 | 5bd6bcd31dd1ebb63b8914b00064f96297267af7 6.1.1 | |
242 | 0ddd5e1f5f67438af85d12e4ce6c39021dde9916 6.1.2 |
|
242 | 0ddd5e1f5f67438af85d12e4ce6c39021dde9916 6.1.2 | |
|
243 | 6b10151b962108f65bfa12b3918b1021ca334f73 6.1.3 |
@@ -9,6 +9,7 b'' | |||||
9 | from mercurial import ( |
|
9 | from mercurial import ( | |
10 | bundle2, |
|
10 | bundle2, | |
11 | error, |
|
11 | error, | |
|
12 | exchange, | |||
12 | extensions, |
|
13 | extensions, | |
13 | hg, |
|
14 | hg, | |
14 | narrowspec, |
|
15 | narrowspec, | |
@@ -85,6 +86,11 b' def narrow_widen(' | |||||
85 | newincludes = splitpaths(newincludes) |
|
86 | newincludes = splitpaths(newincludes) | |
86 | oldexcludes = splitpaths(oldexcludes) |
|
87 | oldexcludes = splitpaths(oldexcludes) | |
87 | newexcludes = splitpaths(newexcludes) |
|
88 | newexcludes = splitpaths(newexcludes) | |
|
89 | ||||
|
90 | # enforce narrow acl if set | |||
|
91 | if repo.ui.has_section(exchange._NARROWACL_SECTION): | |||
|
92 | exchange.applynarrowacl(repo, {'includepats': newincludes}) | |||
|
93 | ||||
88 | # validate the patterns |
|
94 | # validate the patterns | |
89 | narrowspec.validatepatterns(set(oldincludes)) |
|
95 | narrowspec.validatepatterns(set(oldincludes)) | |
90 | narrowspec.validatepatterns(set(newincludes)) |
|
96 | narrowspec.validatepatterns(set(newincludes)) |
@@ -446,6 +446,7 b' class chgcmdserver(commandserver.server)' | |||||
446 | os.dup2(nullfd, fp.fileno()) |
|
446 | os.dup2(nullfd, fp.fileno()) | |
447 | fp.flush() |
|
447 | fp.flush() | |
448 | os.dup2(fd, fp.fileno()) |
|
448 | os.dup2(fd, fp.fileno()) | |
|
449 | os.close(fd) | |||
449 | except OSError as err: |
|
450 | except OSError as err: | |
450 | # According to issue6330, running chg on heavy loaded systems |
|
451 | # According to issue6330, running chg on heavy loaded systems | |
451 | # can lead to EBUSY. [man dup2] indicates that, on Linux, |
|
452 | # can lead to EBUSY. [man dup2] indicates that, on Linux, | |
@@ -458,7 +459,6 b' class chgcmdserver(commandserver.server)' | |||||
458 | stringutil.forcebytestr(err), |
|
459 | stringutil.forcebytestr(err), | |
459 | fn, |
|
460 | fn, | |
460 | ) |
|
461 | ) | |
461 | os.close(fd) |
|
|||
462 | setattr(self, cn, ch) |
|
462 | setattr(self, cn, ch) | |
463 | setattr(ui, fn, fp) |
|
463 | setattr(ui, fn, fp) | |
464 | os.close(nullfd) |
|
464 | os.close(nullfd) |
@@ -969,6 +969,10 b' def killdaemons(pidfile):' | |||||
969 | return killmod.killdaemons(pidfile, tryhard=False, remove=True, logfn=vlog) |
|
969 | return killmod.killdaemons(pidfile, tryhard=False, remove=True, logfn=vlog) | |
970 |
|
970 | |||
971 |
|
971 | |||
|
972 | # sysconfig is not thread-safe (https://github.com/python/cpython/issues/92452) | |||
|
973 | sysconfiglock = threading.Lock() | |||
|
974 | ||||
|
975 | ||||
972 | class Test(unittest.TestCase): |
|
976 | class Test(unittest.TestCase): | |
973 | """Encapsulates a single, runnable test. |
|
977 | """Encapsulates a single, runnable test. | |
974 |
|
978 | |||
@@ -1399,6 +1403,7 b' class Test(unittest.TestCase):' | |||||
1399 | env["HGPORT%s" % offset] = '%s' % (self._startport + i) |
|
1403 | env["HGPORT%s" % offset] = '%s' % (self._startport + i) | |
1400 |
|
1404 | |||
1401 | env = os.environ.copy() |
|
1405 | env = os.environ.copy() | |
|
1406 | with sysconfiglock: | |||
1402 | env['PYTHONUSERBASE'] = sysconfig.get_config_var('userbase') or '' |
|
1407 | env['PYTHONUSERBASE'] = sysconfig.get_config_var('userbase') or '' | |
1403 | env['HGEMITWARNINGS'] = '1' |
|
1408 | env['HGEMITWARNINGS'] = '1' | |
1404 | env['TESTTMP'] = _bytes2sys(self._testtmp) |
|
1409 | env['TESTTMP'] = _bytes2sys(self._testtmp) |
@@ -41,3 +41,39 b' NarrowHG should track f1 and f2' | |||||
41 | $ hg -R narrowclone1 tracked |
|
41 | $ hg -R narrowclone1 tracked | |
42 | I path:f1 |
|
42 | I path:f1 | |
43 | I path:f2 |
|
43 | I path:f2 | |
|
44 | ||||
|
45 | Narrow should not be able to widen to include f3 | |||
|
46 | $ hg -R narrowclone1 tracked --addinclude f3 | |||
|
47 | comparing with http://localhost:$HGPORT1/ | |||
|
48 | searching for changes | |||
|
49 | abort: The following includes are not accessible for test: ['path:f3'] | |||
|
50 | [255] | |||
|
51 | $ ls -A -1 narrowclone1 | sort | |||
|
52 | .hg | |||
|
53 | f1 | |||
|
54 | f2 | |||
|
55 | $ hg -R narrowclone1 tracked | |||
|
56 | I path:f1 | |||
|
57 | I path:f2 | |||
|
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