summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-06-24 07:09:51 -0700
committerShawn O. Pearce <sop@google.com>2009-06-24 07:15:21 -0700
commit54fccd71fbdc60adf99b9a9bf4712c121d4312ba (patch)
treed51eb84344c0433e12335b1000ce3526b1368cf8
parentfb5c8fd948dea211cd8f43477855de44c273a1bf (diff)
downloadgit-repo-54fccd71fbdc60adf99b9a9bf4712c121d4312ba.tar.gz
Document any crashes from the user's text editorv1.6.8.4
Rather than failing with no information, display the child exit status and the command line we tried to use to edit a text file. There may be some useful information to help understand the crash. Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--editor.py11
-rw-r--r--error.py5
2 files changed, 14 insertions, 2 deletions
diff --git a/editor.py b/editor.py
index 7400ba1a..cf0a5ee5 100644
--- a/editor.py
+++ b/editor.py
@@ -76,8 +76,15 @@ least one of these before using this command."""
76 os.close(fd) 76 os.close(fd)
77 fd = None 77 fd = None
78 78
79 if subprocess.Popen(editor + [path]).wait() != 0: 79 try:
80 raise EditorError() 80 rc = subprocess.Popen(editor + [path]).wait()
81 except OSError, e:
82 raise EditorError('editor failed, %s: %s %s'
83 % (str(e), cls._GetEditor(), path))
84 if rc != 0:
85 raise EditorError('editor failed with exit status %d: %s %s'
86 % (rc, cls._GetEditor(), path))
87
81 fd2 = open(path) 88 fd2 = open(path)
82 try: 89 try:
83 return fd2.read() 90 return fd2.read()
diff --git a/error.py b/error.py
index 6b9dff44..cb3b7258 100644
--- a/error.py
+++ b/error.py
@@ -24,6 +24,11 @@ class ManifestInvalidRevisionError(Exception):
24class EditorError(Exception): 24class EditorError(Exception):
25 """Unspecified error from the user's text editor. 25 """Unspecified error from the user's text editor.
26 """ 26 """
27 def __init__(self, reason):
28 self.reason = reason
29
30 def __str__(self):
31 return self.reason
27 32
28class GitError(Exception): 33class GitError(Exception):
29 """Unspecified internal error from git. 34 """Unspecified internal error from git.