Remove editable argument from VC's backend checkout methods.
Alters vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-svn.el, vc/vc.el. where this matters (which is only in SCCS and RCS) files are now always checked out editable. This may actually have been dynamically true already - it looks like the vc-next-action code evolved past visiting the other case. Tested with RCS.
This commit is contained in:
parent
f83109f0fa
commit
e7e9dbccb0
11 changed files with 48 additions and 42 deletions
|
@ -1,5 +1,13 @@
|
|||
2014-11-20 Eric S. Raymond <esr@snark>
|
||||
|
||||
* vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el, vc/vc-git.el,
|
||||
vc/vc-hg.el, vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el,
|
||||
vc/vc-svn.el, vc/vc.el: Remove editable argument from the backend
|
||||
checkout methods; where it matters (which is only in SCCS and RCS)
|
||||
files are always checked out editable. This may actually have
|
||||
been dynamically true already - it looks like the vc-next-action
|
||||
code evolved past visiting the other case. Tested with RCS.
|
||||
|
||||
* vc/vc-arch.el, vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el,
|
||||
vc/vc-git.el, vc/vc-hg.el, vc/vc-mtn.el, vc/vc-rcs.el,
|
||||
vc/vc-sccs.el, vc/vc-svn.el, vc/vc.el: Remove never-used rev
|
||||
|
|
|
@ -655,7 +655,7 @@ or a superior directory.")
|
|||
(expand-file-name ".bzrignore"
|
||||
(vc-bzr-root file)))
|
||||
|
||||
(defun vc-bzr-checkout (_file &optional _editable rev)
|
||||
(defun vc-bzr-checkout (_file &optional rev)
|
||||
(if rev (error "Operation not supported")
|
||||
;; Else, there's nothing to do.
|
||||
nil))
|
||||
|
|
|
@ -395,9 +395,8 @@ its parents."
|
|||
"-p"
|
||||
(vc-switches 'CVS 'checkout)))
|
||||
|
||||
(defun vc-cvs-checkout (file &optional editable rev)
|
||||
(defun vc-cvs-checkout (file &optional rev)
|
||||
"Checkout a revision of FILE into the working area.
|
||||
EDITABLE non-nil means that the file should be writable.
|
||||
REV is the revision to check out."
|
||||
(message "Checking out %s..." file)
|
||||
;; Change buffers to get local value of vc-checkout-switches.
|
||||
|
@ -405,7 +404,7 @@ REV is the revision to check out."
|
|||
(if (and (file-exists-p file) (not rev))
|
||||
;; If no revision was specified, just make the file writable
|
||||
;; if necessary (using `cvs-edit' if requested).
|
||||
(and editable (not (eq (vc-cvs-checkout-model (list file)) 'implicit))
|
||||
(and (not (eq (vc-cvs-checkout-model (list file)) 'implicit))
|
||||
(if vc-cvs-use-edit
|
||||
(vc-cvs-command nil 0 file "edit")
|
||||
(set-file-modes file (logior (file-modes file) 128))
|
||||
|
@ -413,7 +412,7 @@ REV is the revision to check out."
|
|||
;; Check out a particular revision (or recreate the file).
|
||||
(vc-file-setprop file 'vc-working-revision nil)
|
||||
(apply 'vc-cvs-command nil 0 file
|
||||
(and editable "-w")
|
||||
"-w"
|
||||
"update"
|
||||
(when rev
|
||||
(unless (eq rev t)
|
||||
|
|
|
@ -87,7 +87,7 @@ See `vc-checkout-model' for a list of possible values."
|
|||
;; This should PUT the resource and release any locks that we hold.
|
||||
)
|
||||
|
||||
(defun vc-dav-checkout (url &optional editable rev destfile)
|
||||
(defun vc-dav-checkout (url &optional rev destfile)
|
||||
"Check out revision REV of URL into the working area.
|
||||
|
||||
If EDITABLE is non-nil URL should be writable by the user and if
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
;; - unregister (file) OK
|
||||
;; * checkin (files rev comment) OK
|
||||
;; * find-revision (file rev buffer) OK
|
||||
;; * checkout (file &optional editable rev) OK
|
||||
;; * checkout (file &optional rev) OK
|
||||
;; * revert (file &optional contents-done) OK
|
||||
;; - rollback (files) COULD BE SUPPORTED
|
||||
;; - merge (file rev1 rev2) It would be possible to merge
|
||||
|
@ -709,7 +709,7 @@ It is based on `log-edit-mode', and has Git-specific extensions.")
|
|||
(expand-file-name ".gitignore"
|
||||
(vc-git-root file)))
|
||||
|
||||
(defun vc-git-checkout (file &optional _editable rev)
|
||||
(defun vc-git-checkout (file &optional rev)
|
||||
(vc-git-command nil 0 file "checkout" (or rev "HEAD")))
|
||||
|
||||
(defun vc-git-revert (file &optional contents-done)
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
;; - unregister (file) OK
|
||||
;; * checkin (files rev comment) OK
|
||||
;; * find-revision (file rev buffer) OK
|
||||
;; * checkout (file &optional editable rev) OK
|
||||
;; * checkout (file &optional rev) OK
|
||||
;; * revert (file &optional contents-done) OK
|
||||
;; - rollback (files) ?? PROBABLY NOT NEEDED
|
||||
;; - merge (file rev1 rev2) NEEDED
|
||||
|
@ -499,7 +499,7 @@ REV is ignored."
|
|||
(vc-hg-root file)))
|
||||
|
||||
;; Modeled after the similar function in vc-bzr.el
|
||||
(defun vc-hg-checkout (file &optional _editable rev)
|
||||
(defun vc-hg-checkout (file &optional rev)
|
||||
"Retrieve a revision of FILE.
|
||||
EDITABLE is ignored.
|
||||
REV is the revision to check out into WORKFILE."
|
||||
|
|
|
@ -197,7 +197,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
|
|||
(defun vc-mtn-find-revision (file rev buffer)
|
||||
(vc-mtn-command buffer 0 file "cat" "-r" rev))
|
||||
|
||||
;; (defun vc-mtn-checkout (file &optional editable rev)
|
||||
;; (defun vc-mtn-checkout (file &optional rev)
|
||||
;; )
|
||||
|
||||
(defun vc-mtn-revert (file &optional contents-done)
|
||||
|
|
|
@ -421,7 +421,7 @@ whether to remove it."
|
|||
(concat "-p" rev)
|
||||
(vc-switches 'RCS 'checkout)))
|
||||
|
||||
(defun vc-rcs-checkout (file &optional editable rev)
|
||||
(defun vc-rcs-checkout (file &optional rev)
|
||||
"Retrieve a copy of a saved version of FILE. If FILE is a directory,
|
||||
attempt the checkout for all registered files beneath it."
|
||||
(if (file-directory-p file)
|
||||
|
@ -452,7 +452,7 @@ attempt the checkout for all registered files beneath it."
|
|||
;; If locking is not strict, force to overwrite
|
||||
;; the writable workfile.
|
||||
(if (eq (vc-rcs-checkout-model (list file)) 'implicit) "-f")
|
||||
(if editable "-l")
|
||||
"-l"
|
||||
(if (stringp rev)
|
||||
;; a literal revision was specified
|
||||
(concat "-r" rev)
|
||||
|
|
|
@ -272,7 +272,7 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
|
|||
(vc-sccs-lookup-triple file rev)))
|
||||
(vc-switches 'SCCS 'checkout)))
|
||||
|
||||
(defun vc-sccs-checkout (file &optional editable rev)
|
||||
(defun vc-sccs-checkout (file &optional rev)
|
||||
"Retrieve a copy of a saved revision of SCCS controlled FILE.
|
||||
If FILE is a directory, all version-controlled files beneath are checked out.
|
||||
EDITABLE non-nil means that the file should be writable and
|
||||
|
@ -299,7 +299,7 @@ locked. REV is the revision to check out."
|
|||
(not (stringp rev)))
|
||||
(setq rev nil))
|
||||
(apply 'vc-sccs-do-command nil 0 "get" (vc-name file)
|
||||
(if editable "-e")
|
||||
"-e"
|
||||
(and rev (concat "-r" (vc-sccs-lookup-triple file rev)))
|
||||
switches))))
|
||||
(message "Checking out %s...done" file))))
|
||||
|
|
|
@ -375,14 +375,14 @@ FILE is a file wildcard, relative to the root directory of DIRECTORY."
|
|||
"Return the administrative directory of FILE."
|
||||
(expand-file-name vc-svn-admin-directory (vc-svn-root file)))
|
||||
|
||||
(defun vc-svn-checkout (file &optional editable rev)
|
||||
(defun vc-svn-checkout (file &optional rev)
|
||||
(message "Checking out %s..." file)
|
||||
(with-current-buffer (or (get-file-buffer file) (current-buffer))
|
||||
(vc-svn-update file editable rev (vc-switches 'SVN 'checkout)))
|
||||
(vc-svn-update file rev (vc-switches 'SVN 'checkout)))
|
||||
(vc-mode-line file 'SVN)
|
||||
(message "Checking out %s...done" file))
|
||||
|
||||
(defun vc-svn-update (file _editable rev switches)
|
||||
(defun vc-svn-update (file rev switches)
|
||||
(if (and (file-exists-p file) (not rev))
|
||||
;; If no revision was specified, there's nothing to do.
|
||||
nil
|
||||
|
|
|
@ -281,16 +281,17 @@
|
|||
;; The implementation should pass the value of vc-checkout-switches
|
||||
;; to the backend command.
|
||||
;;
|
||||
;; * checkout (file &optional editable rev)
|
||||
;; * checkout (file &optional rev)
|
||||
;;
|
||||
;; Check out revision REV of FILE into the working area. If EDITABLE
|
||||
;; is non-nil, FILE should be writable by the user and if locking is
|
||||
;; used for FILE, a lock should also be set. If REV is non-nil, that
|
||||
;; is the revision to check out (default is the working revision).
|
||||
;; If REV is t, that means to check out the head of the current branch;
|
||||
;; if it is the empty string, check out the head of the trunk.
|
||||
;; The implementation should pass the value of vc-checkout-switches
|
||||
;; to the backend command.
|
||||
;; Check out revision REV of FILE into the working area. FILE
|
||||
;; should be writable by the user and if locking is used for FILE, a
|
||||
;; lock should also be set. If REV is non-nil, that is the revision
|
||||
;; to check out (default is the working revision). If REV is t,
|
||||
;; that means to check out the head of the current branch; if it is
|
||||
;; the empty string, check out the head of the trunk. The
|
||||
;; implementation should pass the value of vc-checkout-switches to
|
||||
;; the backend command. The 'editable' argument of older VC versions
|
||||
;; is gone; all files are checked out editable.
|
||||
;;
|
||||
;; * revert (file &optional contents-done)
|
||||
;;
|
||||
|
@ -1138,10 +1139,10 @@ For old-style locking-based version control systems, like RCS:
|
|||
(let ((vsym (intern-soft revision-downcase)))
|
||||
(dolist (file files) (vc-transfer-file file vsym)))
|
||||
(dolist (file files)
|
||||
(vc-checkout file (eq model 'implicit) revision)))))
|
||||
(vc-checkout file revision)))))
|
||||
((not (eq model 'implicit))
|
||||
;; check the files out
|
||||
(dolist (file files) (vc-checkout file t)))
|
||||
(dolist (file files) (vc-checkout file)))
|
||||
(t
|
||||
;; do nothing
|
||||
(message "Fileset is up-to-date"))))
|
||||
|
@ -1227,10 +1228,10 @@ For old-style locking-based version control systems, like RCS:
|
|||
(if (yes-or-no-p (format
|
||||
"%s is not up-to-date. Get latest revision? "
|
||||
(file-name-nondirectory file)))
|
||||
(vc-checkout file (eq model 'implicit) t)
|
||||
(vc-checkout file t)
|
||||
(when (and (not (eq model 'implicit))
|
||||
(yes-or-no-p "Lock this revision? "))
|
||||
(vc-checkout file t)))))
|
||||
(vc-checkout file)))))
|
||||
;; needs-merge
|
||||
((eq state 'needs-merge)
|
||||
(dolist (file files)
|
||||
|
@ -1267,7 +1268,7 @@ For old-style locking-based version control systems, like RCS:
|
|||
"Revert to checked-in revision, instead? "))
|
||||
(error "Checkout aborted")
|
||||
(vc-revert-buffer-internal t t)
|
||||
(vc-checkout file t)))))
|
||||
(vc-checkout file)))))
|
||||
;; Unknown fileset state
|
||||
(t
|
||||
(error "Fileset is in an unknown state %s" state)))))
|
||||
|
@ -1426,29 +1427,27 @@ Argument BACKEND is the backend you are using."
|
|||
(replace-match ""))
|
||||
(write-region (point-min) (point-max) file)))
|
||||
|
||||
(defun vc-checkout (file &optional writable rev)
|
||||
(defun vc-checkout (file &optional rev)
|
||||
"Retrieve a copy of the revision REV of FILE.
|
||||
If WRITABLE is non-nil, make sure the retrieved file is writable.
|
||||
REV defaults to the latest revision.
|
||||
|
||||
After check-out, runs the normal hook `vc-checkout-hook'."
|
||||
(and writable
|
||||
(not rev)
|
||||
(and (not rev)
|
||||
(vc-call make-version-backups-p file)
|
||||
(vc-up-to-date-p file)
|
||||
(vc-make-version-backup file))
|
||||
(let ((backend (vc-backend file)))
|
||||
(with-vc-properties (list file)
|
||||
(condition-case err
|
||||
(vc-call-backend backend 'checkout file writable rev)
|
||||
(vc-call-backend backend 'checkout file rev)
|
||||
(file-error
|
||||
;; Maybe the backend is not installed ;-(
|
||||
(when writable
|
||||
(when t
|
||||
(let ((buf (get-file-buffer file)))
|
||||
(when buf (with-current-buffer buf (read-only-mode -1)))))
|
||||
(signal (car err) (cdr err))))
|
||||
`((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit)
|
||||
(not writable))
|
||||
nil)
|
||||
(if (vc-call-backend backend 'latest-on-branch-p file)
|
||||
'up-to-date
|
||||
'needs-update)
|
||||
|
@ -2544,14 +2543,14 @@ tip revision are merged into the working file."
|
|||
(and file (member file files))))))
|
||||
(dolist (file files)
|
||||
(if (vc-up-to-date-p file)
|
||||
(vc-checkout file nil t)
|
||||
(vc-checkout file t)
|
||||
(vc-maybe-resolve-conflicts
|
||||
file (vc-call-backend backend 'merge-news file)))))
|
||||
;; For a locking VCS, check out each file.
|
||||
((eq (vc-checkout-model backend files) 'locking)
|
||||
(dolist (file files)
|
||||
(if (vc-up-to-date-p file)
|
||||
(vc-checkout file nil t))))
|
||||
(vc-checkout file t))))
|
||||
(t
|
||||
(error "VC update is unsupported for `%s'" backend)))))
|
||||
|
||||
|
@ -2673,7 +2672,7 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
|
|||
(when modified-file
|
||||
(vc-switch-backend file new-backend)
|
||||
(unless (eq (vc-checkout-model new-backend (list file)) 'implicit)
|
||||
(vc-checkout file t nil))
|
||||
(vc-checkout file))
|
||||
(rename-file modified-file file 'ok-if-already-exists)
|
||||
(vc-file-setprop file 'vc-checkout-time nil)))))
|
||||
(when move
|
||||
|
|
Loading…
Add table
Reference in a new issue