diff -r 5460424092e2 -r cbcbf63b6dbf mercurial/rewriteutil.py --- a/mercurial/rewriteutil.py Mon May 29 18:41:58 2023 +0200 +++ b/mercurial/rewriteutil.py Thu May 25 00:23:05 2023 +0200 @@ -27,6 +27,21 @@ NODE_RE = re.compile(br'\b[0-9a-f]{6,64}\b') +# set of extra entry that should survive a rebase-like operation, extensible by extensions +retained_extras_on_rebase = { + b'source', + b'intermediate-source', +} + + +def preserve_extras_on_rebase(old_ctx, new_extra): + """preserve the relevant `extra` entry from old_ctx on rebase-like operation""" + new_extra.update( + (key, value) + for key, value in old_ctx.extra().items() + if key in retained_extras_on_rebase + ) + def _formatrevs(repo, revs, maxrevs=4): """returns a string summarizing revisions in a decent size