changeset 22368:802dffd62de5 stable

histedit: abort gracefully on --continue/--abort with no state Previously we'd print an ugly message saying that the histedit-state file doesn't exist in the repo.
author Siddharth Agarwal <sid0@fb.com>
date Wed, 03 Sep 2014 20:42:51 +0200
parents 71227dc24311
children 897041f6b025 d821fff9b0b9
files hgext/histedit.py tests/test-histedit-arguments.t
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Tue Sep 02 03:41:01 2014 +0200
+++ b/hgext/histedit.py	Wed Sep 03 20:42:51 2014 +0200
@@ -147,6 +147,7 @@
     pickle.dump # import now
 except ImportError:
     import pickle
+import errno
 import os
 import sys
 
@@ -741,7 +742,12 @@
 def readstate(repo):
     """Returns a tuple of (parentnode, rules, keep, topmost, replacements).
     """
-    fp = open(os.path.join(repo.path, 'histedit-state'))
+    try:
+        fp = open(os.path.join(repo.path, 'histedit-state'))
+    except IOError, err:
+        if err.errno != errno.ENOENT:
+            raise
+        raise util.Abort(_('no histedit in progress'))
     return pickle.load(fp)
 
 
--- a/tests/test-histedit-arguments.t	Tue Sep 02 03:41:01 2014 +0200
+++ b/tests/test-histedit-arguments.t	Wed Sep 03 20:42:51 2014 +0200
@@ -41,6 +41,16 @@
        one
   
 
+histedit --continue/--abort with no existing state
+--------------------------------------------------
+
+  $ hg histedit --continue
+  abort: no histedit in progress
+  [255]
+  $ hg histedit --abort
+  abort: no histedit in progress
+  [255]
+
 Run a dummy edit to make sure we get tip^^ correctly via revsingle.
 --------------------------------------------------------------------