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).
This commit is contained in:
Andrii Kolomoiets 2019-11-14 06:55:28 +01:00 committed by Lars Ingebrigtsen
parent c9ede465de
commit 7afde23248
4 changed files with 23 additions and 7 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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