equal
deleted
inserted
replaced
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: |