mercurial/obsolete.py
changeset 47012 d55b71393907
parent 46780 6266d19556ad
child 47020 ba6881c6a178
equal deleted inserted replaced
46992:5fa019ceb499 47012:d55b71393907
    71 
    71 
    72 import errno
    72 import errno
    73 import struct
    73 import struct
    74 
    74 
    75 from .i18n import _
    75 from .i18n import _
       
    76 from .node import (
       
    77     bin,
       
    78     hex,
       
    79 )
    76 from .pycompat import getattr
    80 from .pycompat import getattr
    77 from .node import (
    81 from .node import (
    78     bin,
    82     bin,
    79     hex,
    83     hex,
    80     nullid,
       
    81 )
    84 )
    82 from . import (
    85 from . import (
    83     encoding,
    86     encoding,
    84     error,
    87     error,
    85     obsutil,
    88     obsutil,
   524         if parents is not None:
   527         if parents is not None:
   525             for p in parents:
   528             for p in parents:
   526                 children.setdefault(p, set()).add(mark)
   529                 children.setdefault(p, set()).add(mark)
   527 
   530 
   528 
   531 
   529 def _checkinvalidmarkers(markers):
   532 def _checkinvalidmarkers(repo, markers):
   530     """search for marker with invalid data and raise error if needed
   533     """search for marker with invalid data and raise error if needed
   531 
   534 
   532     Exist as a separated function to allow the evolve extension for a more
   535     Exist as a separated function to allow the evolve extension for a more
   533     subtle handling.
   536     subtle handling.
   534     """
   537     """
   535     for mark in markers:
   538     for mark in markers:
   536         if nullid in mark[1]:
   539         if repo.nullid in mark[1]:
   537             raise error.Abort(
   540             raise error.Abort(
   538                 _(
   541                 _(
   539                     b'bad obsolescence marker detected: '
   542                     b'bad obsolescence marker detected: '
   540                     b'invalid successors nullid'
   543                     b'invalid successors nullid'
   541                 )
   544                 )
   725         data = self._data
   728         data = self._data
   726         if not data:
   729         if not data:
   727             return []
   730             return []
   728         self._version, markers = _readmarkers(data)
   731         self._version, markers = _readmarkers(data)
   729         markers = list(markers)
   732         markers = list(markers)
   730         _checkinvalidmarkers(markers)
   733         _checkinvalidmarkers(self.repo, markers)
   731         return markers
   734         return markers
   732 
   735 
   733     @propertycache
   736     @propertycache
   734     def successors(self):
   737     def successors(self):
   735         successors = {}
   738         successors = {}
   759             _addsuccessors(self.successors, markers)
   762             _addsuccessors(self.successors, markers)
   760         if self._cached('predecessors'):
   763         if self._cached('predecessors'):
   761             _addpredecessors(self.predecessors, markers)
   764             _addpredecessors(self.predecessors, markers)
   762         if self._cached('children'):
   765         if self._cached('children'):
   763             _addchildren(self.children, markers)
   766             _addchildren(self.children, markers)
   764         _checkinvalidmarkers(markers)
   767         _checkinvalidmarkers(self.repo, markers)
   765 
   768 
   766     def relevantmarkers(self, nodes):
   769     def relevantmarkers(self, nodes):
   767         """return a set of all obsolescence markers relevant to a set of nodes.
   770         """return a set of all obsolescence markers relevant to a set of nodes.
   768 
   771 
   769         "relevant" to a set of nodes mean:
   772         "relevant" to a set of nodes mean: