From 7afde23248e17c155dc6a632d9a3eca44ab5c1b4 Mon Sep 17 00:00:00 2001 From: Andrii Kolomoiets Date: Thu, 14 Nov 2019 06:55:28 +0100 Subject: [PATCH] VC: ability to skip update buffers prompt * lisp/vc/vc.el (vc-default-update-on-retrieve-tag): New function. (vc-retrieve-tag): Call `update-on-retrieve-tag' backend function to determine if prompt for update buffers is needed; Include tag name into the "Retrieving tag" message. * lisp/vc/vc-git.el (vc-git-update-on-retrieve-tag): * lisp/vc/vc-hg.el (vc-hg-update-on-retrieve-tag): * lisp/vc/vc-svn.el (vc-svn-udate-on-retrieve-tag): New functions. Buffers update prompt on `vc-retrieve-tag' is omitted (bug#38156). --- lisp/vc/vc-git.el | 2 ++ lisp/vc/vc-hg.el | 2 ++ lisp/vc/vc-svn.el | 1 + lisp/vc/vc.el | 25 ++++++++++++++++++------- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 2046a9dceca..5ab8e7ec53e 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -47,6 +47,7 @@ ;; FUNCTION NAME STATUS ;; BACKEND PROPERTIES ;; * revision-granularity OK +;; - update-on-retrieve-tag OK ;; STATE-QUERYING FUNCTIONS ;; * registered (file) OK ;; * state (file) OK @@ -218,6 +219,7 @@ toggle display of the entire list." (defun vc-git-revision-granularity () 'repository) (defun vc-git-checkout-model (_files) 'implicit) +(defun vc-git-update-on-retrieve-tag () nil) ;;; STATE-QUERYING FUNCTIONS diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index cc737b30b15..16e5dd6db00 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -40,6 +40,7 @@ ;; FUNCTION NAME STATUS ;; BACKEND PROPERTIES ;; * revision-granularity OK +;; - update-on-retrieve-tag OK ;; STATE-QUERYING FUNCTIONS ;; * registered (file) OK ;; * state (file) OK @@ -194,6 +195,7 @@ highlighting the Log View buffer." (defun vc-hg-revision-granularity () 'repository) (defun vc-hg-checkout-model (_files) 'implicit) +(defun vc-hg-update-on-retrieve-tag () nil) ;;; State querying functions diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index 942dbd5fa5a..ed34b357f9b 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -127,6 +127,7 @@ switches." (defun vc-svn-revision-granularity () 'repository) (defun vc-svn-checkout-model (_files) 'implicit) +(defun vc-svn-update-on-retrieve-tag () nil) ;;; ;;; State-querying functions diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 20056dec7f9..401b39145c8 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -110,6 +110,12 @@ ;; that return 'file have per-file revision numbering; backends ;; that return 'repository have per-repository revision numbering, ;; so a revision level implicitly identifies a changeset +;; +;; - update-on-retrieve-tag +;; +;; Takes no arguments. Backends that return non-nil can update +;; buffers on `vc-retrieve-tag' based on user input. In this case +;; user will be prompted to update buffers on `vc-retrieve-tag'. ;; STATE-QUERYING FUNCTIONS ;; @@ -2302,14 +2308,15 @@ This function runs the hook `vc-retrieve-tag-hook' when finished." (vc-read-revision "Tag name to retrieve (default latest revisions): " (list dir) (vc-responsible-backend dir))))) - (let ((update (yes-or-no-p "Update any affected buffers? ")) - (msg (if (or (not name) (string= name "")) - (format "Updating %s... " (abbreviate-file-name dir)) - (format "Retrieving tag into %s... " - (abbreviate-file-name dir))))) + (let* ((backend (vc-responsible-backend dir)) + (update (when (vc-call-backend backend 'update-on-retrieve-tag) + (yes-or-no-p "Update any affected buffers? "))) + (msg (if (or (not name) (string= name "")) + (format "Updating %s... " (abbreviate-file-name dir)) + (format "Retrieving tag %s into %s... " + name (abbreviate-file-name dir))))) (message "%s" msg) - (vc-call-backend (vc-responsible-backend dir) - 'retrieve-tag dir name update) + (vc-call-backend backend 'retrieve-tag dir name update) (vc-resynch-buffer dir t t t) (run-hooks 'vc-retrieve-tag-hook) (message "%s" (concat msg "done")))) @@ -3025,6 +3032,10 @@ to provide the `find-revision' operation instead." "Let BACKEND receive FILE from another version control system." (vc-call-backend backend 'register (list file) rev "")) +(defun vc-default-update-on-retrieve-tag () + "Prompt for update buffers on `vc-retrieve-tag'." + t) + (defun vc-default-retrieve-tag (backend dir name update) (if (string= name "") (progn -- 2.39.5