If FILE is a directory, all version-controlled files beneath are checked out.
EDITABLE non-nil means that the file should be writable and
locked. REV is the revision to check out."
- (if (file-directory-p file)
+ (if (file-directory-p file)
(mapc 'vc-sccs-checkout (vc-expand-dirs (list file)))
(let ((file-buffer (get-file-buffer file))
switches)
(error "SCCS backend doesn't support directory-level rollback."))
(dolist (file files)
(let ((discard (vc-working-revision file)))
- (if (null (yes-or-no-p (format "Remove version %s from %s history? "
+ (if (null (yes-or-no-p (format "Remove version %s from %s history? "
discard file)))
(error "Aborted"))
(message "Removing revision %s from %s..." discard file)
(defun vc-sccs-revert (file &optional contents-done)
"Revert FILE to the version it was based on. If FILE is a directory,
revert all subfiles."
- (if (file-directory-p file)
+ (if (file-directory-p file)
(mapc 'vc-sccs-revert (vc-expand-dirs (list file)))
(vc-sccs-do-command nil 0 "unget" (vc-name file))
(vc-sccs-do-command nil 0 "get" (vc-name file))
(defun vc-sccs-steal-lock (file &optional rev)
"Steal the lock on the current workfile for FILE and revision REV."
- (if (file-directory-p file)
+ (if (file-directory-p file)
(mapc 'vc-sccs-steal-lock (vc-expand-dirs (list file)))
(vc-sccs-do-command nil 0 "unget"
(vc-name file) "-n" (if rev (concat "-r" rev)))
(defun vc-sccs-modify-change-comment (files rev comment)
"Modify (actually, append to) the change comments for FILES on a specified REV."
(dolist (file (vc-expand-dirs files))
- (vc-sccs-do-command nil 0 "cdc" (vc-name file)
+ (vc-sccs-do-command nil 0 "cdc" (vc-name file)
(concat "-y" comment) (concat "-r" rev))))
\f
\f
;;;
-;;; Snapshot system
+;;; Tag system. SCCS doesn't have tags, so we simulate them by maintaining
+;;; our own set of name-to-revision mappings.
;;;
-(defun vc-sccs-assign-name (file name)
- "Assign to FILE's latest revision a given NAME."
- (vc-sccs-add-triple name file (vc-working-revision file)))
+(defun vc-sccs-create-tag (backend dir name branchp)
+ (when branchp
+ (error "SCCS backend %s does not support module branches" backend))
+ (let ((result (vc-tag-precondition dir)))
+ (if (stringp result)
+ (error "File %s is not up-to-date" result)
+ (vc-file-tree-walk
+ dir
+ (lambda (f)
+ (vc-sccs-add-triple name f (vc-working-revision f)))))))
\f
;;;
(defun vc-sccs-rename-file (old new)
;; Move the master file (using vc-rcs-master-templates).
(vc-rename-master (vc-name old) new vc-sccs-master-templates)
- ;; Update the snapshot file.
+ ;; Update the tag file.
(with-current-buffer
(find-file-noselect
(expand-file-name vc-sccs-name-assoc-file
;;; Internal functions
;;;
-(defun vc-sccs-root (dir)
- (vc-find-root dir "SCCS" t))
-
;; This function is wrapped with `progn' so that the autoload cookie
;; copies the whole function itself into loaddefs.el rather than just placing
;; a (autoload 'vc-sccs-search-project-dir "vc-sccs") which would not
(kill-buffer (current-buffer))))
(defun vc-sccs-lookup-triple (file name)
- "Return the numeric revision corresponding to a named snapshot of FILE.
+ "Return the numeric revision corresponding to a named tag of FILE.
If NAME is nil or a revision number string it's just passed through."
(if (or (null name)
(let ((firstchar (aref name 0)))