[PATCH 7 of 7] histedit: use scmutil.cleanupnodes (BC)
Jun Wu
quark at fb.com
Sun Jul 9 15:21:52 EDT 2017
Excerpts from Martin von Zweigbergk's message of 2017-07-09 12:04:11 -0700:
> On Sat, Jul 8, 2017 at 4:51 PM, Jun Wu <quark at fb.com> wrote:
> > diff --git a/hgext/histedit.py b/hgext/histedit.py
> > --- a/hgext/histedit.py
> > +++ b/hgext/histedit.py
> > @@ -1182,5 +1182,9 @@ def _finishhistedit(ui, repo, state):
> > mapping[n] = ()
> >
> > - safecleanupnode(ui, repo, mapping)
> > + # remove entries about unknown nodes
> > + nodemap = repo.unfiltered().changelog.nodemap
> > + mapping = {k: v for k, v in mapping.items()
> > + if k in nodemap and all(n in nodemap for n in v)}
>
> I suppose these few lines could potentially move into cleanupnodes?
> IIUC, it's to prevent crashing if you had stripped nodes during
> histedit. The same can be done during rebase (while stopped to resolve
> conflicts) and
The current rebase and amend do not have the "remove unknown node" logic
(might be a bug for rebase, but amend does not seem to need this). Since
it's only useful in a subset of all cases, and commands like metaedit,
split, amend, etc do not need it, I think it's cleaner to require explicit
node removal from the callsite, so when the callsite made a mistake, we can
catch it instead of ignoring it silently.
> > + scmutil.cleanupnodes(repo, mapping, 'histedit')
> >
> > state.clear()
More information about the Mercurial-devel
mailing list