Show More
@@ -160,7 +160,10 b' shopt -s extglob' | |||
|
160 | 160 | if [[ -n "$aliashg" ]]; then |
|
161 | 161 | aliashg=${aliashg#"alias $hg='"} |
|
162 | 162 | aliashg=${aliashg%"'"} |
|
163 | hg=$aliashg | |
|
163 | # `source`d aliases break completion, so ignore them | |
|
164 | if [[ "${aliashg:0:7}" != "source " ]]; then | |
|
165 | hg=$aliashg | |
|
166 | fi | |
|
164 | 167 | fi |
|
165 | 168 | |
|
166 | 169 | COMPREPLY=() |
@@ -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, |
|
|
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. |
|
|
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, ( |
|
|
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,18 +1455,29 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 | with self._opener( | |
|
1459 | self._file, b'w', atomictemp=True, checkambig=True | |
|
1460 | ) as fp: | |
|
1461 | node = self._head.prev | |
|
1462 | while True: | |
|
1463 | if node.key in self._cache: | |
|
1464 |
|
|
|
1465 |
fp.write( |
|
|
1466 | fp.write(node.value) | |
|
1467 | if node is self._head: | |
|
1468 |
|
|
|
1469 |
|
|
|
1458 | try: | |
|
1459 | with self._opener( | |
|
1460 | self._file, b'w', atomictemp=True, checkambig=True | |
|
1461 | ) as fp: | |
|
1462 | node = self._head.prev | |
|
1463 | while True: | |
|
1464 | if node.key in self._cache: | |
|
1465 | fp.write(node.key) | |
|
1466 | fp.write(struct.pack(b'>L', len(node.value))) | |
|
1467 | fp.write(node.value) | |
|
1468 | if node is self._head: | |
|
1469 | break | |
|
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, |
|
|
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 0 |
|
|
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: |
|
|
23 | @ changeset: 13:5544befcb7ce | |
|
24 | 24 | |\ branch: both |
|
25 | 25 | | | tag: tip |
|
26 | 26 | | | parent: 11:2cbd52c10e88 |
|
27 |
| | parent: 12: |
|
|
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: |
|
|
32 | | o changeset: 12:66d0c21243be | |
|
33 | 33 | | | branch: both |
|
34 | 34 | | | parent: 10:9220596cb068 |
|
35 | 35 | | | user: debugbuilddag |
|
36 |
| | date: Thu Jan 01 0 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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/ |
|
|
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=$(( ( |
|
|
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.0 |
|
|
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