Show More
@@ -89,9 +89,11 b' class MercurialChangeset(BaseChangeset):' | |||||
89 | @LazyProperty |
|
89 | @LazyProperty | |
90 | def successors(self): |
|
90 | def successors(self): | |
91 | try: |
|
91 | try: | |
|
92 | # This works starting from Mercurial 4.3: the function `successorssets` was moved to the mercurial.obsutil module and gained the `closest` parameter. | |||
92 | from mercurial import obsutil |
|
93 | from mercurial import obsutil | |
93 | successors = obsutil.successorssets(self._ctx._repo, self._ctx.node()) |
|
94 | successors = obsutil.successorssets(self._ctx._repo, self._ctx.node(), closest=True) | |
94 | except ImportError: # moved in Mercurial 4.3 (4f49810a1011) |
|
95 | except ImportError: | |
|
96 | # fallback for older versions | |||
95 | successors = obsolete.successorssets(self._ctx._repo, self._ctx.node()) |
|
97 | successors = obsolete.successorssets(self._ctx._repo, self._ctx.node()) | |
96 | if successors: |
|
98 | if successors: | |
97 | # flatten the list here handles both divergent (len > 1) |
|
99 | # flatten the list here handles both divergent (len > 1) | |
@@ -102,17 +104,19 b' class MercurialChangeset(BaseChangeset):' | |||||
102 |
|
104 | |||
103 | @LazyProperty |
|
105 | @LazyProperty | |
104 | def predecessors(self): |
|
106 | def predecessors(self): | |
105 | predecessors = set() |
|
|||
106 | nm = self._ctx._repo.changelog.nodemap |
|
|||
107 | try: |
|
107 | try: | |
108 | raw_predecessors = self._ctx._repo.obsstore.predecessors |
|
108 | # This works starting from Mercurial 4.3: the function `closestpredecessors` was added. | |
109 | except AttributeError: # renamed in Mercurial 4.4 (d5acd967f95a) |
|
109 | from mercurial import obsutil | |
110 | raw_predecessors = self._ctx._repo.obsstore.precursors |
|
110 | return [hex(n)[:12] for n in obsutil.closestpredecessors(self._ctx._repo, self._ctx.node())] | |
111 | for p in raw_predecessors.get(self._ctx.node(), ()): |
|
111 | except ImportError: | |
112 | pr = nm.get(p[0]) |
|
112 | # fallback for older versions | |
113 | if pr is not None: |
|
113 | predecessors = set() | |
114 | predecessors.add(hex(p[0])[:12]) |
|
114 | nm = self._ctx._repo.changelog.nodemap | |
115 | return predecessors |
|
115 | for p in self._ctx._repo.obsstore.precursors.get(self._ctx.node(), ()): | |
|
116 | pr = nm.get(p[0]) | |||
|
117 | if pr is not None: | |||
|
118 | predecessors.add(hex(p[0])[:12]) | |||
|
119 | return predecessors | |||
116 |
|
120 | |||
117 | @LazyProperty |
|
121 | @LazyProperty | |
118 | def bookmarks(self): |
|
122 | def bookmarks(self): |
@@ -591,4 +591,4 b' class TestMercurialChangeset(object):' | |||||
591 |
|
591 | |||
592 | def test_predecessors(self): |
|
592 | def test_predecessors(self): | |
593 | init_chset = self.repo.get_changeset(0) |
|
593 | init_chset = self.repo.get_changeset(0) | |
594 |
assert init_chset.predecessors == |
|
594 | assert len(init_chset.predecessors) == 0 |
General Comments 0
You need to be logged in to leave comments.
Login now