Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
mercurial
evolve
Commits
0dc4c16506fc
Commit
0dc4c165
authored
Apr 24, 2020
by
Anton Shestakov
Browse files
obshistory: add predecessorsandmarkers()
parent
a81631766575
Pipeline
#5567
passed with stage
in 5 minutes and 18 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
hgext3rd/evolve/obshistory.py
View file @
0dc4c165
...
...
@@ -160,6 +160,34 @@
groupmarkers
.
update
(
markers
)
yield
(
tuple
(
sorted
(
groupnodes
)),
tuple
(
sorted
(
groupmarkers
)))
def
predecessorsandmarkers
(
repo
,
node
):
""" Compute data needed for obsorigin.
Return a generator of (nodes, markers) tuples, where nodes is a tuple of
predecessor nodes and markers is a tuple of obsolescence markers.
Using tuples for everything means no problems with sorted().
"""
predecessors
=
repo
.
obsstore
.
predecessors
stack
=
[(
node
,
())]
seen
=
{
node
}
while
stack
:
node
,
path
=
stack
.
pop
()
for
marker
in
sorted
(
predecessors
.
get
(
node
,
())):
prednode
=
marker
[
0
]
# Basic cycle protection
if
prednode
in
seen
:
continue
seen
.
add
(
prednode
)
if
prednode
in
repo
:
yield
((
prednode
,),
path
+
(
marker
,))
else
:
stack
.
append
((
prednode
,
path
+
(
marker
,)))
def
_nodesandmarkers
(
repo
,
ctx
,
filternonlocal
):
if
filternonlocal
:
r
=
obsutil
.
successorsandmarkers
(
repo
,
ctx
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment