Skip to content
Snippets Groups Projects
Commit e5adb693 authored by Pierre-Yves David's avatar Pierre-Yves David
Browse files

obsstore: keep track of children information

We use the new `parents` field to build a dictionary of markers that touch
children of a node. This will be used to link prune markers to a set of
exchanged nodes.
parent 03cc81a2
No related merge requests found
...@@ -265,6 +265,7 @@ ...@@ -265,6 +265,7 @@
Markers can be accessed with two mappings: Markers can be accessed with two mappings:
- precursors[x] -> set(markers on precursors edges of x) - precursors[x] -> set(markers on precursors edges of x)
- successors[x] -> set(markers on successors edges of x) - successors[x] -> set(markers on successors edges of x)
- children[x] -> set(markers on precursors edges of children(x)
""" """
fields = ('prec', 'succs', 'flag', 'meta', 'date', 'parents') fields = ('prec', 'succs', 'flag', 'meta', 'date', 'parents')
...@@ -282,6 +283,7 @@ ...@@ -282,6 +283,7 @@
self._all = [] self._all = []
self.precursors = {} self.precursors = {}
self.successors = {} self.successors = {}
self.children = {}
self.sopener = sopener self.sopener = sopener
data = sopener.tryread('obsstore') data = sopener.tryread('obsstore')
if data: if data:
...@@ -376,6 +378,10 @@ ...@@ -376,6 +378,10 @@
self.successors.setdefault(pre, set()).add(mark) self.successors.setdefault(pre, set()).add(mark)
for suc in sucs: for suc in sucs:
self.precursors.setdefault(suc, set()).add(mark) self.precursors.setdefault(suc, set()).add(mark)
parents = mark[5]
if parents is not None:
for p in parents:
self.children.setdefault(p, set()).add(mark)
if node.nullid in self.precursors: if node.nullid in self.precursors:
raise util.Abort(_('bad obsolescence marker detected: ' raise util.Abort(_('bad obsolescence marker detected: '
'invalid successors nullid')) 'invalid successors nullid'))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment