[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