diff options
author | Glenn Morris <rgm@gnu.org> | 2017-12-12 21:58:38 -0500 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2017-12-12 21:58:38 -0500 |
commit | 8c91d31beab0234e8a187864df46af543022c656 (patch) | |
tree | 5e8bc381f73554660eb1f26a8e90c42ce32239a4 /admin/gitmerge.el | |
parent | 8e78d49765993bbbb93d42b0530f5ffaa4e759f4 (diff) | |
download | emacs-8c91d31beab0234e8a187864df46af543022c656.tar.gz emacs-8c91d31beab0234e8a187864df46af543022c656.tar.bz2 emacs-8c91d31beab0234e8a187864df46af543022c656.zip |
Fix gitmerge handling of automatic conflict reslution
* admin/gitmerge.el (gitmerge-resolve): Reenable NEWS handling.
(gitmerge-resolve-unmerged): Commit after successful resolution.
(gitmerge-commit): New function, extracted from gitmerge-maybe-resume.
(gitmerge-maybe-resume): Use gitmerge-commit.
Diffstat (limited to 'admin/gitmerge.el')
-rw-r--r-- | admin/gitmerge.el | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/admin/gitmerge.el b/admin/gitmerge.el index eddc72e679c..13d92ac92bc 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -316,11 +316,7 @@ Returns non-nil if conflicts remain." (gitmerge-emacs-version gitmerge--from)))) (file-exists-p temp) (or noninteractive - (and - (y-or-n-p "Try to fix NEWS conflict? ") - ;; FIXME - (y-or-n-p "This is buggy, really try? ") - ))) + (y-or-n-p "Try to fix NEWS conflict? "))) (let ((relfile (file-name-nondirectory file)) (tempfile (make-temp-file "gitmerge"))) (unwind-protect @@ -431,7 +427,9 @@ Throw an user-error if we cannot resolve automatically." (setq conflicted t) ;; Mark as resolved (call-process "git" nil t nil "add" file))) - (when conflicted + (if (not conflicted) + (and files (not (gitmerge-commit)) + (error "Error committing resolution - fix it manually")) (with-current-buffer (get-buffer-create gitmerge-warning-buffer) (erase-buffer) (insert "For the following files, conflicts could\n" @@ -457,6 +455,12 @@ Throw an user-error if we cannot resolve automatically." "diff" "--name-only") (zerop (buffer-size)))) +(defun gitmerge-commit () + "Commit, and return non-nil if it succeeds." + (with-current-buffer (get-buffer-create gitmerge-output-buffer) + (erase-buffer) + (eq 0 (call-process "git" nil t nil "commit" "--no-edit")))) + (defun gitmerge-maybe-resume () "Check if we have to resume a merge. If so, add no longer conflicted files and commit." @@ -478,11 +482,8 @@ If so, add no longer conflicted files and commit." (gitmerge-resolve-unmerged) ;; Commit the merge. (when mergehead - (with-current-buffer (get-buffer-create gitmerge-output-buffer) - (erase-buffer) - (unless (zerop (call-process "git" nil t nil - "commit" "--no-edit")) - (error "Git error during merge - fix it manually")))) + (or (gitmerge-commit) + (error "Git error during merge - fix it manually"))) ;; Successfully resumed. t)))) |