[PATCH 4 of 5] histedit: suggest "histedit --abort" for inconsistent histedit status

Augie Fackler raf at durin42.com
Tue Aug 27 10:09:56 CDT 2013


On Tue, Aug 27, 2013 at 04:23:51PM +0900, FUJIWARA Katsunori wrote:
>
> At Mon, 26 Aug 2013 09:48:11 -0400,
> Augie Fackler wrote:
> >
> > On Mon, Aug 26, 2013 at 04:41:51PM +0900, FUJIWARA Katsunori wrote:
> > > # HG changeset patch
> > > # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> > > # Date 1377501081 -32400
> > > #      Mon Aug 26 16:11:21 2013 +0900
> > > # Node ID 530564f737e2bf5111f769f944f6d0f7b6942def
> > > # Parent  c0dc67257c631ea0b709b189271bfd022917c022
> > > histedit: suggest "histedit --abort" for inconsistent histedit status
> > >
> > > This patch changes the hint message for inconsistent histedit status,
> > > because Mercurial 2.7 or later prevents from updating the working
> > > directory before "histedit --abort", if histedit is in progress.
> >
> > Not sure how I feel about this one. This changes the suggestion from
> > "finish your work" to "throw away any work you've done."
>
> Yes, it is intentional to change the suggestion from "finish your
> work" to "throw away any work you've done.", because there is no
> (ordinary) way to continue histedit in this case with Mercurial 2.7 or
> later.
>
> IMHO, adding new code path (or option ?) to allow such continuation
> seems to have less meaning, because this histedit should be forgotten
> one in almost all cases.
>
> Or should I suggest "use Mercurial earlier than 2.7 to continue this
> histedit" or "backup .hg/histedit-state, update working directory,
> restore histedit-state and continue" ?

Given that this invalid state can only be produced with an old hg or
by doing dirty things, I'm actually okay leaving the error message
unchanged from current tip.

>
> > >
> > > diff --git a/hgext/histedit.py b/hgext/histedit.py
> > > --- a/hgext/histedit.py
> > > +++ b/hgext/histedit.py
> > > @@ -628,8 +628,8 @@
> > >              # `parentctxnode` should match but no result. This means that
> > >              # currentnode is not a descendant from parentctxnode.
> > >              msg = _('%s is not an ancestor of working directory')
> > > -            hint = _('update to %s or descendant and run "hg histedit '
> > > -                     '--continue" again') % parentctx
> > > +            hint = _('this inconsistent histedit should be aborted by '
> > > +                     '"histedit --abort"')
> > >              raise util.Abort(msg % parentctx, hint=hint)
> > >          newchildren.pop(0)  # remove parentctxnode
> > >      # Commit dirty working directory if necessary
> > > diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
> > > --- a/tests/test-histedit-arguments.t
> > > +++ b/tests/test-histedit-arguments.t
> > > @@ -70,6 +70,37 @@
> > >    [255]
> > >    $ hg up --quiet
> > >
> > > +Run on a revision not descendants of the initial parent
> > > +--------------------------------------------------------------------
> > > +
> > > +this should occur only when there is (maybe forgotten) histedit-state
> > > +left by hg earlier than 2.7, because 2.7 or later prevents users from
> > > +updating without aborting.
> > > +
> > > +  $ HGEDITOR=cat hg histedit -r 4 --commands - << EOF
> > > +  > edit 08d98a8350f3 4 five
> > > +  > EOF
> > > +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > > +  reverting alpha
> > > +  Make changes as needed, you may commit or record as needed now.
> > > +  When you are finished, run hg histedit --continue to resume.
> > > +  [1]
> > > +
> > > +this emulates "hg update" before "hg histedit --abort" with hg earlier
> > > +than 2.7
> > > +
> > > +  $ mv .hg/histedit-state .hg/histedit-state.back
> > > +  $ hg update --quiet --clean 2
> > > +  $ mv .hg/histedit-state.back .hg/histedit-state
> > > +
> > > +  $ hg histedit --continue
> > > +  abort: c8e68270e35a is not an ancestor of working directory
> > > +  (this inconsistent histedit should be aborted by "histedit --abort")
> > > +  [255]
> > > +
> > > +  $ hg histedit --abort
> > > +  $ hg update --quiet --clean
> > > +
> > >  Test that missing revisions are detected
> > >  ---------------------------------------
> > >
> > > _______________________________________________
> > > Mercurial-devel mailing list
> > > Mercurial-devel at selenic.com
> > > http://selenic.com/mailman/listinfo/mercurial-devel
> >
>
> ----------------------------------------------------------------------
> [FUJIWARA Katsunori]                             foozy at lares.dti.ne.jp


More information about the Mercurial-devel mailing list