annotate lisp/vc-sccs.el @ 96627:ae085a544367

Use more correct IPA characters for English pronunciation. Add the combining acute accent after the accented vowel in the Russian example like it is used in dictionaries.
author Juri Linkov <juri@jurta.org>
date Sat, 12 Jul 2008 20:41:45 +0000
parents 939006f4843e
children 4a399b9bc4b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 ;;; vc-sccs.el --- support for SCCS version-control
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
92167
5e54541c6015 Comment.
Glenn Morris <rgm@gnu.org>
parents: 91958
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
5e54541c6015 Comment.
Glenn Morris <rgm@gnu.org>
parents: 91958
diff changeset
5 ;; Free Software Foundation, Inc.
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Author: FSF (see vc.el for full credits)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94572
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94572
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94572
diff changeset
15 ;; (at your option) any later version.
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94572
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;;; Code:
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48967
diff changeset
29 (eval-when-compile
35823
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
30 (require 'vc))
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
31
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48967
diff changeset
32 ;;;
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
33 ;;; Customization options
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
34 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
35
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
36 ;; ;; Maybe a better solution is to not use "get" but "sccs get".
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
37 ;; (defcustom vc-sccs-path
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
38 ;; (let ((path ()))
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
39 ;; (dolist (dir '("/usr/sccs" "/usr/lib/sccs" "/usr/libexec/sccs"))
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
40 ;; (if (file-directory-p dir)
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
41 ;; (push dir path)))
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
42 ;; path)
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
43 ;; "List of extra directories to search for SCCS commands."
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
44 ;; :type '(repeat directory)
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
45 ;; :group 'vc)
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
46
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 (defcustom vc-sccs-register-switches nil
31477
1cfec89307a6 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
48 "*Extra switches for registering a file in SCCS.
1cfec89307a6 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
49 A string or list of strings passed to the checkin program by
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50 \\[vc-sccs-register]."
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
51 :type '(choice (const :tag "None" nil)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 (string :tag "Argument String")
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 (repeat :tag "Argument List"
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 :value ("")
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 string))
31477
1cfec89307a6 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
56 :version "21.1"
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 :group 'vc)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
58
35823
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
59 (defcustom vc-sccs-diff-switches nil
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
60 "*A string or list of strings specifying extra switches for `vcdiff',
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
61 the diff utility used for SCCS under VC."
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
62 :type '(choice (const :tag "None" nil)
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
63 (string :tag "Argument String")
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
64 (repeat :tag "Argument List"
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
65 :value ("")
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
66 string))
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
67 :version "21.1"
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
68 :group 'vc)
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
69
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 (defcustom vc-sccs-header (or (cdr (assoc 'SCCS vc-header-alist)) '("%W%"))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71 "*Header keywords to be inserted by `vc-insert-headers'."
35179
1b423e7eb1eb (vc-sccs-header): Fix :type.
Dave Love <fx@gnu.org>
parents: 35134
diff changeset
72 :type '(repeat string)
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 :group 'vc)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 ;;;###autoload
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 (defcustom vc-sccs-master-templates
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 "*Where to look for SCCS master files.
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 For a description of possible values, see `vc-check-master-templates'."
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 :type '(choice (const :tag "Use standard SCCS file names"
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 ("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 (repeat :tag "User-specified"
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 (choice string
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84 function)))
31477
1cfec89307a6 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
85 :version "21.1"
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
86 :group 'vc)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
87
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
88
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
89 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
90 ;;; Internal variables
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
91 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
92
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31385
diff changeset
93 (defconst vc-sccs-name-assoc-file "VC-names")
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31385
diff changeset
94
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
95
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
96 ;;; Properties of the backend
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
97
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
98 (defun vc-sccs-revision-granularity () 'file)
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94522
diff changeset
99 (defun vc-sccs-checkout-model (files) 'locking)
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
100
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
101 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
102 ;;; State-querying functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
103 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
104
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
105 ;; The autoload cookie below places vc-sccs-registered directly into
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
106 ;; loaddefs.el, so that vc-sccs.el does not need to be loaded for
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
107 ;; every file that is visited. The definition is repeated below
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
108 ;; so that Help and etags can find it.
48281
b8e04fa0ebdf (vc-sccs-registered): Improve comment.
André Spiegel <spiegel@gnu.org>
parents: 48264
diff changeset
109
b8e04fa0ebdf (vc-sccs-registered): Improve comment.
André Spiegel <spiegel@gnu.org>
parents: 48264
diff changeset
110 ;;;###autoload (defun vc-sccs-registered(f) (vc-default-registered 'SCCS f))
48264
63fc09a69c40 (vc-sccs-registered): Handle the autoload cookie so that the
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47806
diff changeset
111 (defun vc-sccs-registered (f) (vc-default-registered 'SCCS f))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 (defun vc-sccs-state (file)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 "SCCS-specific function to compute the version control state."
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
115 (if (not (vc-sccs-registered file))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
116 'unregistered
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
117 (with-temp-buffer
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
118 (if (vc-insert-file (vc-sccs-lock-file file))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
119 (let* ((locks (vc-sccs-parse-locks))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
120 (working-revision (vc-working-revision file))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
121 (locking-user (cdr (assoc working-revision locks))))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
122 (if (not locking-user)
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
123 (if (vc-workfile-unchanged-p file)
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
124 'up-to-date
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
125 'unlocked-changes)
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
126 (if (string= locking-user (vc-user-login-name file))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
127 'edited
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
128 locking-user)))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94190
diff changeset
129 'up-to-date))))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 (defun vc-sccs-state-heuristic (file)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 "SCCS-specific state heuristic."
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 (if (not (vc-mistrust-permissions file))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 ;; This implementation assumes that any file which is under version
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 ;; control and has -rw-r--r-- is locked by its owner. This is true
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
136 ;; for both RCS and SCCS, which keep unlocked files at -r--r--r--.
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 ;; We have to be careful not to exclude files with execute bits on;
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 ;; scripts can be under version control too. Also, we must ignore the
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139 ;; group-read and other-read bits, since paranoid users turn them off.
68333
ccad9ac08a6d (vc-sccs-state-heuristic): Use file-attributes with ID-FORMAT
André Spiegel <spiegel@gnu.org>
parents: 66608
diff changeset
140 (let* ((attributes (file-attributes file 'string))
ccad9ac08a6d (vc-sccs-state-heuristic): Use file-attributes with ID-FORMAT
André Spiegel <spiegel@gnu.org>
parents: 66608
diff changeset
141 (owner-name (nth 2 attributes))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 (permissions (nth 8 attributes)))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 (if (string-match ".r-..-..-." permissions)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 'up-to-date
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 (if (string-match ".rw..-..-." permissions)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 (if (file-ownership-preserved-p file)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 'edited
68333
ccad9ac08a6d (vc-sccs-state-heuristic): Use file-attributes with ID-FORMAT
André Spiegel <spiegel@gnu.org>
parents: 66608
diff changeset
148 owner-name)
52179
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
149 ;; Strange permissions.
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
150 ;; Fall through to real state computation.
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
151 (vc-sccs-state file))))
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
152 (vc-sccs-state file)))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93677
diff changeset
154 (defun vc-sccs-dir-status (dir update-function)
94835
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
155 ;; FIXME: this function should be rewritten, using `vc-expand-dirs'
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
156 ;; is not TRTD because it returns files from multiple backends.
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
157 ;; It should also return 'unregistered files.
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
158
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
159 ;; Doing lots of individual VC-state calls is painful, but
94522
a69dcc2c42ae Remove some XXX comments no longer needed.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94521
diff changeset
160 ;; there is no better option in SCCS-land.
93677
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
161 (let ((flist (vc-expand-dirs (list dir)))
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
162 (result nil))
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
163 (dolist (file flist)
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
164 (let ((state (vc-state file))
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
165 (frel (file-relative-name file)))
94835
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
166 (when (and (eq (vc-backend file) 'SCCS)
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
167 (not (eq state 'up-to-date)))
0f7a18ff94d6 * vc-sccs.el (vc-sccs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94806
diff changeset
168 (push (list frel state) result))))
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93677
diff changeset
169 (funcall update-function result)))
93677
112903000f93 * vc-rcs.el (vc-rcs-dir-status):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92195
diff changeset
170
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 82140
diff changeset
171 (defun vc-sccs-working-revision (file)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 82140
diff changeset
172 "SCCS-specific version of `vc-working-revision'."
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (with-temp-buffer
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
174 ;; The working revision is always the latest revision number.
52179
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
175 ;; To find this number, search the entire delta table,
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
176 ;; rather than just the first entry, because the
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
177 ;; first entry might be a deleted ("R") revision.
52179
73faa15ff855 (vc-sccs-state-heuristic): Fix parentheses.
André Spiegel <spiegel@gnu.org>
parents: 50902
diff changeset
178 (vc-insert-file (vc-name file) "^\001e\n\001[^s]")
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
179 (vc-parse-buffer "^\001d D \\([^ ]+\\)" 1)))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
180
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
181 (defun vc-sccs-workfile-unchanged-p (file)
56953
2cc3f5b16438 Doc fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54467
diff changeset
182 "SCCS-specific implementation of `vc-workfile-unchanged-p'."
94847
5e64dca662f0 Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94835
diff changeset
183 (zerop (apply 'vc-do-command "*vc*" 1 "vcdiff" (vc-name file)
35823
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
184 (list "--brief" "-q"
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 82140
diff changeset
185 (concat "-r" (vc-working-revision file))))))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
188 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
189 ;;; State-changing functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
190 ;;;
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
192 (defun vc-sccs-do-command (buffer okstatus command file-or-list &rest flags)
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
193 ;; (let ((load-path (append vc-sccs-path load-path)))
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
194 ;; (apply 'vc-do-command buffer okstatus command file-or-list flags))
94847
5e64dca662f0 Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94835
diff changeset
195 (apply 'vc-do-command (or buffer "*vc*") okstatus "sccs" file-or-list command flags))
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
196
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
197 (defun vc-sccs-create-repo ()
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
198 "Create a new SCCS repository."
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
199 ;; SCCS is totally file-oriented, so all we have to do is make the directory
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
200 (make-directory "SCCS"))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
201
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
202 (defun vc-sccs-register (files &optional rev comment)
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
203 "Register FILES into the SCCS version-control system.
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
204 REV is the optional revision number for the file. COMMENT can be used
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
205 to provide an initial description of FILES.
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
206
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
207 `vc-register-switches' and `vc-sccs-register-switches' are passed to
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 the SCCS command (in that order).
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
209
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
210 Automatically retrieve a read-only version of the files with keywords
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
212 (dolist (file files)
50902
b12a550504a4 (vc-sccs-register, vc-sccs-checkin)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
213 (let* ((dirname (or (file-name-directory file) ""))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
214 (basename (file-name-nondirectory file))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215 (project-file (vc-sccs-search-project-dir dirname basename)))
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
216 (let ((vc-name
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
217 (or project-file
50902
b12a550504a4 (vc-sccs-register, vc-sccs-checkin)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
218 (format (car vc-sccs-master-templates) dirname basename))))
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
219 (apply 'vc-sccs-do-command nil 0 "admin" vc-name
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
220 (and rev (not (string= rev "")) (concat "-r" rev))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
221 "-fb"
37051
92a0a59a48ee (vc-sccs-register): Use relative file names.
André Spiegel <spiegel@gnu.org>
parents: 36713
diff changeset
222 (concat "-i" (file-relative-name file))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
223 (and comment (concat "-y" comment))
50902
b12a550504a4 (vc-sccs-register, vc-sccs-checkin)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
224 (vc-switches 'SCCS 'register)))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
225 (delete-file file)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
226 (if vc-keep-workfiles
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
227 (vc-sccs-do-command nil 0 "get" (vc-name file))))))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
228
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
229 (defun vc-sccs-responsible-p (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
230 "Return non-nil if SCCS thinks it would be responsible for registering FILE."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
231 ;; TODO: check for all the patterns in vc-sccs-master-templates
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
232 (or (file-directory-p (expand-file-name "SCCS" (file-name-directory file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
233 (stringp (vc-sccs-search-project-dir (or (file-name-directory file) "")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
234 (file-name-nondirectory file)))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
235
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
236 (defun vc-sccs-checkin (files rev comment)
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
237 "SCCS-specific version of `vc-backend-checkin'."
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
238 (dolist (file (vc-expand-dirs files))
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
239 (apply 'vc-sccs-do-command nil 0 "delta" (vc-name file)
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
240 (if rev (concat "-r" rev))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
241 (concat "-y" comment)
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
242 (vc-switches 'SCCS 'checkin))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
243 (if vc-keep-workfiles
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
244 (vc-sccs-do-command nil 0 "get" (vc-name file)))))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
245
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 82140
diff changeset
246 (defun vc-sccs-find-revision (file rev buffer)
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
247 (apply 'vc-sccs-do-command
47798
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
248 buffer 0 "get" (vc-name file)
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
249 "-s" ;; suppress diagnostic output
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
250 "-p"
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
251 (and rev
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
252 (concat "-r"
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
253 (vc-sccs-lookup-triple file rev)))
50902
b12a550504a4 (vc-sccs-register, vc-sccs-checkin)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
254 (vc-switches 'SCCS 'checkout)))
47798
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
255
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
256 (defun vc-sccs-checkout (file &optional editable rev)
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
257 "Retrieve a copy of a saved revision of SCCS controlled FILE.
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
258 If FILE is a directory, all version-controlled files beneath are checked out.
35134
f7a5d39c26f0 (vc-sccs-latest-on-branch-p): Removed.
André Spiegel <spiegel@gnu.org>
parents: 33560
diff changeset
259 EDITABLE non-nil means that the file should be writable and
47798
20dfef584009 (vc-sccs-find-version): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44006
diff changeset
260 locked. REV is the revision to check out."
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
261 (if (file-directory-p file)
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
262 (mapc 'vc-sccs-checkout (vc-expand-dirs (list file)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
263 (let ((file-buffer (get-file-buffer file))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
264 switches)
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
265 (message "Checking out %s..." file)
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
266 (save-excursion
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
267 ;; Change buffers to get local value of vc-checkout-switches.
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
268 (if file-buffer (set-buffer file-buffer))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
269 (setq switches (vc-switches 'SCCS 'checkout))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
270 ;; Save this buffer's default-directory
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
271 ;; and use save-excursion to make sure it is restored
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
272 ;; in the same buffer it was saved in.
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
273 (let ((default-directory default-directory))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
274 (save-excursion
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
275 ;; Adjust the default-directory so that the check-out creates
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
276 ;; the file in the right place.
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
277 (setq default-directory (file-name-directory file))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
278
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
279 (and rev (or (string= rev "")
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
280 (not (stringp rev)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
281 (setq rev nil))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
282 (apply 'vc-sccs-do-command nil 0 "get" (vc-name file)
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
283 (if editable "-e")
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
284 (and rev (concat "-r" (vc-sccs-lookup-triple file rev)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
285 switches))))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
286 (message "Checking out %s...done" file))))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
288 (defun vc-sccs-rollback (files)
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
289 "Roll back, undoing the most recent checkins of FILES. Directories
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
290 are expanded to all version-controlled subfiles."
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
291 (setq files (vc-expand-dirs files))
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
292 (if (not files)
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
293 (error "SCCS backend doesn't support directory-level rollback."))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
294 (dolist (file files)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 82140
diff changeset
295 (let ((discard (vc-working-revision file)))
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
296 (if (null (yes-or-no-p (format "Remove version %s from %s history? "
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
297 discard file)))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
298 (error "Aborted"))
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
299 (message "Removing revision %s from %s..." discard file)
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
300 (vc-sccs-do-command nil 0 "rmdel"
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
301 (vc-name file) (concat "-r" discard))
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
302 (vc-sccs-do-command nil 0 "get" (vc-name file) nil))))
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
303
39001
d13c2139752b (vc-*-revert-file): Handle new optional arg CONTENTS-DONE.
André Spiegel <spiegel@gnu.org>
parents: 38436
diff changeset
304 (defun vc-sccs-revert (file &optional contents-done)
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
305 "Revert FILE to the version it was based on. If FILE is a directory,
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
306 revert all subfiles."
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
307 (if (file-directory-p file)
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
308 (mapc 'vc-sccs-revert (vc-expand-dirs (list file)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
309 (vc-sccs-do-command nil 0 "unget" (vc-name file))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
310 (vc-sccs-do-command nil 0 "get" (vc-name file))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
311 ;; Checking out explicit revisions is not supported under SCCS, yet.
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
312 ;; We always "revert" to the latest revision; therefore
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
313 ;; vc-working-revision is cleared here so that it gets recomputed.
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
314 (vc-file-setprop file 'vc-working-revision nil)))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
315
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
316 (defun vc-sccs-steal-lock (file &optional rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
317 "Steal the lock on the current workfile for FILE and revision REV."
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
318 (if (file-directory-p file)
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
319 (mapc 'vc-sccs-steal-lock (vc-expand-dirs (list file)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
320 (vc-sccs-do-command nil 0 "unget"
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
321 (vc-name file) "-n" (if rev (concat "-r" rev)))
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
322 (vc-sccs-do-command nil 0 "get"
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
323 (vc-name file) "-g" (if rev (concat "-r" rev)))))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
324
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85141
diff changeset
325 (defun vc-sccs-modify-change-comment (files rev comment)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85141
diff changeset
326 "Modify (actually, append to) the change comments for FILES on a specified REV."
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
327 (dolist (file (vc-expand-dirs files))
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
328 (vc-sccs-do-command nil 0 "cdc" (vc-name file)
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
329 (concat "-y" comment) (concat "-r" rev))))
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85141
diff changeset
330
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
331
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
332 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
333 ;;; History functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
334 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
335
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
336 (defun vc-sccs-print-log (files &optional buffer)
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
337 "Get change log associated with FILES."
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
338 (setq files (vc-expand-dirs files))
94190
fad57210c7d2 * lisp/vc-sccs.el (vc-sccs-do-command): New fun. Use the "sccs" command.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94003
diff changeset
339 (vc-sccs-do-command buffer 0 "prs" (mapcar 'vc-name files)))
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
340
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
341 (defun vc-sccs-diff (files &optional oldvers newvers buffer)
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
342 "Get a difference report using SCCS between two filesets."
94804
33d1e8fb0ae5 Make SCCS backend directory-aware.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
343 (setq files (vc-expand-dirs files))
92195
c1eed47c8247 (vc-sccs-diff): Fix setting of oldvers and newvers.
Glenn Morris <rgm@gnu.org>
parents: 92167
diff changeset
344 (setq oldvers (vc-sccs-lookup-triple (car files) oldvers))
c1eed47c8247 (vc-sccs-diff): Fix setting of oldvers and newvers.
Glenn Morris <rgm@gnu.org>
parents: 92167
diff changeset
345 (setq newvers (vc-sccs-lookup-triple (car files) newvers))
92167
5e54541c6015 Comment.
Glenn Morris <rgm@gnu.org>
parents: 91958
diff changeset
346 (apply 'vc-do-command (or buffer "*vc-diff*")
81967
6bf2af5a341e Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 75347
diff changeset
347 1 "vcdiff" (mapcar 'vc-name (vc-expand-dirs files))
35823
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
348 (append (list "-q"
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
349 (and oldvers (concat "-r" oldvers))
9396894025fa (vc-sccs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35179
diff changeset
350 (and newvers (concat "-r" newvers)))
50902
b12a550504a4 (vc-sccs-register, vc-sccs-checkin)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49597
diff changeset
351 (vc-switches 'SCCS 'diff))))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
352
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
353
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
354 ;;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
355 ;;; Tag system. SCCS doesn't have tags, so we simulate them by maintaining
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
356 ;;; our own set of name-to-revision mappings.
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
357 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
358
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
359 (defun vc-sccs-create-tag (backend dir name branchp)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
360 (when branchp
95039
939006f4843e (vc-sccs-create-tag): Fix typo in error message and pass backend arg.
Juanma Barranquero <lekktu@gmail.com>
parents: 95020
diff changeset
361 (error "SCCS backend %s does not support module branches" backend))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
362 (let ((result (vc-tag-precondition dir)))
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
363 (if (stringp result)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
364 (error "File %s is not up-to-date" result)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
365 (vc-file-tree-walk
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
366 dir
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
367 (lambda (f)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
368 (vc-sccs-add-triple name f (vc-working-revision f)))))))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
369
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
370
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
371 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
372 ;;; Miscellaneous
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
373 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
374
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
375 (defun vc-sccs-check-headers ()
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
376 "Check if the current file has any headers in it."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
377 (save-excursion
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
378 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
379 (re-search-forward "%[A-Z]%" nil t)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
380
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
381 (defun vc-sccs-rename-file (old new)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
382 ;; Move the master file (using vc-rcs-master-templates).
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
383 (vc-rename-master (vc-name old) new vc-sccs-master-templates)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
384 ;; Update the tag file.
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
385 (with-current-buffer
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
386 (find-file-noselect
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
387 (expand-file-name vc-sccs-name-assoc-file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
388 (file-name-directory (vc-name old))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
389 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
390 ;; (replace-regexp (concat ":" (regexp-quote old) "$") (concat ":" new))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
391 (while (re-search-forward (concat ":" (regexp-quote old) "$") nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
392 (replace-match (concat ":" new) nil nil))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
393 (basic-save-buffer)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
394 (kill-buffer (current-buffer))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
395
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
396
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
397 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
398 ;;; Internal functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
399 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
400
91958
8a796568ffce (vc-sccs-root): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87649
diff changeset
401 (defun vc-sccs-root (dir)
8a796568ffce (vc-sccs-root): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87649
diff changeset
402 (vc-find-root dir "SCCS" t))
8a796568ffce (vc-sccs-root): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87649
diff changeset
403
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
404 ;; This function is wrapped with `progn' so that the autoload cookie
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
405 ;; copies the whole function itself into loaddefs.el rather than just placing
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
406 ;; a (autoload 'vc-sccs-search-project-dir "vc-sccs") which would not
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
407 ;; help us avoid loading vc-sccs.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
408 ;;;###autoload
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
409 (progn (defun vc-sccs-search-project-dir (dirname basename)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
410 "Return the name of a master file in the SCCS project directory.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
411 Does not check whether the file exists but returns nil if it does not
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
412 find any project directory."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
413 (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
414 (when project-dir
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
415 (if (file-name-absolute-p project-dir)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
416 (setq dirs '("SCCS" ""))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
417 (setq dirs '("src/SCCS" "src" "source/SCCS" "source"))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
418 (setq project-dir (expand-file-name (concat "~" project-dir))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
419 (while (and (not dir) dirs)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
420 (setq dir (expand-file-name (car dirs) project-dir))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
421 (unless (file-directory-p dir)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
422 (setq dir nil)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
423 (setq dirs (cdr dirs))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
424 (and dir (expand-file-name (concat "s." basename) dir))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
425
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
426 (defun vc-sccs-lock-file (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
427 "Generate lock file name corresponding to FILE."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
428 (let ((master (vc-name file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
429 (and
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
430 master
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
431 (string-match "\\(.*/\\)\\(s\\.\\)\\(.*\\)" master)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
432 (replace-match "p." t t master 2))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
433
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
434 (defun vc-sccs-parse-locks ()
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
435 "Parse SCCS locks in current buffer.
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
436 The result is a list of the form ((REVISION . USER) (REVISION . USER) ...)."
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
437 (let (master-locks)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
438 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
439 (while (re-search-forward "^\\([0-9.]+\\) [0-9.]+ \\([^ ]+\\) .*\n?"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
440 nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
441 (setq master-locks
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
442 (cons (cons (match-string 1) (match-string 2)) master-locks)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
443 ;; FIXME: is it really necessary to reverse ?
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
444 (nreverse master-locks)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
445
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
446 (defun vc-sccs-add-triple (name file rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
447 (with-current-buffer
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
448 (find-file-noselect
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
449 (expand-file-name vc-sccs-name-assoc-file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
450 (file-name-directory (vc-name file))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
451 (goto-char (point-max))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
452 (insert name "\t:\t" file "\t" rev "\n")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
453 (basic-save-buffer)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
454 (kill-buffer (current-buffer))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
455
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
456 (defun vc-sccs-lookup-triple (file name)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94847
diff changeset
457 "Return the numeric revision corresponding to a named tag of FILE.
85141
b16f7408cd3f Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
458 If NAME is nil or a revision number string it's just passed through."
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
459 (if (or (null name)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
460 (let ((firstchar (aref name 0)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
461 (and (>= firstchar ?0) (<= firstchar ?9))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
462 name
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
463 (with-temp-buffer
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
464 (vc-insert-file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
465 (expand-file-name vc-sccs-name-assoc-file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
466 (file-name-directory (vc-name file))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
467 (vc-parse-buffer (concat name "\t:\t" file "\t\\(.+\\)") 1))))
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
468
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
469 (provide 'vc-sccs)
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
470
56953
2cc3f5b16438 Doc fix.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54467
diff changeset
471 ;; arch-tag: d751dee3-d7b3-47e1-95e3-7ae98c052041
31385
b1e1a94dfc0a (vc-sccs-latest-on-branch-p): Always return t; we
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
472 ;;; vc-sccs.el ends here