[PATCH STABLE] histedit: backout ebb5bb9bc32e
Martin von Zweigbergk
martinvonz at google.com
Mon Aug 3 18:39:27 UTC 2015
Looks good to me too. I'll let mpm push it.
FWIW, I'm also happy to get rid of those temporary commits from history. I
agree with Pierre-Yves that they are an implementation detail that should
not be visible to the user (even with --hidden).
On Fri, Jul 31, 2015 at 5:55 PM Laurent Charignon <lcharignon at fb.com> wrote:
> This patch looks good to me.
> ebb5bb9bc32e introduced an issue for evolve users and needs to be backed
> out.
>
> Laurent
>
> > On Jul 31, 2015, at 3:16 PM, Pierre-Yves David <
> pierre-yves.david at ens-lyon.org> wrote:
> >
> > # HG changeset patch
> > # User Pierre-Yves David <pierre-yves.david at fb.com>
> > # Date 1438380667 25200
> > # Fri Jul 31 15:11:07 2015 -0700
> > # Branch stable
> > # Node ID e67b959b84bc08754386fc0592c33d4079241b74
> > # Parent 79f0cb97d7537a7c2948f8f9b0a89148825a3a1d
> > histedit: backout ebb5bb9bc32e
> >
> > The faulty changeset use obsolescence marker to roll the repository back
> on
> > --abort. This is a problematic approach because --abort should be as
> close as an
> > actually transaction rollback as possible stripping all created data
> from the
> > repository (cf `hg rebase --abort` stripping all created changesets).
> Instead
> > ebb5bb9bc32e made all content created during the aborted histedit still
> > available in the repository adding obsolescence marker to make them
> hidden. This
> > will cause trouble to evolution user as a re-run of the same histedit
> (with
> > success) will likely result in the very same node to be "recreated" while
> > obsolescence marker would be in place for them. And canceling an
> obsoletion is
> > still a fairly complicated process.
> >
> > This also rollback using obsmarkers instead of strip to clean up
> temporary node
> > on successful histedit run because the two change were not split in
> separated
> > changeset. Rolling that part back does not have significant consequence
> a will
> > have to be resubmitted independently
> >
> > diff --git a/hgext/histedit.py b/hgext/histedit.py
> > --- a/hgext/histedit.py
> > +++ b/hgext/histedit.py
> > @@ -796,17 +796,12 @@ def _histedit(ui, repo, state, *freeargs
> > if n in parentnodes:
> > hg.clean(repo, state.topmost)
> > break
> > else:
> > pass
> > - if supportsmarkers:
> > - obsolete.createmarkers(repo,
> > - ((repo[t],()) for t in
> sorted(tmpnodes)))
> > - obsolete.createmarkers(repo, ((repo[t],()) for t in
> sorted(leafs)))
> > - else:
> > - cleanupnode(ui, repo, 'created', tmpnodes)
> > - cleanupnode(ui, repo, 'temp', leafs)
> > + cleanupnode(ui, repo, 'created', tmpnodes)
> > + cleanupnode(ui, repo, 'temp', leafs)
> > state.clear()
> > return
> > else:
> > cmdutil.checkunfinished(repo)
> > cmdutil.bailifchanged(repo)
> > @@ -897,14 +892,12 @@ def _histedit(ui, repo, state, *freeargs
> > tuple(repo[s] for s in succs)))
> > if markers:
> > obsolete.createmarkers(repo, markers)
> > else:
> > cleanupnode(ui, repo, 'replaced', mapping)
> > - if supportsmarkers:
> > - obsolete.createmarkers(repo, ((repo[t],()) for t in
> sorted(tmpnodes)))
> > - else:
> > - cleanupnode(ui, repo, 'temp', tmpnodes)
> > +
> > + cleanupnode(ui, repo, 'temp', tmpnodes)
> > state.clear()
> > if os.path.exists(repo.sjoin('undo')):
> > os.unlink(repo.sjoin('undo'))
> >
> > def bootstrapcontinue(ui, state, opts):
> > diff --git a/tests/test-histedit-obsolete.t
> b/tests/test-histedit-obsolete.t
> > --- a/tests/test-histedit-obsolete.t
> > +++ b/tests/test-histedit-obsolete.t
> > @@ -62,20 +62,16 @@ Enable obsolete
> >> drop d2ae7f538514 1 b
> >> pick 055a42cdd887 3 d
> >> fold e860deea161a 4 e
> >> pick 652413bf663e 5 f
> >> EOF
> > - [1]
> > + saved backup bundle to
> $TESTTMP/base/.hg/strip-backup/96e494a2d553-3c6c5d92-backup.hg (glob)
> > $ hg log --graph --hidden
> > - @ 10:cacdfd884a93 f
> > + @ 8:cacdfd884a93 f
> > |
> > - o 9:59d9f330561f d
> > + o 7:59d9f330561f d
> > |
> > - | x 8:b558abc46d09 fold-temp-revision e860deea161a
> > - | |
> > - | x 7:96e494a2d553 d
> > - |/
> > o 6:b346ab9a313d c
> > |
> > | x 5:652413bf663e f
> > | |
> > | x 4:e860deea161a e
> > @@ -92,12 +88,10 @@ Enable obsolete
> > d2ae7f538514cd87c17547b0de4cea71fe1af9fb 0
> {cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b} (*) {'user': 'test'} (glob)
> > 177f92b773850b59254aa5e923436f921b55483b
> b346ab9a313db8537ecf96fca3ca3ca984ef3bd7 0 (*) {'user': 'test'} (glob)
> > 055a42cdd88768532f9cf79daa407fc8d138de9b
> 59d9f330561fd6c88b1a6b32f0e45034d88db784 0 (*) {'user': 'test'} (glob)
> > e860deea161a2f77de56603b340ebbb4536308ae
> 59d9f330561fd6c88b1a6b32f0e45034d88db784 0 (*) {'user': 'test'} (glob)
> > 652413bf663ef2a641cab26574e46d5f5a64a55a
> cacdfd884a9321ec4e1de275ef3949fa953a1f83 0 (*) {'user': 'test'} (glob)
> > - 96e494a2d553dd05902ba1cee1d94d4cb7b8faed 0
> {b346ab9a313db8537ecf96fca3ca3ca984ef3bd7} (*) {'user': 'test'} (glob)
> > - b558abc46d09c30f57ac31e85a8a3d64d2e906e4 0
> {96e494a2d553dd05902ba1cee1d94d4cb7b8faed} (*) {'user': 'test'} (glob)
> >
> >
> > Ensure hidden revision does not prevent histedit
> > -------------------------------------------------
> >
> > @@ -109,11 +103,11 @@ create an hidden revision
> >> pick cacdfd884a93 8 f
> >> EOF
> > 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > $ hg log --graph
> > - @ 11:c13eb81022ca f
> > + @ 9:c13eb81022ca f
> > |
> > o 6:b346ab9a313d c
> > |
> > o 0:cb9a9f314b8b a
> >
> > @@ -131,11 +125,11 @@ Test that rewriting leaving instability
> > ---------------------------------------------------------------------
> >
> > $ hg up '.^'
> > 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> > $ hg log -r 'children(.)'
> > - 11:c13eb81022ca f (no-eol)
> > + 9:c13eb81022ca f (no-eol)
> > $ hg histedit -r '.' --commands - <<EOF
> >> edit b346ab9a313d 6 c
> >> EOF
> > 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> > adding c
> > @@ -145,16 +139,16 @@ Test that rewriting leaving instability
> > $ echo c >> c
> > $ hg histedit --continue
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> >
> > $ hg log -r 'unstable()'
> > - 11:c13eb81022ca f (no-eol)
> > + 9:c13eb81022ca f (no-eol)
> >
> > stabilise
> >
> > $ hg rebase -r 'unstable()' -d .
> > - rebasing 11:c13eb81022ca "f"
> > + rebasing 9:c13eb81022ca "f"
> > $ hg up tip -q
> >
> > Test dropping of changeset on the top of the stack
> > -------------------------------------------------------
> >
> > @@ -170,11 +164,11 @@ dropped changeset to be hidden.
> >> pick 40db8afa467b 10 c
> >> drop b449568bf7fc 11 f
> >> EOF
> > 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> > $ hg log -G
> > - @ 12:40db8afa467b c
> > + @ 10:40db8afa467b c
> > |
> > o 0:cb9a9f314b8b a
> >
> >
> > With rewritten ancestors
> > @@ -192,13 +186,13 @@ With rewritten ancestors
> >> EOF
> > 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > $ hg log -G
> > - @ 17:ee6544123ab8 c
> > + @ 15:ee6544123ab8 c
> > |
> > - o 16:269e713e9eae g
> > + o 14:269e713e9eae g
> > |
> > o 0:cb9a9f314b8b a
> >
> > $ cd ../base
> >
> > @@ -216,13 +210,13 @@ Check that histedit respect immutability
> >> EOF
> >
> > $ hg ph -pv '.^'
> > phase changed for 2 changesets
> > $ hg log -G
> > - @ 13:b449568bf7fc (draft) f
> > + @ 11:b449568bf7fc (draft) f
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > $ hg histedit -r '.~2'
> > abort: cannot edit public changeset: cb9a9f314b8b
> > @@ -238,23 +232,23 @@ Prepare further testing
> >> hg add $x
> >> hg ci -m $x
> >> done
> > $ hg phase --force --secret .~2
> > $ hg log -G
> > - @ 18:ee118ab9fa44 (secret) k
> > + @ 16:ee118ab9fa44 (secret) k
> > |
> > - o 17:3a6c53ee7f3d (secret) j
> > + o 15:3a6c53ee7f3d (secret) j
> > |
> > - o 16:b605fb7503f2 (secret) i
> > + o 14:b605fb7503f2 (secret) i
> > |
> > - o 15:7395e1ff83bd (draft) h
> > + o 13:7395e1ff83bd (draft) h
> > |
> > - o 14:6b70183d2492 (draft) g
> > + o 12:6b70183d2492 (draft) g
> > |
> > - o 13:b449568bf7fc (draft) f
> > + o 11:b449568bf7fc (draft) f
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > $ cd ..
> >
> > @@ -288,23 +282,23 @@ New-commit as draft (default)
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > $ hg log -G
> > - @ 24:12e89af74238 (secret) k
> > + @ 22:12e89af74238 (secret) k
> > |
> > - o 23:636a8687b22e (secret) j
> > + o 21:636a8687b22e (secret) j
> > |
> > - o 22:ccaf0a38653f (secret) i
> > + o 20:ccaf0a38653f (secret) i
> > |
> > - o 21:11a89d1c2613 (draft) h
> > + o 19:11a89d1c2613 (draft) h
> > |
> > - o 20:c1dec7ca82ea (draft) g
> > + o 18:c1dec7ca82ea (draft) g
> > |
> > - o 19:087281e68428 (draft) f
> > + o 17:087281e68428 (draft) f
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > $ cd ..
> >
> > @@ -337,23 +331,23 @@ New-commit as draft (default)
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > $ hg log -G
> > - @ 24:12e89af74238 (secret) k
> > + @ 22:12e89af74238 (secret) k
> > |
> > - o 23:636a8687b22e (secret) j
> > + o 21:636a8687b22e (secret) j
> > |
> > - o 22:ccaf0a38653f (secret) i
> > + o 20:ccaf0a38653f (secret) i
> > |
> > - o 21:11a89d1c2613 (draft) h
> > + o 19:11a89d1c2613 (draft) h
> > |
> > - o 20:c1dec7ca82ea (draft) g
> > + o 18:c1dec7ca82ea (draft) g
> > |
> > - o 19:087281e68428 (draft) f
> > + o 17:087281e68428 (draft) f
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > $ cd ..
> >
> > @@ -379,23 +373,23 @@ It seems more important to present the s
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > $ hg log -G
> > - @ 23:558246857888 (secret) k
> > + @ 21:558246857888 (secret) k
> > |
> > - o 22:28bd44768535 (secret) h
> > + o 20:28bd44768535 (secret) h
> > |
> > - o 21:d5395202aeb9 (secret) i
> > + o 19:d5395202aeb9 (secret) i
> > |
> > - o 20:21edda8e341b (secret) g
> > + o 18:21edda8e341b (secret) g
> > |
> > - o 19:5ab64f3a4832 (secret) j
> > + o 17:5ab64f3a4832 (secret) j
> > |
> > - o 13:b449568bf7fc (draft) f
> > + o 11:b449568bf7fc (draft) f
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > $ cd ..
> >
> > @@ -432,32 +426,35 @@ Note that there is a few reordering in t
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
> > 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > + saved backup bundle to
> $TESTTMP/folding/.hg/strip-backup/58019c66f35f-96092fce-backup.hg (glob)
> > + saved backup bundle to
> $TESTTMP/folding/.hg/strip-backup/83d1858e070b-f3469cf8-backup.hg (glob)
> > + saved backup bundle to
> $TESTTMP/folding/.hg/strip-backup/859969f5ed7e-d89a19d7-backup.hg (glob)
> > $ hg log -G
> > - @ 27:f9daec13fb98 (secret) i
> > + @ 19:f9daec13fb98 (secret) i
> > |
> > - o 24:49807617f46a (secret) g
> > + o 18:49807617f46a (secret) g
> > |
> > - o 21:050280826e04 (draft) h
> > + o 17:050280826e04 (draft) h
> > |
> > - o 12:40db8afa467b (public) c
> > + o 10:40db8afa467b (public) c
> > |
> > o 0:cb9a9f314b8b (public) a
> >
> > - $ hg co 24
> > + $ hg co 18
> > 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
> > $ echo wat >> wat
> > $ hg add wat
> > $ hg ci -m 'add wat'
> > created new head
> > - $ hg merge 27
> > + $ hg merge 19
> > 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > (branch merge, don't forget to commit)
> > $ hg ci -m 'merge'
> > $ echo not wat > wat
> > $ hg ci -m 'modify wat'
> > - $ hg histedit 21
> > + $ hg histedit 17
> > abort: cannot edit history that contains merges
> > [255]
> > $ cd ..
> > _______________________________________________
> > Mercurial-devel mailing list
> > Mercurial-devel at selenic.com
> > https://selenic.com/mailman/listinfo/mercurial-devel
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20150803/23d10b5a/attachment.html>
More information about the Mercurial-devel
mailing list