Show More
@@ -57,7 +57,7 b' def pygmentize(field, fctx, style, tmpl,' | |||||
57 | return |
|
57 | return | |
58 |
|
58 | |||
59 | # str.splitlines() != unicode.splitlines() because "reasons" |
|
59 | # str.splitlines() != unicode.splitlines() because "reasons" | |
60 | for c in b"\x0c\x1c\x1d\x1e": |
|
60 | for c in b"\x0c", b"\x1c", b"\x1d", b"\x1e": | |
61 | if c in text: |
|
61 | if c in text: | |
62 | text = text.replace(c, b'') |
|
62 | text = text.replace(c, b'') | |
63 |
|
63 |
@@ -28,6 +28,7 b' from . import (' | |||||
28 | logexchange, |
|
28 | logexchange, | |
29 | narrowspec, |
|
29 | narrowspec, | |
30 | obsolete, |
|
30 | obsolete, | |
|
31 | obsutil, | |||
31 | phases, |
|
32 | phases, | |
32 | pushkey, |
|
33 | pushkey, | |
33 | pycompat, |
|
34 | pycompat, | |
@@ -99,11 +100,6 b' class bundlespec(object):' | |||||
99 | contentopts = attr.ib() |
|
100 | contentopts = attr.ib() | |
100 |
|
101 | |||
101 |
|
102 | |||
102 | def _sortedmarkers(markers): |
|
|||
103 | # last item of marker tuple ('parents') may be None or a tuple |
|
|||
104 | return sorted(markers, key=lambda m: m[:-1] + (m[-1] or (),)) |
|
|||
105 |
|
||||
106 |
|
||||
107 | def parsebundlespec(repo, spec, strict=True): |
|
103 | def parsebundlespec(repo, spec, strict=True): | |
108 | """Parse a bundle string specification into parts. |
|
104 | """Parse a bundle string specification into parts. | |
109 |
|
105 | |||
@@ -1140,7 +1136,7 b' def _pushb2obsmarkers(pushop, bundler):' | |||||
1140 | return |
|
1136 | return | |
1141 | pushop.stepsdone.add(b'obsmarkers') |
|
1137 | pushop.stepsdone.add(b'obsmarkers') | |
1142 | if pushop.outobsmarkers: |
|
1138 | if pushop.outobsmarkers: | |
1143 |
markers = |
|
1139 | markers = obsutil.sortedmarkers(pushop.outobsmarkers) | |
1144 | bundle2.buildobsmarkerspart(bundler, markers) |
|
1140 | bundle2.buildobsmarkerspart(bundler, markers) | |
1145 |
|
1141 | |||
1146 |
|
1142 | |||
@@ -1475,7 +1471,7 b' def _pushobsolete(pushop):' | |||||
1475 | if pushop.outobsmarkers: |
|
1471 | if pushop.outobsmarkers: | |
1476 | pushop.ui.debug(b'try to push obsolete markers to remote\n') |
|
1472 | pushop.ui.debug(b'try to push obsolete markers to remote\n') | |
1477 | rslts = [] |
|
1473 | rslts = [] | |
1478 |
markers = |
|
1474 | markers = obsutil.sortedmarkers(pushop.outobsmarkers) | |
1479 | remotedata = obsolete._pushkeyescape(markers) |
|
1475 | remotedata = obsolete._pushkeyescape(markers) | |
1480 | for key in sorted(remotedata, reverse=True): |
|
1476 | for key in sorted(remotedata, reverse=True): | |
1481 | # reverse sort to ensure we end with dump0 |
|
1477 | # reverse sort to ensure we end with dump0 | |
@@ -2573,7 +2569,7 b' def _getbundleobsmarkerpart(' | |||||
2573 | heads = repo.heads() |
|
2569 | heads = repo.heads() | |
2574 | subset = [c.node() for c in repo.set(b'::%ln', heads)] |
|
2570 | subset = [c.node() for c in repo.set(b'::%ln', heads)] | |
2575 | markers = repo.obsstore.relevantmarkers(subset) |
|
2571 | markers = repo.obsstore.relevantmarkers(subset) | |
2576 |
markers = |
|
2572 | markers = obsutil.sortedmarkers(markers) | |
2577 | bundle2.buildobsmarkerspart(bundler, markers) |
|
2573 | bundle2.buildobsmarkerspart(bundler, markers) | |
2578 |
|
2574 | |||
2579 |
|
2575 |
@@ -1568,7 +1568,7 b' class localrepository(object):' | |||||
1568 | else: |
|
1568 | else: | |
1569 | raise error.ProgrammingError( |
|
1569 | raise error.ProgrammingError( | |
1570 | b"unsupported changeid '%s' of type %s" |
|
1570 | b"unsupported changeid '%s' of type %s" | |
1571 | % (changeid, type(changeid)) |
|
1571 | % (changeid, pycompat.sysstr(type(changeid))) | |
1572 | ) |
|
1572 | ) | |
1573 |
|
1573 | |||
1574 | return context.changectx(self, rev, node) |
|
1574 | return context.changectx(self, rev, node) |
@@ -112,6 +112,11 b' def getmarkers(repo, nodes=None, exclusi' | |||||
112 | yield marker(repo, markerdata) |
|
112 | yield marker(repo, markerdata) | |
113 |
|
113 | |||
114 |
|
114 | |||
|
115 | def sortedmarkers(markers): | |||
|
116 | # last item of marker tuple ('parents') may be None or a tuple | |||
|
117 | return sorted(markers, key=lambda m: m[:-1] + (m[-1] or (),)) | |||
|
118 | ||||
|
119 | ||||
115 | def closestpredecessors(repo, nodeid): |
|
120 | def closestpredecessors(repo, nodeid): | |
116 | """yield the list of next predecessors pointing on visible changectx nodes |
|
121 | """yield the list of next predecessors pointing on visible changectx nodes | |
117 |
|
122 | |||
@@ -675,7 +680,7 b' def successorssets(repo, initialnode, cl' | |||||
675 | # Having none means pruned node, multiple successors means split, |
|
680 | # Having none means pruned node, multiple successors means split, | |
676 | # single successors are standard replacement. |
|
681 | # single successors are standard replacement. | |
677 | # |
|
682 | # | |
678 | for mark in sorted(succmarkers[current]): |
|
683 | for mark in sortedmarkers(succmarkers[current]): | |
679 | for suc in mark[1]: |
|
684 | for suc in mark[1]: | |
680 | if suc not in cache: |
|
685 | if suc not in cache: | |
681 | if suc in stackedset: |
|
686 | if suc in stackedset: | |
@@ -712,7 +717,7 b' def successorssets(repo, initialnode, cl' | |||||
712 | # duplicated entry and successors set that are strict subset of |
|
717 | # duplicated entry and successors set that are strict subset of | |
713 | # another one. |
|
718 | # another one. | |
714 | succssets = [] |
|
719 | succssets = [] | |
715 | for mark in sorted(succmarkers[current]): |
|
720 | for mark in sortedmarkers(succmarkers[current]): | |
716 | # successors sets contributed by this marker |
|
721 | # successors sets contributed by this marker | |
717 | base = _succs() |
|
722 | base = _succs() | |
718 | base.markers.add(mark) |
|
723 | base.markers.add(mark) |
1 | NO CONTENT: file copied from relnotes/next to relnotes/5.2 |
|
NO CONTENT: file copied from relnotes/next to relnotes/5.2 |
@@ -1,12 +1,5 b'' | |||||
1 | == New Features == |
|
1 | == New Features == | |
2 |
|
2 | |||
3 | * The amend extension supports the `--currentuser` argument. |
|
|||
4 |
|
||||
5 | * The amend extension supports the `--close-branch` argument. |
|
|||
6 |
|
||||
7 | * The amend extension supports the `--secret` argument. |
|
|||
8 |
|
||||
9 | * The uncommit extension supports the `rewrite.update-timestamp` config option. |
|
|||
10 |
|
3 | |||
11 | == New Experimental Features == |
|
4 | == New Experimental Features == | |
12 |
|
5 | |||
@@ -16,15 +9,6 b'' | |||||
16 |
|
9 | |||
17 | == Backwards Compatibility Changes == |
|
10 | == Backwards Compatibility Changes == | |
18 |
|
11 | |||
19 | * A shell that supports `$(command)`` syntax for command substitution is now |
|
|||
20 | required for running the test suite. The test runner normally uses |
|
|||
21 | `sh`, so if that is a shell that doesn't support `$(command)` syntax, |
|
|||
22 | you can override it by setting `$HGTEST_SHELL` or by passing it to |
|
|||
23 | `run-tests.py --shell <shell>`. |
|
|||
24 |
|
||||
25 | * The (experimental) narrow extension's wire protocol changed. If |
|
|||
26 | you're using it, you'll need to make sure to upgrade server and |
|
|||
27 | client at the same time. |
|
|||
28 |
|
12 | |||
29 | == Internal API Changes == |
|
13 | == Internal API Changes == | |
30 |
|
14 |
General Comments 0
You need to be logged in to leave comments.
Login now