From: Gustav Hållberg Date: Fri, 13 Mar 2009 04:21:52 +0000 (+0100) Subject: stgit.el: Handle errors in first phase of stgit squash X-Git-Tag: v0.15-rc1~34 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/commitdiff_plain/32d7545de276f1004db22db07b46865b5c27b14c?hp=693d179b751baf58cb52e34a3d51e80aa73e6959 stgit.el: Handle errors in first phase of stgit squash Make sure to reload stgit buffer after first phase, and signal an error if stg squash --save-template fails. Signed-off-by: Gustav Hållberg Signed-off-by: Karl Hasselström --- diff --git a/contrib/stgit.el b/contrib/stgit.el index a506797..93e3fa2 100644 --- a/contrib/stgit.el +++ b/contrib/stgit.el @@ -952,14 +952,27 @@ (defun stgit-squash (patchsyms) (interactive (list stgit-marked-patches)) (when (< (length patchsyms) 2) (error "Need at least two patches to squash")) - (let ((edit-buf (get-buffer-create "*StGit edit*")) + (let ((stgit-buffer (current-buffer)) + (edit-buf (get-buffer-create "*StGit edit*")) (dir default-directory) (sorted-patchsyms (stgit-sort-patches patchsyms))) (log-edit 'stgit-confirm-squash t nil edit-buf) (set (make-local-variable 'stgit-patchsyms) sorted-patchsyms) (setq default-directory dir) - (let ((standard-output edit-buf)) - (apply 'stgit-run-silent "squash" "--save-template=-" sorted-patchsyms)))) + (let ((result (let ((standard-output edit-buf)) + (apply 'stgit-run-silent "squash" + "--save-template=-" sorted-patchsyms)))) + + ;; stg squash may have reordered the patches or caused conflicts + (with-current-buffer stgit-buffer + (stgit-reload)) + + (unless (eq 0 result) + (fundamental-mode) + (rename-buffer "*StGit error*") + (resize-temp-buffer-window) + (switch-to-buffer-other-window stgit-buffer) + (error "stg squash failed"))))) (defun stgit-confirm-squash () (interactive)