equal
deleted
inserted
replaced
190 else: |
190 else: |
191 with self.repo.vfs("rebasestate", "w") as f: |
191 with self.repo.vfs("rebasestate", "w") as f: |
192 self._writestatus(f) |
192 self._writestatus(f) |
193 |
193 |
194 def _writestatus(self, f): |
194 def _writestatus(self, f): |
195 repo = self.repo.unfiltered() |
195 repo = self.repo |
|
196 assert repo.filtername is None |
196 f.write(repo[self.originalwd].hex() + '\n') |
197 f.write(repo[self.originalwd].hex() + '\n') |
197 # was "dest". we now write dest per src root below. |
198 # was "dest". we now write dest per src root below. |
198 f.write('\n') |
199 f.write('\n') |
199 f.write(repo[self.external].hex() + '\n') |
200 f.write(repo[self.external].hex() + '\n') |
200 f.write('%d\n' % int(self.collapsef)) |
201 f.write('%d\n' % int(self.collapsef)) |
213 repo.ui.debug('rebase status stored\n') |
214 repo.ui.debug('rebase status stored\n') |
214 |
215 |
215 def restorestatus(self): |
216 def restorestatus(self): |
216 """Restore a previously stored status""" |
217 """Restore a previously stored status""" |
217 self.prepared = True |
218 self.prepared = True |
218 repo = self.repo.unfiltered() |
219 repo = self.repo |
|
220 assert repo.filtername is None |
219 keepbranches = None |
221 keepbranches = None |
220 legacydest = None |
222 legacydest = None |
221 collapse = False |
223 collapse = False |
222 external = nullrev |
224 external = nullrev |
223 activebookmark = None |
225 activebookmark = None |
1065 "divergences from: %s") |
1067 "divergences from: %s") |
1066 h = _("to force the rebase please set " |
1068 h = _("to force the rebase please set " |
1067 "experimental.allowdivergence=True") |
1069 "experimental.allowdivergence=True") |
1068 raise error.Abort(msg % (",".join(divhashes),), hint=h) |
1070 raise error.Abort(msg % (",".join(divhashes),), hint=h) |
1069 |
1071 |
1070 def successorrevs(repo, rev): |
1072 def successorrevs(unfi, rev): |
1071 """yield revision numbers for successors of rev""" |
1073 """yield revision numbers for successors of rev""" |
1072 unfi = repo.unfiltered() |
1074 assert unfi.filtername is None |
1073 nodemap = unfi.changelog.nodemap |
1075 nodemap = unfi.changelog.nodemap |
1074 for s in obsutil.allsuccessors(unfi.obsstore, [unfi[rev].node()]): |
1076 for s in obsutil.allsuccessors(unfi.obsstore, [unfi[rev].node()]): |
1075 if s in nodemap: |
1077 if s in nodemap: |
1076 yield nodemap[s] |
1078 yield nodemap[s] |
1077 |
1079 |
1089 |
1091 |
1090 The new parents of a merge is slightly more complicated. See the comment |
1092 The new parents of a merge is slightly more complicated. See the comment |
1091 block below. |
1093 block below. |
1092 """ |
1094 """ |
1093 # use unfiltered changelog since successorrevs may return filtered nodes |
1095 # use unfiltered changelog since successorrevs may return filtered nodes |
1094 cl = repo.unfiltered().changelog |
1096 assert repo.filtername is None |
|
1097 cl = repo.changelog |
1095 def isancestor(a, b): |
1098 def isancestor(a, b): |
1096 # take revision numbers instead of nodes |
1099 # take revision numbers instead of nodes |
1097 if a == b: |
1100 if a == b: |
1098 return True |
1101 return True |
1099 elif a > b: |
1102 elif a > b: |
1605 rebased that have a successors in the destination |
1608 rebased that have a successors in the destination |
1606 |
1609 |
1607 obsolete => None entries in the mapping indicate nodes with no successor""" |
1610 obsolete => None entries in the mapping indicate nodes with no successor""" |
1608 obsoletenotrebased = {} |
1611 obsoletenotrebased = {} |
1609 |
1612 |
1610 cl = repo.unfiltered().changelog |
1613 assert repo.filtername is None |
|
1614 cl = repo.changelog |
1611 nodemap = cl.nodemap |
1615 nodemap = cl.nodemap |
1612 for srcrev in rebaseobsrevs: |
1616 for srcrev in rebaseobsrevs: |
1613 srcnode = cl.node(srcrev) |
1617 srcnode = cl.node(srcrev) |
1614 destnode = cl.node(destmap[srcrev]) |
1618 destnode = cl.node(destmap[srcrev]) |
1615 # XXX: more advanced APIs are required to handle split correctly |
1619 # XXX: more advanced APIs are required to handle split correctly |