Skip to content
Snippets Groups Projects

more in-depth refactoring for obslog --origins and some unused yet functions/keyword arguments

Closed Anton Shestakov requested to merge topic/default/obslog-predecessors-1 into branch/default
All threads resolved!
Files
2
@@ -108,8 +108,10 @@ TEMPLATE_FIRST_LINE = b"""{if(rev, "%(presentnode)s", "%(missingnode)s")}""" % {
b"presentnode": TEMPLATE_PRESENT_NODE,
b"missingnode": TEMPLATE_MISSING_NODE
}
TEMPLATE_PREDNODES = b"""{label("evolve.node", join(prednodes % "{prednode|short}", ", "))}"""
TEMPLATE_SUCCNODES = b"""{label("evolve.node", join(succnodes % "{succnode|short}", ", "))}"""
TEMPLATE_NODES = b"""{if(succnodes, "as %(succnodes)s")}""" % {
TEMPLATE_NODES = b"""{if(prednodes, "from %(prednodes)s")}{if(succnodes, "as %(succnodes)s")}""" % {
b"prednodes": TEMPLATE_PREDNODES,
b"succnodes": TEMPLATE_SUCCNODES
}
TEMPLATE_REWRITE = b"""{label("evolve.verb", verb)}{if(effects, "({join(effects, ", ")})")}"""
@@ -208,7+210,7 @@
'''
pass
def patchavailable(node, repo, candidates, successive=True):
if node not in repo:
return False, b"context is not local"
@@ -527,7+529,7 @@
label=b"evolve.node evolve.missing_change_ctx")
fm.plain(b'\n')
def displaymarkers(ui, fm, succnodes, markers, node, repo, includediff=False):
def displaymarkers(ui, fm, nodes, markers, node, repo, includediff=False,
successive=True):
fm.startitem()
verb = _successorsetverb(succnodes, markers)[b"verb"]
if successive:
verb = _successorsetverb(nodes, markers)[b"verb"]
else:
verb = _predecessorsverb(nodes, markers)
fm.data(verb=verb)
@@ -539,10 +545,14 @@ def displaymarkers(ui, fm, succnodes, markers, node, repo, includediff=False):
fmteffects = fm.formatlist(effects, b'effect', sep=b', ')
fm.data(effects=fmteffects)
if len(succnodes) > 0:
hexnodes = (nodemod.hex(succnode) for succnode in sorted(succnodes))
nodes = fm.formatlist(hexnodes, b'succnode')
fm.data(succnodes=nodes)
if len(nodes) > 0:
hexnodes = (nodemod.hex(node) for node in sorted(nodes))
if successive:
nodelist = fm.formatlist(hexnodes, b'succnode')
fm.data(succnodes=nodelist)
else:
nodelist = fm.formatlist(hexnodes, b'prednode')
fm.data(prednodes=nodelist)
# Operations
operations = obsutil.markersoperations(markers)
@@ -564,22 +574,27 @@ def displaymarkers(ui, fm, succnodes, markers, node, repo, includediff=False):
# Patch display
if includediff is True:
_patchavailable = patchavailable(node, repo, succnodes)
_patchavailable = patchavailable(node, repo, nodes,
successive=successive)
if _patchavailable[0] is True:
succ = _patchavailable[1]
diffnode = _patchavailable[1]
basectx = repo[node]
succctx = repo[succ]
if successive:
actx = repo[node]
bctx = repo[diffnode]
else:
actx = repo[diffnode]
bctx = repo[node]
# Description patch
descriptionpatch = getmarkerdescriptionpatch(repo,
basectx.description(),
succctx.description())
actx.description(),
bctx.description())
if descriptionpatch:
# add the diffheader
diffheader = b"diff -r %s -r %s changeset-description\n" %\
(basectx, succctx)
(actx, bctx)
descriptionpatch = diffheader + descriptionpatch
def tolist(text):
@@ -599,8 +614,8 @@ def displaymarkers(ui, fm, succnodes, markers, node, repo, includediff=False):
matchfn = scmutil.matchall(repo)
firstline = True
linestart = True
for chunk, label in patch.diffui(repo, node, succ, matchfn,
opts=diffopts):
for chunk, label in patch.diffui(repo, actx.node(), bctx.node(),
matchfn, opts=diffopts):
if firstline:
ui.write(b'\n')
firstline = False
@@ -733,6 +748,26 @@ def _successorsetverb(successorset, markers):
verb = b'split'
return {b'verb': verb}
def _predecessorsverb(predecessors, markers):
""" Return the verb summarizing a set of predecessors and related markers.
"""
verb = None
if not predecessors:
# we got successors instead of predecessors, and they are empty
# (this is a special case for showing prunes)
verb = b'pruned'
elif len(markers) == 1 and len(markers[0][1]) > 1:
# peeked at the successors to see if this is a split
verb = b'split'
elif len(predecessors) == 1:
verb = _markerspreciseverb(markers)
if verb is None:
verb = b'rewritten'
else:
verb = b'folded'
return verb
# Use a more advanced version of obsfateverb that uses effect-flag
@eh.wrapfunction(obsutil, 'obsfateverb')
def obsfateverb(orig, *args, **kwargs):
Loading