aboutsummaryrefslogtreecommitdiffstats
path: root/admin/gitmerge.el
diff options
context:
space:
mode:
authorGlenn Morris2017-12-18 19:38:25 -0500
committerGlenn Morris2017-12-18 19:38:25 -0500
commit1e89864f92b3e1f29592ae914cf6fccce40d49d2 (patch)
treeb00bfa77972997ce4dc862d38ef0c56f6c9f5b37 /admin/gitmerge.el
parent91031a2cfd6b6a3b17c0f8724fd5cccf7c32ed5b (diff)
downloademacs-1e89864f92b3e1f29592ae914cf6fccce40d49d2.tar.gz
emacs-1e89864f92b3e1f29592ae914cf6fccce40d49d2.zip
Make gitmerge usable in batch mode
* admin/gitmerge.el (gitmerge-missing): Add progress messages. (gitmerge-maybe-resume): In batch mode, never resume. (gitmerge): Handle batch mode.
Diffstat (limited to 'admin/gitmerge.el')
-rw-r--r--admin/gitmerge.el15
1 files changed, 11 insertions, 4 deletions
diff --git a/admin/gitmerge.el b/admin/gitmerge.el
index 5e7d8c3e33f..efb7d08501c 100644
--- a/admin/gitmerge.el
+++ b/admin/gitmerge.el
@@ -198,6 +198,7 @@ Will detect a default set of skipped revision by looking at
198cherry mark and search for `gitmerge-skip-regexp'. The result is 198cherry mark and search for `gitmerge-skip-regexp'. The result is
199a list with entries of the form (SHA1 . SKIP), where SKIP denotes 199a list with entries of the form (SHA1 . SKIP), where SKIP denotes
200if and why this commit should be skipped." 200if and why this commit should be skipped."
201 (message "Finding missing commits...")
201 (let (commits) 202 (let (commits)
202 ;; Go through the log and remember all commits that match 203 ;; Go through the log and remember all commits that match
203 ;; `gitmerge-skip-regexp' or are marked by --cherry-mark. 204 ;; `gitmerge-skip-regexp' or are marked by --cherry-mark.
@@ -220,6 +221,7 @@ if and why this commit should be skipped."
220 (when (re-search-forward gitmerge-skip-regexp nil t) 221 (when (re-search-forward gitmerge-skip-regexp nil t)
221 (setcdr (car commits) "R")))))) 222 (setcdr (car commits) "R"))))))
222 (delete-region (point) (point-max)))) 223 (delete-region (point) (point-max))))
224 (message "Finding missing commits...done")
223 (nreverse commits))) 225 (nreverse commits)))
224 226
225(defun gitmerge-setup-log-buffer (commits from) 227(defun gitmerge-setup-log-buffer (commits from)
@@ -474,7 +476,7 @@ If so, add no longer conflicted files and commit."
474 (not (gitmerge-repo-clean))) 476 (not (gitmerge-repo-clean)))
475 (user-error "Repository is not clean")) 477 (user-error "Repository is not clean"))
476 (when statusexist 478 (when statusexist
477 (if (not (y-or-n-p "Resume merge? ")) 479 (if (or noninteractive (not (y-or-n-p "Resume merge? ")))
478 (progn 480 (progn
479 (delete-file gitmerge-status-file) 481 (delete-file gitmerge-status-file)
480 ;; No resume. 482 ;; No resume.
@@ -540,8 +542,12 @@ Branch FROM will be prepended to the list."
540 (list 542 (list
541 (if (gitmerge-maybe-resume) 543 (if (gitmerge-maybe-resume)
542 'resume 544 'resume
543 (completing-read "Merge branch: " (gitmerge-get-all-branches) 545 (if noninteractive
544 nil t (gitmerge-default-branch))))))) 546 (or (pop command-line-args-left)
547 (gitmerge-default-branch))
548 (completing-read "Merge branch: "
549 (gitmerge-get-all-branches)
550 nil t (gitmerge-default-branch))))))))
545 (let ((default-directory (vc-git-root default-directory))) 551 (let ((default-directory (vc-git-root default-directory)))
546 (if (eq from 'resume) 552 (if (eq from 'resume)
547 (progn 553 (progn
@@ -563,7 +569,8 @@ Branch FROM will be prepended to the list."
563 "(C) Detected backport (cherry-mark), (R) Log matches " 569 "(C) Detected backport (cherry-mark), (R) Log matches "
564 "regexp, (M) Manually picked\n\n") 570 "regexp, (M) Manually picked\n\n")
565 (gitmerge-mode) 571 (gitmerge-mode)
566 (pop-to-buffer (current-buffer)))))) 572 (pop-to-buffer (current-buffer))
573 (if noninteractive (gitmerge-start-merge))))))
567 574
568(defun gitmerge-start-merge () 575(defun gitmerge-start-merge ()
569 (interactive) 576 (interactive)