Mercurial > hg
changeset 17762:57f27cbfc5bb
histedit: refuse to edit public changeset
Public changeset are immutable. This changeset enforce that in histedit.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Fri, 12 Oct 2012 21:41:08 +0200 |
parents | c80a7a0c7d22 |
children | 13070de77c86 |
files | hgext/histedit.py tests/test-histedit-obsolete.t |
diffstat | 2 files changed, 25 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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]
--- 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]