X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/ecae6af979abcbb5b45c33ee05ceb297678ec9a0..1113ff4400264a1dfbba818df9914cc74d9c3431:/lisp/vc-sccs.el diff --git a/lisp/vc-sccs.el b/lisp/vc-sccs.el index f8a98f5270..b8957b94c3 100644 --- a/lisp/vc-sccs.el +++ b/lisp/vc-sccs.el @@ -258,7 +258,7 @@ expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile." 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) @@ -293,7 +293,7 @@ are expanded to all version-controlled subfiles." (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) @@ -304,7 +304,7 @@ are expanded to all version-controlled subfiles." (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)) @@ -315,7 +315,7 @@ revert all subfiles." (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))) @@ -325,7 +325,7 @@ revert all subfiles." (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)))) @@ -352,12 +352,20 @@ revert all subfiles." ;;; -;;; 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))))))) ;;; @@ -373,7 +381,7 @@ revert all subfiles." (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 @@ -390,9 +398,6 @@ revert all subfiles." ;;; 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 @@ -446,7 +451,7 @@ The result is a list of the form ((REVISION . USER) (REVISION . USER) ...)." (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)))