# HG changeset patch # User Pierre-Yves David # Date 1350070868 -7200 # Node ID 57f27cbfc5bbff2b7f07a5f838247bd58d887972 # Parent c80a7a0c7d22f3a05c6d38ddf9b729fc6b153b83 histedit: refuse to edit public changeset Public changeset are immutable. This changeset enforce that in histedit. diff -r c80a7a0c7d22 -r 57f27cbfc5bb hgext/histedit.py --- a/hgext/histedit.py Thu Sep 27 14:00:52 2012 +0200 +++ b/hgext/histedit.py Fri Oct 12 21:41:08 2012 +0200 @@ -588,8 +588,12 @@ When keep is false, the specified set can't have children.""" revs = list(repo.set('%n::%n', old, new)) - if not keep and repo.revs('(%ld::) - (%ld + hidden())', revs, revs): - raise util.Abort(_('cannot edit history that would orphan nodes')) + if not keep: + if repo.revs('(%ld::) - (%ld + hidden())', revs, revs): + raise util.Abort(_('cannot edit history that would orphan nodes')) + root = min(revs) + if not root.phase(): + raise util.Abort(_('cannot edit immutable changeset: %s') % root) return [c.node() for c in revs] diff -r c80a7a0c7d22 -r 57f27cbfc5bb tests/test-histedit-obsolete.t --- a/tests/test-histedit-obsolete.t Thu Sep 27 14:00:52 2012 +0200 +++ b/tests/test-histedit-obsolete.t Fri Oct 12 21:41:08 2012 +0200 @@ -121,3 +121,22 @@ > EOF $ hg histedit 6 --commands commands.txt 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + +Check that histedit respect phases +========================================= + +(not directly related to the test file but doesn't deserve it's own test case) + + $ hg log -G + @ 9:7c044e3e33a9 f + | + o 6:d36c0562f908 c + | + o 0:cb9a9f314b8b a + + $ hg ph -pv '.^' + phase changed for 2 changesets + $ hg histedit -r '.~2' + abort: cannot edit immutable changeset: cb9a9f314b8b + [255]