##// END OF EJS Templates
merge with stable
Martin von Zweigbergk -
r45379:fd3b94f1 merge default
parent child Browse files
Show More
@@ -160,8 +160,11 b' shopt -s extglob'
160 160 if [[ -n "$aliashg" ]]; then
161 161 aliashg=${aliashg#"alias $hg='"}
162 162 aliashg=${aliashg%"'"}
163 # `source`d aliases break completion, so ignore them
164 if [[ "${aliashg:0:7}" != "source " ]]; then
163 165 hg=$aliashg
164 166 fi
167 fi
165 168
166 169 COMPREPLY=()
167 170 cur="$2"
@@ -97,9 +97,18 b' class LazyFinder(object):'
97 97 def __setattr__(self, name, value):
98 98 return setattr(object.__getattribute__(self, "_finder"), name, value)
99 99
100 def find_spec(self, *args, **kwargs):
100 def find_spec(self, fullname, path, target=None):
101 101 finder = object.__getattribute__(self, "_finder")
102 spec = finder.find_spec(*args, **kwargs)
102 try:
103 find_spec = finder.find_spec
104 except AttributeError:
105 loader = finder.find_module(fullname, path)
106 if loader is None:
107 spec = None
108 else:
109 spec = importlib.util.spec_from_loader(fullname, loader)
110 else:
111 spec = find_spec(fullname, path, target)
103 112
104 113 # Lazy loader requires exec_module().
105 114 if (
@@ -53,7 +53,7 b' def convert_to_git_user(authormap, user,'
53 53
54 54 def convert_to_git_date(date):
55 55 timestamp, utcoff = date
56 tzsign = b"+" if utcoff < 0 else b"-"
56 tzsign = b"+" if utcoff <= 0 else b"-"
57 57 if utcoff % 60 != 0:
58 58 raise error.Abort(
59 59 _(b"UTC offset in %b is not an integer number of seconds") % (date,)
@@ -80,7 +80,7 b' def export_commit(ui, repo, rev, marks, '
80 80 ctx = repo[rev]
81 81 revid = ctx.hex()
82 82 if revid in marks:
83 ui.warn(_(b"warning: revision %s already exported, skipped\n") % revid)
83 ui.debug(b"warning: revision %s already exported, skipped\n" % revid)
84 84 return
85 85 parents = [p for p in ctx.parents() if p.rev() != nullrev]
86 86 for p in parents:
@@ -667,7 +667,7 b' def overridestatus('
667 667
668 668 class poststatus(object):
669 669 def __init__(self, startclock):
670 self._startclock = startclock
670 self._startclock = pycompat.sysbytes(startclock)
671 671
672 672 def __call__(self, wctx, status):
673 673 clock = wctx.repo()._fsmonitorstate.getlastclock() or self._startclock
@@ -754,7 +754,8 b' def updatefromremote(ui, repo, remotemar'
754 754 if changed:
755 755 tr = trfunc()
756 756 changes = []
757 for b, node, writer, msg in sorted(changed):
757 key = lambda t: (t[0], t[1] or b'')
758 for b, node, writer, msg in sorted(changed, key=key):
758 759 changes.append((b, node))
759 760 writer(msg)
760 761 localmarks.applychanges(repo, tr, changes)
@@ -103,6 +103,13 b' class dirstate(object):'
103 103 # raises an exception).
104 104 self._cwd
105 105
106 def prefetch_parents(self):
107 """make sure the parents are loaded
108
109 Used to avoid a race condition.
110 """
111 self._pl
112
106 113 @contextlib.contextmanager
107 114 def parentchange(self):
108 115 '''Context manager for handling dirstate parents.
@@ -1748,10 +1755,23 b' if rustmod is not None:'
1748 1755
1749 1756 @propertycache
1750 1757 def _rustmap(self):
1751 self._rustmap = rustmod.DirstateMap(self._root)
1758 """
1759 Fills the Dirstatemap when called.
1760 Use `self._inner_rustmap` if reading the dirstate is not necessary.
1761 """
1762 self._rustmap = self._inner_rustmap
1752 1763 self.read()
1753 1764 return self._rustmap
1754 1765
1766 @propertycache
1767 def _inner_rustmap(self):
1768 """
1769 Does not fill the Dirstatemap when called. This allows for
1770 optimizations where only setting/getting the parents is needed.
1771 """
1772 self._inner_rustmap = rustmod.DirstateMap(self._root)
1773 return self._inner_rustmap
1774
1755 1775 @property
1756 1776 def copymap(self):
1757 1777 return self._rustmap.copymap()
@@ -1761,6 +1781,7 b' if rustmod is not None:'
1761 1781
1762 1782 def clear(self):
1763 1783 self._rustmap.clear()
1784 self._inner_rustmap.clear()
1764 1785 self.setparents(nullid, nullid)
1765 1786 util.clearcachedproperty(self, b"_dirs")
1766 1787 util.clearcachedproperty(self, b"_alldirs")
@@ -1817,7 +1838,7 b' if rustmod is not None:'
1817 1838 st = b''
1818 1839
1819 1840 try:
1820 self._parents = self._rustmap.parents(st)
1841 self._parents = self._inner_rustmap.parents(st)
1821 1842 except ValueError:
1822 1843 raise error.Abort(
1823 1844 _(b'working directory state appears damaged!')
@@ -210,7 +210,7 b' def _allhooks(ui):'
210 210 # in that section uses "_fromuntrusted" as its command.
211 211 untrustedhooks = _hookitems(ui, _untrusted=True)
212 212 for name, value in untrustedhooks.items():
213 trustedvalue = hooks.get(name, (None, None, name, _fromuntrusted))
213 trustedvalue = hooks.get(name, ((), (), name, _fromuntrusted))
214 214 if value != trustedvalue:
215 215 (lp, lo, lk, lv) = trustedvalue
216 216 hooks[name] = (lp, lo, lk, _fromuntrusted)
@@ -226,7 +226,7 b' def _hookitems(ui, _untrusted=False):'
226 226 continue
227 227
228 228 priority = ui.configint(b'hooks', b'priority.%s' % name, 0)
229 hooks[name] = (-priority, len(hooks), name, cmd)
229 hooks[name] = ((-priority,), (len(hooks),), name, cmd)
230 230 return hooks
231 231
232 232
@@ -1456,6 +1456,8 b' class localrepository(object):'
1456 1456
1457 1457 @storecache(b'00changelog.i')
1458 1458 def changelog(self):
1459 # load dirstate before changelog to avoid race see issue6303
1460 self.dirstate.prefetch_parents()
1459 1461 return self.store.changelog(txnutil.mayhavepending(self.root))
1460 1462
1461 1463 @storecache(b'00manifest.i')
@@ -1455,6 +1455,7 b' class manifestfulltextcache(util.lrucach'
1455 1455 if not self._dirty or self._opener is None:
1456 1456 return
1457 1457 # rotate backwards to the first used node
1458 try:
1458 1459 with self._opener(
1459 1460 self._file, b'w', atomictemp=True, checkambig=True
1460 1461 ) as fp:
@@ -1467,6 +1468,16 b' class manifestfulltextcache(util.lrucach'
1467 1468 if node is self._head:
1468 1469 break
1469 1470 node = node.prev
1471 except IOError:
1472 # We could not write the cache (eg: permission error)
1473 # the content can be missing.
1474 #
1475 # We could try harder and see if we could recreate a wcache
1476 # directory were we coudl write too.
1477 #
1478 # XXX the error pass silently, having some way to issue an error
1479 # log `ui.log` would be nice.
1480 pass
1470 1481
1471 1482 def __len__(self):
1472 1483 if not self._read:
@@ -225,7 +225,7 b' def _generic_start_transaction(handler, '
225 225
226 226 def _generic_proxytunnel(self):
227 227 proxyheaders = {
228 x: self.headers[x]
228 pycompat.bytestr(x): pycompat.bytestr(self.headers[x])
229 229 for x in self.headers
230 230 if x.lower().startswith('proxy-')
231 231 }
@@ -16,6 +16,7 b' import os'
16 16 import signal
17 17 import subprocess
18 18 import sys
19 import threading
19 20 import time
20 21
21 22 from ..i18n import _
@@ -604,6 +605,15 b' else:'
604 605 pid = os.fork()
605 606 if pid:
606 607 if not ensurestart:
608 # Even though we're not waiting on the child process,
609 # we still must call waitpid() on it at some point so
610 # it's not a zombie/defunct. This is especially relevant for
611 # chg since the parent process won't die anytime soon.
612 # We use a thread to make the overhead tiny.
613 def _do_wait():
614 os.waitpid(pid, 0)
615
616 threading.Thread(target=_do_wait, daemon=True).start()
607 617 return
608 618 # Parent process
609 619 (_pid, status) = os.waitpid(pid, 0)
@@ -391,7 +391,7 b' def find_pullbundle(repo, proto, opts, c'
391 391 res = exchange.filterclonebundleentries(repo, res)
392 392 if not res:
393 393 return None
394 cl = repo.changelog
394 cl = repo.unfiltered().changelog
395 395 heads_anc = cl.ancestors([cl.rev(rev) for rev in heads], inclusive=True)
396 396 common_anc = cl.ancestors([cl.rev(rev) for rev in common], inclusive=True)
397 397 compformats = clientcompressionsupport(proto)
1 NO CONTENT: file copied from relnotes/next to relnotes/5.4
@@ -1,93 +1,11 b''
1 1 == New Features ==
2 2
3 * `hg purge`/`hg clean` can now delete ignored files instead of
4 untracked files, with the new -i flag.
5
6 * `hg pull` now has a `--confirm` flag to prompt before applying changes.
7 Config option `pull.confirm` is also added for that.
8
9 * `hg log` now defaults to using an '%' symbol for commits involved
10 in unresolved merge conflicts. That includes unresolved conflicts
11 caused by e.g. `hg update --merge` and `hg graft`. '@' still takes
12 precedence, so what used to be marked '@' still is.
13
14 * New `conflictlocal()` and `conflictother()` revsets return the
15 commits that are being merged, when there are conflicts. Also works
16 for conflicts caused by e.g. `hg graft`.
17
18 * `hg copy --forget` can be used to unmark a file as copied.
19
20 * The `format.revlog-compression` configuration entry now accept a list. The
21 first available option will be used. for example setting::
22
23 [format]
24 revlog-compression=zstd, zlib
25
26 Will use `zstd` compression for new repositories is available, and will
27 simply fall back to `zlib` if not.
28
29 * `hg debugmergestate` output is now templated, which may be useful
30 e.g. for IDEs that want to help the user resolve merge conflicts.
31
32 3
33 4 == New Experimental Features ==
34 5
35 * `hg copy` now supports a `--at-rev` argument to mark files as
36 copied in the specified commit. It only works with `--after` for
37 now (i.e., it's only useful for marking files copied using non-hg
38 `cp` as copied).
39
40 * Use `hg copy --forget --at-rev REV` to unmark already committed
41 copies.
42
43 == Bug Fixes ==
44
45 * Fix server exception when concurrent pushes delete the same bookmark
46
47 * Prevent pushes of divergent bookmarks (foo@remote)
48
49 * The push error "remote repository changed while pushing - please
50 try again" now only happens when a concurrent push changed related
51 heads (instead of when a concurrent pushed any revision).
52
53 6
54 7 == Backwards Compatibility Changes ==
55 8
56 * When `hg rebase` pauses for merge conflict resolution, the working
57 copy will no longer have the rebased node as a second parent. You
58 can use the new `conflictparents()` revset for finding the other
59 parent during a conflict.
60
61 * `hg rebase` now accepts repeated `--source` and `--base`
62 arguments. For example, `hg rebase --source 'A + B'` is equivalent
63 to `hg rebase --source A --source B`. This is a
64 backwards-incompatible change because it will break overriding an
65 alias `myrebase = rebase --source A` by `hg myrebase --source B`
66 (it will now rebase `(A + B)::` instead of `B::`).
67
68 * `hg recover` does not verify the validity of the whole repository
69 anymore. You can pass `--verify` or call `hg verify` if necessary.
70
71 * `hg debugmergestate` output format changed. Let us know if that is
72 causing you problems and we'll roll it back.
73
74 * Resolved merge conflicts are now cleared by `hg commit` even if the
75 working copy has no changes.
76
77 9
78 10 == Internal API Changes ==
79 11
80 * The deprecated `ui.progress()` has now been deleted. Please use
81 `ui.makeprogress()` instead.
82
83 * `hg.merge()` now takes a `ctx` instead of the previous `repo` and
84 `node` arguments.
85
86 * `hg.merge()` has lost its `abort` argument. Please call
87 `hg.abortmerge()` directly instead.
88
89 * `hg.merge()` has lost its `mergeforce` argument. It should have
90 only ever been called with the same value as the `force` argument.
91
92 * The `*others` argument of `cmdutil.check_incompatible_arguments()`
93 changed from being varargs argument to being a single collection.
@@ -366,6 +366,10 b' fn re_matcher('
366 366 let pattern_string = unsafe { String::from_utf8_unchecked(escaped_bytes) };
367 367 let re = regex::bytes::RegexBuilder::new(&pattern_string)
368 368 .unicode(false)
369 // Big repos with big `.hgignore` will hit the default limit and
370 // incur a significant performance hit. One repo's `hg status` hit
371 // multiple *minutes*.
372 .dfa_size_limit(50 * (1 << 20))
369 373 .build()
370 374 .map_err(|e| PatternError::UnsupportedSyntax(e.to_string()))?;
371 375
@@ -13,7 +13,7 b' import os'
13 13 # bug link: https://bugs.python.org/issue25270
14 14 supportedpy = ','.join(
15 15 [
16 '>=2.7',
16 '>=2.7.4',
17 17 '!=3.0.*',
18 18 '!=3.1.*',
19 19 '!=3.2.*',
@@ -54,7 +54,7 b' else:'
54 54 # should have a chance of getting a 4.2 release, and when we ratchet
55 55 # the version requirement forward again hopefully everyone will get
56 56 # something that works for them.
57 if sys.version_info < (2, 7, 0, 'final'):
57 if sys.version_info < (2, 7, 4, 'final'):
58 58 pip_message = (
59 59 'This may be due to an out of date pip. '
60 60 'Make sure you have pip >= 9.0.1.'
@@ -74,7 +74,7 b" if sys.version_info < (2, 7, 0, 'final')"
74 74 except Exception:
75 75 pass
76 76 error = """
77 Mercurial does not support Python older than 2.7.
77 Mercurial does not support Python older than 2.7.4.
78 78 Python {py} detected.
79 79 {pip}
80 80 """.format(
@@ -10,7 +10,7 b''
10 10 $ hg up -r 10
11 11 13 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 12 $ hg rm nf10
13 $ hg commit -u debugbuilddag --date 'Thu Jan 01 00:00:12 1970 +0000' -m r12
13 $ hg commit -u debugbuilddag --date 'Thu Jan 01 02:30:12 1970 +0230' -m r12
14 14 created new head
15 15 $ hg up -r 11
16 16 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -20,20 +20,20 b''
20 20 $ hg commit -m debugbuilddag --date 'Thu Jan 01 00:00:13 1970 +0000'
21 21
22 22 $ hg log -G
23 @ changeset: 13:e5c379648af4
23 @ changeset: 13:5544befcb7ce
24 24 |\ branch: both
25 25 | | tag: tip
26 26 | | parent: 11:2cbd52c10e88
27 | | parent: 12:4f31c9604af6
27 | | parent: 12:66d0c21243be
28 28 | | user: test
29 29 | | date: Thu Jan 01 00:00:13 1970 +0000
30 30 | | summary: debugbuilddag
31 31 | |
32 | o changeset: 12:4f31c9604af6
32 | o changeset: 12:66d0c21243be
33 33 | | branch: both
34 34 | | parent: 10:9220596cb068
35 35 | | user: debugbuilddag
36 | | date: Thu Jan 01 00:00:12 1970 +0000
36 | | date: Thu Jan 01 02:30:12 1970 +0230
37 37 | | summary: r12
38 38 | |
39 39 o | changeset: 11:2cbd52c10e88
@@ -150,7 +150,7 b''
150 150
151 151 commit refs/heads/default
152 152 mark :3
153 committer "debugbuilddag" <debugbuilddag> 0 -0000
153 committer "debugbuilddag" <debugbuilddag> 0 +0000
154 154 data 2
155 155 r0
156 156 M 644 :1 mf
@@ -197,7 +197,7 b''
197 197
198 198 commit refs/heads/default
199 199 mark :7
200 committer "debugbuilddag" <debugbuilddag> 1 -0000
200 committer "debugbuilddag" <debugbuilddag> 1 +0000
201 201 data 2
202 202 r1
203 203 from :3
@@ -245,7 +245,7 b''
245 245
246 246 commit refs/heads/name1
247 247 mark :11
248 committer "debugbuilddag" <debugbuilddag> 2 -0000
248 committer "debugbuilddag" <debugbuilddag> 2 +0000
249 249 data 2
250 250 r2
251 251 from :7
@@ -293,7 +293,7 b''
293 293
294 294 commit refs/heads/name1
295 295 mark :15
296 committer "debugbuilddag" <debugbuilddag> 3 -0000
296 committer "debugbuilddag" <debugbuilddag> 3 +0000
297 297 data 2
298 298 r3
299 299 from :11
@@ -341,7 +341,7 b''
341 341
342 342 commit refs/heads/name1
343 343 mark :19
344 committer "debugbuilddag" <debugbuilddag> 4 -0000
344 committer "debugbuilddag" <debugbuilddag> 4 +0000
345 345 data 2
346 346 r4
347 347 from :15
@@ -389,7 +389,7 b''
389 389
390 390 commit refs/heads/name2
391 391 mark :23
392 committer "debugbuilddag" <debugbuilddag> 5 -0000
392 committer "debugbuilddag" <debugbuilddag> 5 +0000
393 393 data 2
394 394 r5
395 395 from :7
@@ -437,7 +437,7 b''
437 437
438 438 commit refs/heads/name2
439 439 mark :27
440 committer "debugbuilddag" <debugbuilddag> 6 -0000
440 committer "debugbuilddag" <debugbuilddag> 6 +0000
441 441 data 2
442 442 r6
443 443 from :23
@@ -485,7 +485,7 b''
485 485
486 486 commit refs/heads/name2
487 487 mark :31
488 committer "debugbuilddag" <debugbuilddag> 7 -0000
488 committer "debugbuilddag" <debugbuilddag> 7 +0000
489 489 data 2
490 490 r7
491 491 from :27
@@ -533,7 +533,7 b''
533 533
534 534 commit refs/heads/name2
535 535 mark :35
536 committer "debugbuilddag" <debugbuilddag> 8 -0000
536 committer "debugbuilddag" <debugbuilddag> 8 +0000
537 537 data 2
538 538 r8
539 539 from :31
@@ -581,7 +581,7 b''
581 581
582 582 commit refs/heads/both
583 583 mark :39
584 committer "debugbuilddag" <debugbuilddag> 9 -0000
584 committer "debugbuilddag" <debugbuilddag> 9 +0000
585 585 data 2
586 586 r9
587 587 from :35
@@ -633,7 +633,7 b''
633 633
634 634 commit refs/heads/both
635 635 mark :43
636 committer "debugbuilddag" <debugbuilddag> 10 -0000
636 committer "debugbuilddag" <debugbuilddag> 10 +0000
637 637 data 3
638 638 r10
639 639 from :39
@@ -681,7 +681,7 b''
681 681
682 682 commit refs/heads/both
683 683 mark :47
684 committer "debugbuilddag" <debugbuilddag> 11 -0000
684 committer "debugbuilddag" <debugbuilddag> 11 +0000
685 685 data 3
686 686 r11
687 687 from :43
@@ -691,7 +691,7 b''
691 691
692 692 commit refs/heads/both
693 693 mark :48
694 committer "debugbuilddag" <debugbuilddag> 12 -0000
694 committer "debugbuilddag" <debugbuilddag> 12 +0230
695 695 data 3
696 696 r12
697 697 from :43
@@ -699,7 +699,7 b''
699 699
700 700 commit refs/heads/both
701 701 mark :49
702 committer "test" <test> 13 -0000
702 committer "test" <test> 13 +0000
703 703 data 13
704 704 debugbuilddag
705 705 from :47
@@ -754,8 +754,8 b''
754 754 33fbc651630ffa7ccbebfe4eb91320a873e7291c
755 755 868d828870663d075cdcff502d26cf8445ce068e
756 756 2cbd52c10e88ce604402dc83a869ec4f07765b3d
757 4f31c9604af676986343d775b05695f535e8db5e
758 e5c379648af4c9fa3b5546ab7ee6e61a36082830
757 66d0c21243be072f82ced64aa730ab0367252451
758 5544befcb7ce4a558ed9e19909e16af574a2a3c6
759 759
760 760 $ hg fastexport --export-marks fastexport.marks2 -r 0
761 761 blob
@@ -793,7 +793,7 b''
793 793
794 794 commit refs/heads/default
795 795 mark :3
796 committer "debugbuilddag" <debugbuilddag> 0 -0000
796 committer "debugbuilddag" <debugbuilddag> 0 +0000
797 797 data 2
798 798 r0
799 799 M 644 :1 mf
@@ -845,7 +845,7 b''
845 845
846 846 commit refs/heads/default
847 847 mark :7
848 committer "debugbuilddag" <debugbuilddag> 1 -0000
848 committer "debugbuilddag" <debugbuilddag> 1 +0000
849 849 data 2
850 850 r1
851 851 from :3
@@ -861,5 +861,5 b''
861 861 data 4
862 862 foo
863 863
864 abort: Unable to parse user into person and email for revision 4f71ca786403919cd16669d94ff7cd1c09437a44
864 abort: Unable to parse user into person and email for revision 65a3f69b9b519de73d755472c1ab05990ab8a7f7
865 865 [255]
@@ -36,6 +36,8 b' Test pullbundle functionality'
36 36 $ cat <<EOF > .hg/hgrc
37 37 > [server]
38 38 > pullbundle = True
39 > [experimental]
40 > evolution = True
39 41 > [extensions]
40 42 > blackbox =
41 43 > EOF
@@ -185,3 +187,24 b' Test recovery from misconfigured server '
185 187 * sending pullbundle "0.hg" (glob)
186 188 * sending pullbundle "0.hg" (glob)
187 189 $ rm repo/.hg/blackbox.log
190
191 Test processing when nodes used in the pullbundle.manifest end up being hidden
192
193 $ hg --repo repo debugobsolete ed1b79f46b9a29f5a6efa59cf12fcfca43bead5a
194 1 new obsolescence markers
195 obsoleted 1 changesets
196 $ hg serve --repo repo --config server.view=visible -p $HGPORT -d --pid-file=hg.pid -E errors.log
197 $ cat hg.pid >> $DAEMON_PIDS
198 $ hg clone http://localhost:$HGPORT repo-obs
199 requesting all changes
200 adding changesets
201 adding manifests
202 adding file changes
203 adding changesets
204 adding manifests
205 adding file changes
206 added 2 changesets with 2 changes to 2 files
207 new changesets bbd179dfa0a7:effea6de0384
208 updating to branch default
209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 $ killdaemons.py
@@ -233,6 +233,7 b' List of files accessed over HTTP:'
233 233 /.hg/cache/hgtagsfnodes1
234 234 /.hg/cache/rbc-names-v1
235 235 /.hg/cache/rbc-revs-v1
236 /.hg/dirstate
236 237 /.hg/requires
237 238 /.hg/store/00changelog.i
238 239 /.hg/store/00manifest.i
@@ -250,6 +251,7 b' List of files accessed over HTTP:'
250 251 /remote-with-names/.hg/cache/rbc-names-v1
251 252 /remote-with-names/.hg/cache/rbc-revs-v1
252 253 /remote-with-names/.hg/cache/tags2-served
254 /remote-with-names/.hg/dirstate
253 255 /remote-with-names/.hg/localtags
254 256 /remote-with-names/.hg/requires
255 257 /remote-with-names/.hg/store/00changelog.i
@@ -266,6 +268,7 b' List of files accessed over HTTP:'
266 268 /remote/.hg/cache/rbc-names-v1
267 269 /remote/.hg/cache/rbc-revs-v1
268 270 /remote/.hg/cache/tags2-served
271 /remote/.hg/dirstate
269 272 /remote/.hg/localtags
270 273 /remote/.hg/requires
271 274 /remote/.hg/store/00changelog.i
@@ -278,6 +281,7 b' List of files accessed over HTTP:'
278 281 /remote/.hg/store/data/~2ehgtags.i (py37 !)
279 282 /remotempty/.hg/bookmarks
280 283 /remotempty/.hg/bookmarks.current
284 /remotempty/.hg/dirstate
281 285 /remotempty/.hg/requires
282 286 /remotempty/.hg/store/00changelog.i
283 287 /remotempty/.hg/store/00manifest.i
@@ -286,6 +290,7 b' List of files accessed over HTTP:'
286 290 /sub/.hg/cache/hgtagsfnodes1
287 291 /sub/.hg/cache/rbc-names-v1
288 292 /sub/.hg/cache/rbc-revs-v1
293 /sub/.hg/dirstate
289 294 /sub/.hg/requires
290 295 /sub/.hg/store/00changelog.i
291 296 /sub/.hg/store/00manifest.i
@@ -1,4 +1,4 b''
1 #!/bin/bash
1 #!/bin/sh
2 2 #
3 3 # wait up to TIMEOUT seconds until a WAIT_ON_FILE is created.
4 4 #
@@ -11,9 +11,12 b' fi'
11 11
12 12 timer="$1"
13 13
14 # if the test timeout have been extended, explicitly extend the provided timer
14 # Scale the timeout to match the sleep steps below, i.e. 1/0.02.
15 timer=$(( 50 * $timer ))
16 # If the test timeout have been extended, also scale the timer relative
17 # to the normal timing.
15 18 if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then
16 timer=$(( ( 100 * $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
19 timer=$(( ( $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
17 20 fi
18 21
19 22 wait_on="$2"
@@ -22,15 +25,13 b' if [ $# -eq 3 ]; then'
22 25 create="$3"
23 26 fi
24 27
25 if [ -n "$create" ];
26 then
28 if [ -n "$create" ]; then
27 29 touch "$create"
28 30 create=""
29 31 fi
30 while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ];
31 do
32 while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ]; do
32 33 timer=$(( $timer - 1))
33 sleep 0.01
34 sleep 0.02
34 35 done
35 36 if [ "$timer" -le 0 ]; then
36 37 echo "file not created after $1 seconds: $wait_on" >&2
General Comments 0
You need to be logged in to leave comments. Login now