Improve VC create/retrieve tag/branch.

* lisp/vc.el (vc-create-tag): Do not read the directory name for VCs
with repository revision granularity.  Adjust the tag/branch
prompt.  Reset VC properties.
(vc-retrieve-tag): Do not read the directory name for VCs
with repository revision granularity.  Reset VC properties.
This commit is contained in:
Dan Nicolaescu 2010-06-09 00:47:14 -07:00
parent ef33fd3404
commit 5f4f2ae4f9
2 changed files with 33 additions and 10 deletions

View file

@ -1,3 +1,12 @@
2010-06-09 Dan Nicolaescu <dann@ics.uci.edu>
Improve VC create/retrieve tag/branch.
* vc.el (vc-create-tag): Do not read the directory name for VCs
with repository revision granularity. Adjust the tag/branch
prompt. Reset VC properties.
(vc-retrieve-tag): Do not read the directory name for VCs
with repository revision granularity. Reset VC properties.
2010-06-09 Julien Danjou <julien@danjou.info>
* net/notifications.el: New file.

View file

@ -580,9 +580,6 @@
;; display the branch name in the mode-line. Replace
;; vc-cvs-sticky-tag with that.
;;
;; - vc-create-tag and vc-retrieve-tag should update the
;; buffers that might be visiting the affected files.
;;
;;;; Internal cleanups:
;;
;; - backends that care about vc-stay-local should try to take it into
@ -1896,14 +1893,22 @@ the named configuration. If the prefix argument BRANCHP is
given, the tag is made as a new branch and the files are
checked out in that new branch."
(interactive
(list (read-file-name "Directory: " default-directory default-directory t)
(read-string "New tag name: ")
current-prefix-arg))
(let ((granularity
(vc-call-backend (vc-responsible-backend default-directory)
'revision-granularity)))
(list
(if (eq granularity 'repository)
;; For VC's that do not work at file level, it's pointless
;; to ask for a directory, branches are created at repository level.
default-directory
(read-file-name "Directory: " default-directory default-directory t))
(read-string (if current-prefix-arg "New branch name: " "New tag name: "))
current-prefix-arg)))
(message "Making %s... " (if branchp "branch" "tag"))
(when (file-directory-p dir) (setq dir (file-name-as-directory dir)))
(vc-call-backend (vc-responsible-backend dir)
'create-tag dir name branchp)
(vc-resynch-buffer dir t t)
(vc-resynch-buffer dir t t t)
(message "Making %s... done" (if branchp "branch" "tag")))
;;;###autoload
@ -1914,8 +1919,16 @@ If locking is used for the files in DIR, then there must not be any
locked files at or below DIR (but if NAME is empty, locked files are
allowed and simply skipped)."
(interactive
(list (read-file-name "Directory: " default-directory default-directory t)
(read-string "Tag name to retrieve (default latest revisions): ")))
(let ((granularity
(vc-call-backend (vc-responsible-backend default-directory)
'revision-granularity)))
(list
(if (eq granularity 'repository)
;; For VC's that do not work at file level, it's pointless
;; to ask for a directory, branches are created at repository level.
default-directory
(read-file-name "Directory: " default-directory default-directory t))
(read-string "Tag name to retrieve (default latest revisions): "))))
(let ((update (yes-or-no-p "Update any affected buffers? "))
(msg (if (or (not name) (string= name ""))
(format "Updating %s... " (abbreviate-file-name dir))
@ -1924,9 +1937,10 @@ allowed and simply skipped)."
(message "%s" msg)
(vc-call-backend (vc-responsible-backend dir)
'retrieve-tag dir name update)
(vc-resynch-buffer dir t t)
(vc-resynch-buffer dir t t t)
(message "%s" (concat msg "done"))))
;; Miscellaneous other entry points
;; FIXME: this should be a defcustom