X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/2238127283d703f38765f9b3f6a64f799d18e9e5..3193acd258557340907a7281d067fdbb426c2f54:/admin/bzrmerge.el diff --git a/admin/bzrmerge.el b/admin/bzrmerge.el index 583f0d8886..977e95860e 100644 --- a/admin/bzrmerge.el +++ b/admin/bzrmerge.el @@ -1,9 +1,9 @@ ;;; bzrmerge.el --- help merge one Emacs bzr branch to another -;; Copyright (C) 2010-2011 Free Software Foundation, Inc. +;; Copyright (C) 2010-2012 Free Software Foundation, Inc. ;; Author: Stefan Monnier -;; Keywords: +;; Keywords: maint ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -24,11 +24,11 @@ ;;; Code: -(eval-when-compile - (require 'cl)) ; assert +(eval-when-compile (require 'cl-lib)) (defvar bzrmerge-skip-regexp - "back[- ]?port\\|merge\\|sync\\|re-?generate\\|bump version" + "back[- ]?port\\|merge\\|sync\\|re-?generate\\|bump version\\|from trunk\\|\ +Auto-commit" "Regexp matching logs of revisions that might be skipped. `bzrmerge-missing' will ask you if it should skip any matches.") @@ -133,9 +133,23 @@ are both lists of revnos, in oldest-first order." (setq str (substring str (match-end 0)))) (when (string-match "[.!;, ]+\\'" str) (setq str (substring str 0 (match-beginning 0)))) - (if (save-excursion (y-or-n-p (concat str ": Skip? "))) - (setq skip t)))) - (if skip + (let ((help-form "\ +Type `y' to skip this revision, +`N' to include it and go on to the next revision, +`n' to not skip, but continue to search this log entry for skip regexps, +`q' to quit merging.")) + (pcase (save-excursion + (read-char-choice + (format "%s: Skip (y/n/N/q/%s)? " str + (key-description (vector help-char))) + '(?y ?n ?N ?q))) + (`?y (setq skip t)) + (`?q (keyboard-quit)) + ;; A single log entry can match skip-regexp multiple + ;; times. If you are sure you don't want to skip it, + ;; you don't want to be asked multiple times. + (`?N (setq skip 'no)))))) + (if (eq skip t) (push revno skipped) (push revno revnos))))) (delete-region (point) (point-max))) @@ -241,17 +255,17 @@ Does not make other difference." ;; Do a "skip" (i.e. merge the meta-data only). (setq beg (1- (car skip))) (while (and skip (or (null merge) (< (car skip) (car merge)))) - (assert (> (car skip) (or end beg))) + (cl-assert (> (car skip) (or end beg))) (setq end (pop skip))) (message "Skipping %s..%s" beg end) (bzrmerge-add-metadata from end)) (t ;; Do a "normal" merge. - (assert (or (null skip) (< (car merge) (car skip)))) + (cl-assert (or (null skip) (< (car merge) (car skip)))) (setq beg (1- (car merge))) (while (and merge (or (null skip) (< (car merge) (car skip)))) - (assert (> (car merge) (or end beg))) + (cl-assert (> (car merge) (or end beg))) (setq end (pop merge))) (message "Merging %s..%s" beg end) (if (with-temp-buffer