diff hgext/histedit.py @ 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 ef7760f0be87
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]