[PATCH 1 of 5] histedit: simplify computation of `newchildren` during --continue
pierre-yves.david at logilab.fr
Fri Oct 5 09:10:11 CDT 2012
On Fri, Oct 05, 2012 at 08:42:44AM -0500, Augie Fackler wrote:
> On Oct 2, 2012, at 4:42 AM, pierre-yves.david at logilab.fr wrote:
> > # HG changeset patch
> > # User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
> > # Date 1348786765 -7200
> > # Node ID 1a8f44e303c07659197acf8f2e77904b70f06872
> > # Parent fa714f3ed2989aff64c267c9935251d9fc4f31ee
> > histedit: simplify computation of `newchildren` during --continue
> > We are now checking for any changesets between the previous `parentctx` and the
> > current working directory parent. If the current working directory parent is
> > inconsistent, we abort.
> > This change is useful as it simplify the --continue process, easing upcoming
> > changes.
> > diff --git a/hgext/histedit.py b/hgext/histedit.py
> > --- a/hgext/histedit.py
> > +++ b/hgext/histedit.py
> > @@ -548,25 +548,23 @@ def histedit(ui, repo, *parent, **opts):
> > os.unlink(repo.sjoin('undo'))
> > def bootstrapcontinue(ui, repo, parentctx, existing, replacemap, rules,
> > tmpnodes, created, replaced, opts):
> > - currentparent, wantnull = repo.dirstate.parents()
> > - # existing is the list of revisions initially considered by
> > - # histedit. Here we use it to list new changesets, descendants
> > - # of parentctx without an 'existing' changeset in-between. We
> > - # also have to exclude 'existing' changesets which were
> > - # previously dropped.
> > - descendants = set(c.node() for c in
> > - repo.set('(%d::) - %d', parentctx, parentctx))
> > - notdropped = set(n for n in existing if n in descendants and
> > - (n not in replacemap or replacemap[n] in descendants))
> > - # Discover any nodes the user has added in the interim. We can
> > - # miss changesets which were dropped and recreated the same.
> > - newchildren = list(c.node() for c in repo.set(
> > - 'sort(%ln - (%ln or %ln::))', descendants, existing, notdropped))
> > action, currentnode = rules.pop(0)
> > + # is there any new commit between the expected parent and "."
> > + # XXX does not take non linear new change in account (but previous
> > + # XXX implementation didn't used them anyway
> > + newchildren = [c.node() for c in repo.set('(%d::.)', parentctx)]
> > + if not newchildren:
> > + # `parentctxnode` should match but no result. This means that
> > + # currentnode is not a descendant from parentctxnode.
> > + msg = _('working directory parent is not a descendant of %s')
> > + hint = _('update to proper revision and run "hg histedit '
> > + '--continue" again')
> Is there a reason to not say parentctx in the int instead of "proper revision"?
Yes. user may want to update to a descendant of parent ctx (in the split
case). The definition of proper revision is defined in the main abort
message. I think it's clear enough.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 198 bytes
Desc: Digital signature
More information about the Mercurial-devel