hgext/rebase.py
changeset 34095 7471193be725
parent 34094 5d45a997d11d
child 34290 4f969b9e0cf5
equal deleted inserted replaced
34094:5d45a997d11d 34095:7471193be725
   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