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.
--- 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.
--------------------------------------------------------------------