aboutsummaryrefslogtreecommitdiffstats
path: root/admin/gitmerge.el
diff options
context:
space:
mode:
authorGlenn Morris2017-12-12 21:58:38 -0500
committerGlenn Morris2017-12-12 21:58:38 -0500
commit8c91d31beab0234e8a187864df46af543022c656 (patch)
tree5e8bc381f73554660eb1f26a8e90c42ce32239a4 /admin/gitmerge.el
parent8e78d49765993bbbb93d42b0530f5ffaa4e759f4 (diff)
downloademacs-8c91d31beab0234e8a187864df46af543022c656.tar.gz
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.el23
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."
316 (gitmerge-emacs-version gitmerge--from)))) 316 (gitmerge-emacs-version gitmerge--from))))
317 (file-exists-p temp) 317 (file-exists-p temp)
318 (or noninteractive 318 (or noninteractive
319 (and 319 (y-or-n-p "Try to fix NEWS conflict? ")))
320 (y-or-n-p "Try to fix NEWS conflict? ")
321 ;; FIXME
322 (y-or-n-p "This is buggy, really try? ")
323 )))
324 (let ((relfile (file-name-nondirectory file)) 320 (let ((relfile (file-name-nondirectory file))
325 (tempfile (make-temp-file "gitmerge"))) 321 (tempfile (make-temp-file "gitmerge")))
326 (unwind-protect 322 (unwind-protect
@@ -431,7 +427,9 @@ Throw an user-error if we cannot resolve automatically."
431 (setq conflicted t) 427 (setq conflicted t)
432 ;; Mark as resolved 428 ;; Mark as resolved
433 (call-process "git" nil t nil "add" file))) 429 (call-process "git" nil t nil "add" file)))
434 (when conflicted 430 (if (not conflicted)
431 (and files (not (gitmerge-commit))
432 (error "Error committing resolution - fix it manually"))
435 (with-current-buffer (get-buffer-create gitmerge-warning-buffer) 433 (with-current-buffer (get-buffer-create gitmerge-warning-buffer)
436 (erase-buffer) 434 (erase-buffer)
437 (insert "For the following files, conflicts could\n" 435 (insert "For the following files, conflicts could\n"
@@ -457,6 +455,12 @@ Throw an user-error if we cannot resolve automatically."
457 "diff" "--name-only") 455 "diff" "--name-only")
458 (zerop (buffer-size)))) 456 (zerop (buffer-size))))
459 457
458(defun gitmerge-commit ()
459 "Commit, and return non-nil if it succeeds."
460 (with-current-buffer (get-buffer-create gitmerge-output-buffer)
461 (erase-buffer)
462 (eq 0 (call-process "git" nil t nil "commit" "--no-edit"))))
463
460(defun gitmerge-maybe-resume () 464(defun gitmerge-maybe-resume ()
461 "Check if we have to resume a merge. 465 "Check if we have to resume a merge.
462If so, add no longer conflicted files and commit." 466If so, add no longer conflicted files and commit."
@@ -478,11 +482,8 @@ If so, add no longer conflicted files and commit."
478 (gitmerge-resolve-unmerged) 482 (gitmerge-resolve-unmerged)
479 ;; Commit the merge. 483 ;; Commit the merge.
480 (when mergehead 484 (when mergehead
481 (with-current-buffer (get-buffer-create gitmerge-output-buffer) 485 (or (gitmerge-commit)
482 (erase-buffer) 486 (error "Git error during merge - fix it manually")))
483 (unless (zerop (call-process "git" nil t nil
484 "commit" "--no-edit"))
485 (error "Git error during merge - fix it manually"))))
486 ;; Successfully resumed. 487 ;; Successfully resumed.
487 t)))) 488 t))))
488 489