From: Chong Yidong Date: Tue, 23 Nov 2010 15:13:43 +0000 (-0500) Subject: Always issue a full prompt in vc-merge-branch operation. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~45^2~146 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3d92f44ea0c9a356ce828b07db72c432f773b94c;p=emacs.git Always issue a full prompt in vc-merge-branch operation. * vc/vc.el (vc-merge): Remove optional arg PROMPT. Always prompt for a merge location. * vc/vc-bzr.el (vc-bzr-pull): Remove unused var. (vc-bzr-merge-branch): Always prompt. (vc-bzr-async-command): Use the full branch filename. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 052ef61687c..d2969ea77fb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2010-11-23 Chong Yidong + + * vc/vc.el (vc-merge): Remove optional arg PROMPT. Always prompt + for a merge location. + + * vc/vc-bzr.el (vc-bzr-pull): Remove unused var. + (vc-bzr-merge-branch): Always prompt. + (vc-bzr-async-command): Use the full branch filename. + 2010-11-23 Stefan Monnier * shell.el (shell): Use current-buffer by default if it's already diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index 9f8a018cec5..9c253e027e4 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el @@ -256,7 +256,9 @@ some window, but don't select it." ;; TODO: set up hyperlinks. (let* ((dir default-directory) (root (vc-bzr-root default-directory)) - (buffer (get-buffer-create (format "*vc-bzr : %s*" root)))) + (buffer (get-buffer-create + (format "*vc-bzr : %s*" + (expand-file-name root))))) (with-current-buffer buffer (setq default-directory root) (goto-char (point-max)) @@ -288,7 +290,7 @@ prompt for the Bzr command to run." "^parent_location\\s-*=\\s-*[^\n[:space:]]+" branch-conf))) (command (if bound "update" "pull")) - args buf) + args) ;; If necessary, prompt for the exact command. (when (or prompt (not (or bound parent))) (setq args (split-string @@ -302,31 +304,36 @@ prompt for the Bzr command to run." args (cddr args))) (vc-bzr-async-command command args))) -(defun vc-bzr-merge-branch (prompt) +(defun vc-bzr-merge-branch () "Merge another Bzr branch into the current one. -If a default merge source is defined (i.e. an upstream branch or -a previous merge source), this normally runs \"bzr merge --pull\". -If optional PROMPT is non-nil or no default merge source is -defined, prompt for the Bzr command to run." - (let* ((vc-bzr-program vc-bzr-program) - (command "merge") - (args '("--pull")) - command-string args buf) - (when (or prompt - ;; Prompt if there is no default merge source. - (null - (string-match - "^\\(parent_location\\|submit_branch\\)\\s-*=\\s-*[^\n[:space:]]+" - (vc-bzr--branch-conf default-directory)))) - (setq args (split-string - (read-shell-command - "Run Bzr (like this): " - (concat vc-bzr-program " " command " --pull") - 'vc-bzr-history) - " " t)) - (setq vc-bzr-program (car args) - command (cadr args) - args (cddr args))) +Prompt for the Bzr command to run, providing a pre-defined merge +source (an upstream branch or a previous merge source) as a +default if it is available." + (let* ((branch-conf (vc-bzr--branch-conf default-directory)) + ;; "bzr merge" without an argument defaults to submit_branch, + ;; then parent_location. We extract the specific location + ;; and add it explicitly to the command line. + (location + (cond + ((string-match + "^submit_branch\\s-*=\\s-*\\(?:file://\\)?\\([^\n[:space:]]+\\)$" + branch-conf) + (match-string 1 branch-conf)) + ((string-match + "^parent_location\\s-*=\\s-*\\(?:file://\\)?\\([^\n[:space:]]+\\)$" + branch-conf) + (match-string 1 branch-conf)))) + (cmd + (split-string + (read-shell-command + "Run Bzr (like this): " + (concat vc-bzr-program " merge --pull" + (if location (concat " " location) "")) + 'vc-bzr-history) + " " t)) + (vc-bzr-program (car cmd)) + (command (cadr cmd)) + (args (cddr cmd))) (vc-bzr-async-command command args))) (defun vc-bzr-status (file) diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index d8741c3752e..40f91b70757 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -316,10 +316,10 @@ ;; Merge the changes between REV1 and REV2 into the current working file ;; (for non-distributed VCS). ;; -;; - merge-branch (prompt) +;; - merge-branch () ;; -;; Merge another branch into the current one. If PROMPT is non-nil, -;; or if necessary, prompt for a location to merge from. +;; Merge another branch into the current one, prompting for a +;; location to merge from. ;; ;; - merge-news (file) ;; @@ -1828,12 +1828,11 @@ The headers are reset to their non-expanded form." 'modify-change-comment files rev comment)))))) ;;;###autoload -(defun vc-merge (&optional arg) +(defun vc-merge () "Perform a version control merge operation. On a distributed version control system, this runs a \"merge\" operation to incorporate changes from another branch onto the -current branch, prompting for an argument list if required. -Optional prefix ARG forces a prompt. +current branch, prompting for an argument list. On a non-distributed version control system, this merges changes between two revisions into the current fileset. This asks for @@ -1841,14 +1840,14 @@ two revisions to merge from in the minibuffer. If the first revision is a branch number, then merge all changes from that branch. If the first revision is empty, merge the most recent changes from the current branch." - (interactive "P") + (interactive) (let* ((vc-fileset (vc-deduce-fileset t)) (backend (car vc-fileset)) (files (cadr vc-fileset))) (cond ;; If a branch-merge operation is defined, use it. ((vc-find-backend-function backend 'merge-branch) - (vc-call-backend backend 'merge-branch arg)) + (vc-call-backend backend 'merge-branch)) ;; Otherwise, do a per-file merge. ((vc-find-backend-function backend 'merge) (vc-buffer-sync)