annotate lisp/vc-rcs.el @ 40819:668787248f9b

* dired.el (dired-move-to-filename-regexp): Do not distinguish between ASCII letters and non-ASCII characters. Don't allow comma except in the form "month day, year". Don't allow space between month name and comma. Clean up the code that checks for trailing period, comma, and space. Remove now-obsolete comments, and add more commentary about Japanese dates. Always gobble up trailing spaces, instead of doing it only sometimes.
author Paul Eggert <eggert@twinsun.com>
date Wed, 07 Nov 2001 21:59:39 +0000
parents d13c2139752b
children 6301bb6ec388
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 ;;; vc-rcs.el --- support for RCS version-control
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
35830
037d66685778 Copyright up-date.
Dave Love <fx@gnu.org>
parents: 35822
diff changeset
3 ;; Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5 ;; Author: FSF (see vc.el for full credits)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7
39001
d13c2139752b (vc-*-revert-file): Handle new optional arg CONTENTS-DONE.
André Spiegel <spiegel@gnu.org>
parents: 38436
diff changeset
8 ;; $Id: vc-rcs.el,v 1.20 2001/07/16 12:22:59 pj Exp $
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15 ;; any later version.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36712
diff changeset
27 ;;; Commentary:
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36712
diff changeset
28
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 36712
diff changeset
29 ;; See vc.el
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;;; Code:
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
33 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
34 ;;; Customization options
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
35 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
36
31840
a05558c54226 (toplevel): Require `vc' when compiling.
Gerd Moellmann <gerd@gnu.org>
parents: 31835
diff changeset
37 (eval-when-compile
35822
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
38 (require 'cl)
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
39 (require 'vc))
31840
a05558c54226 (toplevel): Require `vc' when compiling.
Gerd Moellmann <gerd@gnu.org>
parents: 31835
diff changeset
40
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
41 (defcustom vc-rcs-release nil
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
42 "*The release number of your RCS installation, as a string.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
43 If nil, VC itself computes this value when it is first needed."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 :type '(choice (const :tag "Auto" nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45 (string :tag "Specified")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 (const :tag "Unknown" unknown))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
48
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
49 (defcustom vc-rcs-register-switches nil
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
50 "*Extra switches for registering a file in RCS.
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
51 A string or list of strings. These are passed to the checkin program
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
52 by \\[vc-rcs-register]."
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
53 :type '(choice (const :tag "None" nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
54 (string :tag "Argument String")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 (repeat :tag "Argument List"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 :value ("")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
57 string))
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
58 :version "21.1"
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
59 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61 (defcustom vc-rcs-checkin-switches nil
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 "*A string or list of strings specifying extra switches for RCS checkin.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
63 These are passed to the checkin program by \\[vc-rcs-checkin]."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 :type '(choice (const :tag "None" nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65 (string :tag "Argument String")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 (repeat :tag "Argument List"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
67 :value ("")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
68 string))
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
69 :version "21.1"
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
71
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
72 (defcustom vc-rcs-checkout-switches nil
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
73 "*A string or list of strings specifying extra switches for RCS checkout.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
74 These are passed to the checkout program by \\[vc-rcs-checkout]."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75 :type '(choice (const :tag "None" nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76 (string :tag "Argument String")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
77 (repeat :tag "Argument List"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
78 :value ("")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 string))
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
80 :version "21.1"
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82
35822
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
83 (defcustom vc-rcs-diff-switches nil
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
84 "*A string or list of strings specifying extra switches for rcsdiff under VC."
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
85 :type '(choice (const :tag "None" nil)
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
86 (string :tag "Argument String")
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
87 (repeat :tag "Argument List"
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
88 :value ("")
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
89 string))
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
90 :version "21.1"
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
91 :group 'vc)
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
92
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
93 (defcustom vc-rcs-header (or (cdr (assoc 'RCS vc-header-alist)) '("\$Id\$"))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
94 "*Header keywords to be inserted by `vc-insert-headers'."
35178
ae1b8d0257a7 (vc-rcs-header): Fix :type.
Dave Love <fx@gnu.org>
parents: 35133
diff changeset
95 :type '(repeat string)
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
96 :version "21.1"
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 (defcustom vc-rcsdiff-knows-brief nil
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 "*Indicates whether rcsdiff understands the --brief option.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 The value is either `yes', `no', or nil. If it is nil, VC tries
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 to use --brief and sets this variable to remember whether it worked."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 :type '(choice (const :tag "Work out" nil) (const yes) (const no))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
105
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
106 ;;;###autoload
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
107 (defcustom vc-rcs-master-templates
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
108 '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
109 "*Where to look for RCS master files.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 For a description of possible values, see `vc-check-master-templates'."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 :type '(choice (const :tag "Use standard RCS file names"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s"))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 (repeat :tag "User-specified"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 (choice string
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
115 function)))
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
116 :version "21.1"
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
117 :group 'vc)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
118
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
119
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
120 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
121 ;;; State-querying functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
122 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
123
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124 ;;;###autoload
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 (progn (defun vc-rcs-registered (f) (vc-default-registered 'RCS f)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 (defun vc-rcs-state (file)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 "Implementation of `vc-state' for RCS."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 (or (boundp 'vc-rcs-headers-result)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 (and vc-consult-headers
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131 (vc-rcs-consult-headers file)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 (let ((state
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
133 ;; vc-workfile-version might not be known; in that case the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
134 ;; property is nil. vc-rcs-fetch-master-state knows how to
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 ;; handle that.
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
136 (vc-rcs-fetch-master-state file
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
137 (vc-file-getprop file
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 'vc-workfile-version))))
33636
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
139 (if (not (eq state 'up-to-date))
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
140 state
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
141 (require 'vc)
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
142 (if (vc-workfile-unchanged-p file)
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
143 'up-to-date
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
144 (if (eq (vc-checkout-model file) 'locking)
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
145 'unlocked-changes
2c1708b98891 (vc-rcs-state): Before calling vc-workfile-unchanged-p, require vc.
André Spiegel <spiegel@gnu.org>
parents: 33610
diff changeset
146 'edited)))))
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
148 (defun vc-rcs-state-heuristic (file)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 "State heuristic for RCS."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 (let (vc-rcs-headers-result)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 (if (and vc-consult-headers
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
152 (setq vc-rcs-headers-result
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 (vc-rcs-consult-headers file))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
154 (eq vc-rcs-headers-result 'rev-and-lock))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
155 (let ((state (vc-file-getprop file 'vc-state)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
156 ;; If the headers say that the file is not locked, the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 ;; permissions can tell us whether locking is used for
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158 ;; the file or not.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159 (if (and (eq state 'up-to-date)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 (not (vc-mistrust-permissions file)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 ((string-match ".rw..-..-." (nth 8 (file-attributes file)))
31809
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
163 (vc-file-setprop file 'vc-checkout-model 'implicit)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
164 (setq state
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
165 (if (vc-rcs-workfile-is-newer file)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
166 'edited
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
167 'up-to-date)))
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168 ((string-match ".r-..-..-." (nth 8 (file-attributes file)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
169 (vc-file-setprop file 'vc-checkout-model 'locking))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
170 state)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
171 (if (not (vc-mistrust-permissions file))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
172 (let* ((attributes (file-attributes file))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
173 (owner-uid (nth 2 attributes))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
174 (permissions (nth 8 attributes)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
175 (cond ((string-match ".r-..-..-." permissions)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 (vc-file-setprop file 'vc-checkout-model 'locking)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
177 'up-to-date)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
178 ((string-match ".rw..-..-." permissions)
31809
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
179 (if (eq (vc-checkout-model file) 'locking)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
180 (if (file-ownership-preserved-p file)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
181 'edited
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
182 (vc-user-login-name owner-uid))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
183 (if (vc-rcs-workfile-is-newer file)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
184 'edited
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
185 'up-to-date)))
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 (t
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 ;; Strange permissions. Fall through to
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 ;; expensive state computation.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 (vc-rcs-state file))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 (vc-rcs-state file)))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
192 (defun vc-rcs-workfile-version (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
193 "RCS-specific version of `vc-workfile-version'."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
194 (or (and vc-consult-headers
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
195 (vc-rcs-consult-headers file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
196 (vc-file-getprop file 'vc-workfile-version))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
197 (progn
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
198 (vc-rcs-fetch-master-state file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
199 (vc-file-getprop file 'vc-workfile-version))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
200
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
201 (defun vc-rcs-latest-on-branch-p (file &optional version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
202 "Return non-nil if workfile version of FILE is the latest on its branch.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
203 When VERSION is given, perform check for that version."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
204 (unless version (setq version (vc-workfile-version file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
205 (with-temp-buffer
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
206 (string= version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
207 (if (vc-rcs-trunk-p version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
208 (progn
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
209 ;; Compare VERSION to the head version number.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
210 (vc-insert-file (vc-name file) "^[0-9]")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
211 (vc-parse-buffer "^head[ \t\n]+\\([^;]+\\);" 1))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
212 ;; If we are not on the trunk, we need to examine the
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
213 ;; whole current branch.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
214 (vc-insert-file (vc-name file) "^desc")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
215 (vc-rcs-find-most-recent-rev (vc-rcs-branch-part version))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
216
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
217 (defun vc-rcs-checkout-model (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
218 "RCS-specific version of `vc-checkout-model'."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
219 (vc-rcs-consult-headers file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
220 (or (vc-file-getprop file 'vc-checkout-model)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
221 (progn (vc-rcs-fetch-master-state file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
222 (vc-file-getprop file 'vc-checkout-model))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
223
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
224 (defun vc-rcs-workfile-unchanged-p (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
225 "RCS-specific implementation of vc-workfile-unchanged-p."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
226 ;; Try to use rcsdiff --brief. If rcsdiff does not understand that,
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
227 ;; do a double take and remember the fact for the future
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
228 (let* ((version (concat "-r" (vc-workfile-version file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
229 (status (if (eq vc-rcsdiff-knows-brief 'no)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
230 (vc-do-command nil 1 "rcsdiff" file version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
231 (vc-do-command nil 2 "rcsdiff" file "--brief" version))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
232 (if (eq status 2)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
233 (if (not vc-rcsdiff-knows-brief)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
234 (setq vc-rcsdiff-knows-brief 'no
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
235 status (vc-do-command nil 1 "rcsdiff" file version))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
236 (error "rcsdiff failed"))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
237 (if (not vc-rcsdiff-knows-brief) (setq vc-rcsdiff-knows-brief 'yes)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
238 ;; The workfile is unchanged if rcsdiff found no differences.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
239 (zerop status)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
240
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
241
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
242 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
243 ;;; State-changing functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
244 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
245
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
246 (defun vc-rcs-register (file &optional rev comment)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
247 "Register FILE into the RCS version-control system.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
248 REV is the optional revision number for the file. COMMENT can be used
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
249 to provide an initial description of FILE.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
250
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
251 `vc-register-switches' and `vc-rcs-register-switches' are passed to
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
252 the RCS command (in that order).
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
253
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
254 Automatically retrieve a read-only version of the file with keywords
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
255 expanded if `vc-keep-workfiles' is non-nil, otherwise, delete the workfile."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
256 (let ((subdir (expand-file-name "RCS" (file-name-directory file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
257 (switches (list
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
258 (if (stringp vc-register-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
259 (list vc-register-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
260 vc-register-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
261 (if (stringp vc-rcs-register-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
262 (list vc-rcs-register-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
263 vc-rcs-register-switches))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
264
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
265 (and (not (file-exists-p subdir))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
266 (not (directory-files (file-name-directory file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
267 nil ".*,v$" t))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
268 (yes-or-no-p "Create RCS subdirectory? ")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
269 (make-directory subdir))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
270 (apply 'vc-do-command nil 0 "ci" file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
271 ;; if available, use the secure registering option
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
272 (and (vc-rcs-release-p "5.6.4") "-i")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
273 (concat (if vc-keep-workfiles "-u" "-r") rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
274 (and comment (concat "-t-" comment))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
275 switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
276 ;; parse output to find master file name and workfile version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
277 (with-current-buffer "*vc*"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
278 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
279 (let ((name (if (looking-at (concat "^\\(.*\\) <-- "
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
280 (file-name-nondirectory file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
281 (match-string 1))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
282 (if (not name)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
283 ;; if we couldn't find the master name,
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
284 ;; run vc-rcs-registered to get it
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
285 ;; (will be stored into the vc-name property)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
286 (vc-rcs-registered file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
287 (vc-file-setprop file 'vc-name
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
288 (if (file-name-absolute-p name)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
289 name
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
290 (expand-file-name
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
291 name
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
292 (file-name-directory file))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
293 (vc-file-setprop file 'vc-workfile-version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
294 (if (re-search-forward
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
295 "^initial revision: \\([0-9.]+\\).*\n"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
296 nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
297 (match-string 1))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
298
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
299 (defun vc-rcs-responsible-p (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
300 "Return non-nil if RCS thinks it would be responsible for registering FILE."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
301 ;; TODO: check for all the patterns in vc-rcs-master-templates
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
302 (file-directory-p (expand-file-name "RCS" (file-name-directory file))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
303
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
304 (defun vc-rcs-receive-file (file rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
305 "Implementation of receive-file for RCS."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
306 (let ((checkout-model (vc-checkout-model file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
307 (vc-rcs-register file rev "")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
308 (when (eq checkout-model 'implicit)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
309 (vc-rcs-set-non-strict-locking file))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
310 (vc-rcs-set-default-branch file (concat rev ".1"))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
311
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
312 (defun vc-rcs-unregister (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
313 "Unregister FILE from RCS.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
314 If this leaves the RCS subdirectory empty, ask the user
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
315 whether to remove it."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
316 (let* ((master (vc-name file))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
317 (dir (file-name-directory master))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
318 (backup-info (find-backup-file-name master)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
319 (if (not backup-info)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
320 (delete-file master)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
321 (rename-file master (car backup-info) 'ok-if-already-exists)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
322 (dolist (f (cdr backup-info)) (ignore-errors (delete-file f))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
323 (and (string= (file-name-nondirectory (directory-file-name dir)) "RCS")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
324 ;; check whether RCS dir is empty, i.e. it does not
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
325 ;; contain any files except "." and ".."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
326 (not (directory-files dir nil
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
327 "^\\([^.]\\|\\.[^.]\\|\\.\\.[^.]\\).*"))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
328 (yes-or-no-p (format "Directory %s is empty; remove it? " dir))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
329 (delete-directory dir))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
330
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
331 (defun vc-rcs-checkin (file rev comment)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
332 "RCS-specific version of `vc-backend-checkin'."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
333 (let ((switches (if (stringp vc-checkin-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
334 (list vc-checkin-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
335 vc-checkin-switches)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
336 (let ((old-version (vc-workfile-version file)) new-version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
337 (default-branch (vc-file-getprop file 'vc-rcs-default-branch)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
338 ;; Force branch creation if an appropriate
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
339 ;; default branch has been set.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
340 (and (not rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
341 default-branch
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
342 (string-match (concat "^" (regexp-quote old-version) "\\.")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
343 default-branch)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
344 (setq rev default-branch)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
345 (setq switches (cons "-f" switches)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
346 (apply 'vc-do-command nil 0 "ci" (vc-name file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
347 ;; if available, use the secure check-in option
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
348 (and (vc-rcs-release-p "5.6.4") "-j")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
349 (concat (if vc-keep-workfiles "-u" "-r") rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
350 (concat "-m" comment)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
351 switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
352 (vc-file-setprop file 'vc-workfile-version nil)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
353
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
354 ;; determine the new workfile version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
355 (set-buffer "*vc*")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
356 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
357 (when (or (re-search-forward
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
358 "new revision: \\([0-9.]+\\);" nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
359 (re-search-forward
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
360 "reverting to previous revision \\([0-9.]+\\)" nil t))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
361 (setq new-version (match-string 1))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
362 (vc-file-setprop file 'vc-workfile-version new-version))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
363
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
364 ;; if we got to a different branch, adjust the default
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
365 ;; branch accordingly
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
366 (cond
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
367 ((and old-version new-version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
368 (not (string= (vc-rcs-branch-part old-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
369 (vc-rcs-branch-part new-version))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
370 (vc-rcs-set-default-branch file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
371 (if (vc-rcs-trunk-p new-version) nil
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
372 (vc-rcs-branch-part new-version)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
373 ;; If this is an old RCS release, we might have
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
374 ;; to remove a remaining lock.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
375 (if (not (vc-rcs-release-p "5.6.2"))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
376 ;; exit status of 1 is also accepted.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
377 ;; It means that the lock was removed before.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
378 (vc-do-command nil 1 "rcs" (vc-name file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
379 (concat "-u" old-version))))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
380
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
381 (defun vc-rcs-checkout (file &optional editable rev workfile)
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
382 "Retrieve a copy of a saved version of FILE into a workfile."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
383 (let ((filename (or workfile file))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
384 (file-buffer (get-file-buffer file))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
385 switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
386 (message "Checking out %s..." filename)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
387 (save-excursion
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
388 ;; Change buffers to get local value of vc-checkout-switches.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
389 (if file-buffer (set-buffer file-buffer))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
390 (setq switches (if (stringp vc-checkout-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
391 (list vc-checkout-switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
392 vc-checkout-switches))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
393 ;; Save this buffer's default-directory
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
394 ;; and use save-excursion to make sure it is restored
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
395 ;; in the same buffer it was saved in.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
396 (let ((default-directory default-directory))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
397 (save-excursion
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
398 ;; Adjust the default-directory so that the check-out creates
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
399 ;; the file in the right place.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
400 (setq default-directory (file-name-directory filename))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
401 (if workfile ;; RCS
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
402 ;; RCS can't check out into arbitrary file names directly.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
403 ;; Use `co -p' and make stdout point to the correct file.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
404 (let ((vc-modes (logior (file-modes (vc-name file))
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
405 (if editable 128 0)))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
406 (failed t))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
407 (unwind-protect
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
408 (progn
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
409 (let ((coding-system-for-read 'no-conversion)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
410 (coding-system-for-write 'no-conversion))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
411 (with-temp-file filename
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
412 (apply 'vc-do-command
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
413 (current-buffer) 0 "co" (vc-name file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
414 "-q" ;; suppress diagnostic output
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
415 (if editable "-l")
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
416 (concat "-p" rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
417 switches)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
418 (set-file-modes filename
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
419 (logior (file-modes (vc-name file))
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
420 (if editable 128 0)))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
421 (setq failed nil))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
422 (and failed (file-exists-p filename)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
423 (delete-file filename))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
424 (let (new-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
425 ;; if we should go to the head of the trunk,
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
426 ;; clear the default branch first
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
427 (and rev (string= rev "")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
428 (vc-rcs-set-default-branch file nil))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
429 ;; now do the checkout
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
430 (apply 'vc-do-command
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
431 nil 0 "co" (vc-name file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
432 ;; If locking is not strict, force to overwrite
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
433 ;; the writable workfile.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
434 (if (eq (vc-checkout-model file) 'implicit) "-f")
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
435 (if editable "-l")
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
436 (if rev (concat "-r" rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
437 ;; if no explicit revision was specified,
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
438 ;; check out that of the working file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
439 (let ((workrev (vc-workfile-version file)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
440 (if workrev (concat "-r" workrev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
441 nil)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
442 switches)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
443 ;; determine the new workfile version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
444 (with-current-buffer "*vc*"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
445 (setq new-version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
446 (vc-parse-buffer "^revision \\([0-9.]+\\).*\n" 1)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
447 (vc-file-setprop file 'vc-workfile-version new-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
448 ;; if necessary, adjust the default branch
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
449 (and rev (not (string= rev ""))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
450 (vc-rcs-set-default-branch
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
451 file
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
452 (if (vc-rcs-latest-on-branch-p file new-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
453 (if (vc-rcs-trunk-p new-version) nil
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
454 (vc-rcs-branch-part new-version))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
455 new-version))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
456 (message "Checking out %s...done" filename)))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
457
39001
d13c2139752b (vc-*-revert-file): Handle new optional arg CONTENTS-DONE.
André Spiegel <spiegel@gnu.org>
parents: 38436
diff changeset
458 (defun vc-rcs-revert (file &optional contents-done)
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
459 "Revert FILE to the version it was based on."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
460 (vc-do-command nil 0 "co" (vc-name file) "-f"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
461 (concat "-u" (vc-workfile-version file))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
462
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
463 (defun vc-rcs-cancel-version (file editable)
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
464 "Undo the most recent checkin of FILE.
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
465 EDITABLE non-nil means previous version should be locked."
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
466 (let* ((target (vc-workfile-version file))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
467 (previous (if (vc-trunk-p target) "" (vc-branch-part target)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
468 (config (current-window-configuration))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
469 (done nil))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
470 (vc-do-command nil 0 "rcs" (vc-name file) (concat "-o" target))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
471 ;; Check out the most recent remaining version. If it fails, because
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
472 ;; the whole branch got deleted, do a double-take and check out the
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
473 ;; version where the branch started.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
474 (while (not done)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
475 (condition-case err
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
476 (progn
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
477 (vc-do-command nil 0 "co" (vc-name file) "-f"
35133
1b45907ef7a8 (vc-rcs-checkout, vc-rcs-cancel-version): Renamed arg WRITABLE to EDITABLE.
André Spiegel <spiegel@gnu.org>
parents: 33636
diff changeset
478 (concat (if editable "-l" "-u") previous))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
479 (setq done t))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
480 (error (set-buffer "*vc*")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
481 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
482 (if (search-forward "no side branches present for" nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
483 (progn (setq previous (vc-branch-part previous))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
484 (vc-rcs-set-default-branch file previous)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
485 ;; vc-do-command popped up a window with
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
486 ;; the error message. Get rid of it, by
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
487 ;; restoring the old window configuration.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
488 (set-window-configuration config))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
489 ;; No, it was some other error: re-signal it.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
490 (signal (car err) (cdr err))))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
491
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
492 (defun vc-rcs-merge (file first-version &optional second-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
493 "Merge changes into current working copy of FILE.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
494 The changes are between FIRST-VERSION and SECOND-VERSION."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
495 (vc-do-command nil 1 "rcsmerge" (vc-name file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
496 "-kk" ; ignore keyword conflicts
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
497 (concat "-r" first-version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
498 (if second-version (concat "-r" second-version))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
499
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
500 (defun vc-rcs-steal-lock (file &optional rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
501 "Steal the lock on the current workfile for FILE and revision REV.
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
502 Needs RCS 5.6.2 or later for -M."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
503 (vc-do-command nil 0 "rcs" (vc-name file) "-M"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
504 (concat "-u" rev) (concat "-l" rev)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
505
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
506
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
507
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
508 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
509 ;;; History functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
510 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
511
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
512 (defun vc-rcs-print-log (file)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
513 "Get change log associated with FILE."
36712
551ff6f7ef12 (vc-rcs-print-log): Output to buffer *vc*, not the current buffer.
André Spiegel <spiegel@gnu.org>
parents: 35830
diff changeset
514 (vc-do-command nil 0 "rlog" (vc-name file)))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
515
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
516 (defun vc-rcs-show-log-entry (version)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
517 (when (re-search-forward
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
518 ;; also match some context, for safety
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
519 (concat "----\nrevision " version
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
520 "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
521 ;; set the display window so that
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
522 ;; the whole log entry is displayed
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
523 (let (start end lines)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
524 (beginning-of-line) (forward-line -1) (setq start (point))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
525 (if (not (re-search-forward "^----*\nrevision" nil t))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
526 (setq end (point-max))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
527 (beginning-of-line) (forward-line -1) (setq end (point)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
528 (setq lines (count-lines start end))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
529 (cond
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
530 ;; if the global information and this log entry fit
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
531 ;; into the window, display from the beginning
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
532 ((< (count-lines (point-min) end) (window-height))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
533 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
534 (recenter 0)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
535 (goto-char start))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
536 ;; if the whole entry fits into the window,
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
537 ;; display it centered
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
538 ((< (1+ lines) (window-height))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
539 (goto-char start)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
540 (recenter (1- (- (/ (window-height) 2) (/ lines 2)))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
541 ;; otherwise (the entry is too large for the window),
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
542 ;; display from the start
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
543 (t
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
544 (goto-char start)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
545 (recenter 0))))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
546
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
547 (defun vc-rcs-diff (file &optional oldvers newvers)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
548 "Get a difference report using RCS between two versions of FILE."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
549 (if (not oldvers) (setq oldvers (vc-workfile-version file)))
36712
551ff6f7ef12 (vc-rcs-print-log): Output to buffer *vc*, not the current buffer.
André Spiegel <spiegel@gnu.org>
parents: 35830
diff changeset
550 (apply 'vc-do-command "*vc-diff*" 1 "rcsdiff" file
35822
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
551 (append (list "-q"
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
552 (concat "-r" oldvers)
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
553 (and newvers (concat "-r" newvers)))
cd59c63d4aac (vc-rcs-diff-switches): New customization option.
André Spiegel <spiegel@gnu.org>
parents: 35178
diff changeset
554 (vc-diff-switches-list rcs))))
33560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
555
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
556
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
557 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
558 ;;; Snapshot system
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
559 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
560
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
561 (defun vc-rcs-assign-name (file name)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
562 "Assign to FILE's latest version a given NAME."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
563 (vc-do-command nil 0 "rcs" (vc-name file) (concat "-n" name ":")))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
564
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
565
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
566 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
567 ;;; Miscellaneous
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
568 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
569
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
570 (defun vc-rcs-check-headers ()
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
571 "Check if the current file has any headers in it."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
572 (save-excursion
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
573 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
574 (re-search-forward "\\$[A-Za-z\300-\326\330-\366\370-\377]+\
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
575 \\(: [\t -#%-\176\240-\377]*\\)?\\$" nil t)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
576
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
577 (defun vc-rcs-clear-headers ()
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
578 "Implementation of vc-clear-headers for RCS."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
579 (let ((case-fold-search nil))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
580 (goto-char (point-min))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
581 (while (re-search-forward
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
582 (concat "\\$\\(Author\\|Date\\|Header\\|Id\\|Locker\\|Name\\|"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
583 "RCSfile\\|Revision\\|Source\\|State\\): [^$\n]+\\$")
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
584 nil t)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
585 (replace-match "$\\1$"))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
586
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
587 (defun vc-rcs-rename-file (old new)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
588 ;; Just move the master file (using vc-rcs-master-templates).
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
589 (vc-rename-master (vc-name old) new vc-rcs-master-templates))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
590
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
591
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
592 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
593 ;;; Internal functions
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
594 ;;;
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
595
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
596 (defun vc-rcs-trunk-p (rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
597 "Return t if REV is an RCS revision on the trunk."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
598 (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
599
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
600 (defun vc-rcs-branch-part (rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
601 "Return the branch part of an RCS revision number REV"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
602 (substring rev 0 (string-match "\\.[0-9]+\\'" rev)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
603
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
604 (defun vc-rcs-branch-p (rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
605 "Return t if REV is an RCS branch revision"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
606 (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
607
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
608 (defun vc-rcs-minor-part (rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
609 "Return the minor version number of an RCS revision number REV."
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
610 (string-match "[0-9]+\\'" rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
611 (substring rev (match-beginning 0) (match-end 0)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
612
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
613 (defun vc-rcs-previous-version (rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
614 "Guess the previous RCS version number"
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
615 (let ((branch (vc-rcs-branch-part rev))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
616 (minor-num (string-to-number (vc-rcs-minor-part rev))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
617 (if (> minor-num 1)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
618 ;; version does probably not start a branch or release
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
619 (concat branch "." (number-to-string (1- minor-num)))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
620 (if (vc-rcs-trunk-p rev)
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
621 ;; we are at the beginning of the trunk --
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
622 ;; don't know anything to return here
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
623 ""
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
624 ;; we are at the beginning of a branch --
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
625 ;; return version of starting point
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
626 (vc-rcs-branch-part branch)))))
da206bbad86b Functions reordered.
André Spiegel <spiegel@gnu.org>
parents: 32096
diff changeset
627
31809
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
628 (defun vc-rcs-workfile-is-newer (file)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
629 "Return non-nil if FILE is newer than its RCS master.
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
630 This likely means that FILE has been changed with respect
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
631 to its master version."
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
632 (let ((file-time (nth 5 (file-attributes file)))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
633 (master-time (nth 5 (file-attributes (vc-name file)))))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
634 (or (> (nth 0 file-time) (nth 0 master-time))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
635 (and (= (nth 0 file-time) (nth 0 master-time))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
636 (> (nth 1 file-time) (nth 1 master-time))))))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
637
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
638 (defun vc-rcs-find-most-recent-rev (branch)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
639 "Find most recent revision on BRANCH."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
640 (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
641 (let ((latest-rev -1) value)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
642 (while (re-search-forward (concat "^\\(" (regexp-quote branch)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
643 "\\.\\([0-9]+\\)\\)\ndate[ \t]+[0-9.]+;")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
644 nil t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
645 (let ((rev (string-to-number (match-string 2))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646 (when (< latest-rev rev)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
647 (setq latest-rev rev)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
648 (setq value (match-string 1)))))
31809
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
649 (or value
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
650 (vc-rcs-branch-part branch))))
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
651
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
652 (defun vc-rcs-fetch-master-state (file &optional workfile-version)
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
653 "Compute the master file's idea of the state of FILE.
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
654 If a WORKFILE-VERSION is given, compute the state of that version,
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
655 otherwise determine the workfile version based on the master file.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
656 This function sets the properties `vc-workfile-version' and
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
657 `vc-checkout-model' to their correct values, based on the master
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
658 file."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
659 (with-temp-buffer
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
660 (vc-insert-file (vc-name file) "^[0-9]")
32094
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
661 (let ((workfile-is-latest nil)
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
662 (default-branch (vc-parse-buffer "^branch[ \t\n]+\\([^;]*\\);" 1)))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
663 (vc-file-setprop file 'vc-rcs-default-branch default-branch)
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
664 (unless workfile-version
32094
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
665 ;; Workfile version not known yet. Determine that first. It
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
666 ;; is either the head of the trunk, the head of the default
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
667 ;; branch, or the "default branch" itself, if that is a full
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
668 ;; revision number.
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
669 (cond
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
670 ;; no default branch
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
671 ((or (not default-branch) (string= "" default-branch))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
672 (setq workfile-version
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
673 (vc-parse-buffer "^head[ \t\n]+\\([^;]+\\);" 1))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
674 (setq workfile-is-latest t))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
675 ;; default branch is actually a revision
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
676 ((string-match "^[0-9]+\\.[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*$"
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
677 default-branch)
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
678 (setq workfile-version default-branch))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
679 ;; else, search for the head of the default branch
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
680 (t (vc-insert-file (vc-name file) "^desc")
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
681 (setq workfile-version
32094
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
682 (vc-rcs-find-most-recent-rev default-branch))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
683 (setq workfile-is-latest t)))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
684 (vc-file-setprop file 'vc-workfile-version workfile-version))
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
685 ;; Check strict locking
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
686 (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
687 (vc-file-setprop file 'vc-checkout-model
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
688 (if (re-search-forward ";[ \t\n]*strict;" nil t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
689 'locking 'implicit))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
690 ;; Compute state of workfile version
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
691 (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
692 (let ((locking-user
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
693 (vc-parse-buffer (concat "^locks[ \t\n]+[^;]*[ \t\n]+\\([^:]+\\):"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
694 (regexp-quote workfile-version)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
695 "[^0-9.]")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
696 1)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
697 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
698 ;; not locked
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
699 ((not locking-user)
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
700 (if (or workfile-is-latest
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
701 (vc-rcs-latest-on-branch-p file workfile-version))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
702 ;; workfile version is latest on branch
33610
32bcc6e27e02 (vc-rcs-state): Call vc-workfile-unchanged-p only here, and
André Spiegel <spiegel@gnu.org>
parents: 33560
diff changeset
703 'up-to-date
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
704 ;; workfile version is not latest on branch
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
705 'needs-patch))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
706 ;; locked by the calling user
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
707 ((and (stringp locking-user)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
708 (string= locking-user (vc-user-login-name)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
709 (if (or (eq (vc-checkout-model file) 'locking)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
710 workfile-is-latest
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
711 (vc-rcs-latest-on-branch-p file workfile-version))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
712 'edited
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
713 ;; Locking is not used for the file, but the owner does
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
714 ;; have a lock, and there is a higher version on the current
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
715 ;; branch. Not sure if this can occur, and if it is right
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
716 ;; to use `needs-merge' in this case.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
717 'needs-merge))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
718 ;; locked by somebody else
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
719 ((stringp locking-user)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
720 locking-user)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
721 (t
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
722 (error "Error getting state of RCS file")))))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
723
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
724 (defun vc-rcs-consult-headers (file)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
725 "Search for RCS headers in FILE, and set properties accordingly.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
726
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
727 Returns: nil if no headers were found
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
728 'rev if a workfile revision was found
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
729 'rev-and-lock if revision and lock info was found"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
730 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
731 ((not (get-file-buffer file)) nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
732 ((let (status version locking-user)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
733 (save-excursion
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
734 (set-buffer (get-file-buffer file))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
735 (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
736 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
737 ;; search for $Id or $Header
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
738 ;; -------------------------
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
739 ;; The `\ 's below avoid an RCS 5.7 bug when checking in this file.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
740 ((or (and (search-forward "$Id\ : " nil t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
741 (looking-at "[^ ]+ \\([0-9.]+\\) "))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
742 (and (progn (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
743 (search-forward "$Header\ : " nil t))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
744 (looking-at "[^ ]+ \\([0-9.]+\\) ")))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
745 (goto-char (match-end 0))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
746 ;; if found, store the revision number ...
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
747 (setq version (match-string-no-properties 1))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
748 ;; ... and check for the locking state
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
749 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
750 ((looking-at
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
751 (concat "[0-9]+[/-][01][0-9][/-][0-3][0-9] " ; date
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
752 "[0-2][0-9]:[0-5][0-9]+:[0-6][0-9]+\\([+-][0-9:]+\\)? " ; time
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
753 "[^ ]+ [^ ]+ ")) ; author & state
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
754 (goto-char (match-end 0)) ; [0-6] in regexp handles leap seconds
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
755 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
756 ;; unlocked revision
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
757 ((looking-at "\\$")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
758 (setq locking-user 'none)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
759 (setq status 'rev-and-lock))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
760 ;; revision is locked by some user
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
761 ((looking-at "\\([^ ]+\\) \\$")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
762 (setq locking-user (match-string-no-properties 1))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
763 (setq status 'rev-and-lock))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
764 ;; everything else: false
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
765 (nil)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
766 ;; unexpected information in
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
767 ;; keyword string --> quit
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
768 (nil)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
769 ;; search for $Revision
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
770 ;; --------------------
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
771 ((re-search-forward (concat "\\$"
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
772 "Revision: \\([0-9.]+\\) \\$")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
773 nil t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
774 ;; if found, store the revision number ...
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
775 (setq version (match-string-no-properties 1))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
776 ;; and see if there's any lock information
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
777 (goto-char (point-min))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
778 (if (re-search-forward (concat "\\$" "Locker:") nil t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
779 (cond ((looking-at " \\([^ ]+\\) \\$")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
780 (setq locking-user (match-string-no-properties 1))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
781 (setq status 'rev-and-lock))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
782 ((looking-at " *\\$")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
783 (setq locking-user 'none)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
784 (setq status 'rev-and-lock))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
785 (t
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
786 (setq locking-user 'none)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
787 (setq status 'rev-and-lock)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
788 (setq status 'rev)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
789 ;; else: nothing found
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
790 ;; -------------------
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
791 (t nil)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
792 (if status (vc-file-setprop file 'vc-workfile-version version))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
793 (and (eq status 'rev-and-lock)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
794 (vc-file-setprop file 'vc-state
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
795 (cond
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
796 ((eq locking-user 'none) 'up-to-date)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
797 ((string= locking-user (vc-user-login-name)) 'edited)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
798 (t locking-user)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
799 ;; If the file has headers, we don't want to query the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
800 ;; master file, because that would eliminate all the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
801 ;; performance gain the headers brought us. We therefore
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
802 ;; use a heuristic now to find out whether locking is used
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
803 ;; for this file. If we trust the file permissions, and the
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
804 ;; file is not locked, then if the file is read-only we
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
805 ;; assume that locking is used for the file, otherwise
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
806 ;; locking is not used.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
807 (not (vc-mistrust-permissions file))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
808 (vc-up-to-date-p file)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
809 (if (string-match ".r-..-..-." (nth 8 (file-attributes file)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
810 (vc-file-setprop file 'vc-checkout-model 'locking)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
811 (vc-file-setprop file 'vc-checkout-model 'implicit)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
812 status))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
813
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
814 (defun vc-release-greater-or-equal (r1 r2)
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
815 "Compare release numbers, represented as strings.
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
816 Release components are assumed cardinal numbers, not decimal fractions
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
817 \(5.10 is a higher release than 5.9\). Omitted fields are considered
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
818 lower \(5.6.7 is earlier than 5.6.7.1\). Comparison runs till the end
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
819 of the string is found, or a non-numeric component shows up \(5.6.7 is
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
820 earlier than \"5.6.7 beta\", which is probably not what you want in
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
821 some cases\). This code is suitable for existing RCS release numbers.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
822 CVS releases are handled reasonably, too \(1.3 < 1.4* < 1.5\)."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
823 (let (v1 v2 i1 i2)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
824 (catch 'done
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
825 (or (and (string-match "^\\.?\\([0-9]+\\)" r1)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
826 (setq i1 (match-end 0))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
827 (setq v1 (string-to-number (match-string 1 r1)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
828 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
829 (setq i2 (match-end 0))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
830 (setq v2 (string-to-number (match-string 1 r2)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
831 (if (> v1 v2) (throw 'done t)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
832 (if (< v1 v2) (throw 'done nil)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
833 (throw 'done
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
834 (vc-release-greater-or-equal
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
835 (substring r1 i1)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
836 (substring r2 i2)))))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
837 (throw 'done t)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
838 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
839 (throw 'done nil))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
840 (throw 'done t)))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
841
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
842 (defun vc-rcs-release-p (release)
31476
18bf0c070870 Doc fixes.
Dave Love <fx@gnu.org>
parents: 31404
diff changeset
843 "Return t if we have RELEASE or better."
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
844 (let ((installation (vc-rcs-system-release)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
845 (if (and installation
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
846 (not (eq installation 'unknown)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
847 (vc-release-greater-or-equal installation release))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
848
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
849
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
850 (defun vc-rcs-system-release ()
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
851 "Return the RCS release installed on this system, as a string.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
852 Return symbol UNKNOWN if the release cannot be deducted. The user can
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
853 override this using variable `vc-rcs-release'.
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
854
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
855 If the user has not set variable `vc-rcs-release' and it is nil,
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
856 variable `vc-rcs-release' is set to the returned value."
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
857 (or vc-rcs-release
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
858 (setq vc-rcs-release
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
859 (or (and (zerop (vc-do-command nil nil "rcs" nil "-V"))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
860 (with-current-buffer (get-buffer "*vc*")
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
861 (vc-parse-buffer "^RCS version \\([0-9.]+ *.*\\)" 1)))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
862 'unknown))))
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
863
31809
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
864 (defun vc-rcs-set-non-strict-locking (file)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
865 (vc-do-command nil 0 "rcs" file "-U")
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
866 (vc-file-setprop file 'vc-checkout-model 'implicit)
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
867 (set-file-modes file (logior (file-modes file) 128)))
a2c432c6b343 (vc-rcs-workfile-is-newer): New function.
André Spiegel <spiegel@gnu.org>
parents: 31520
diff changeset
868
32094
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
869 (defun vc-rcs-set-default-branch (file branch)
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
870 (vc-do-command nil 0 "rcs" (vc-name file) (concat "-b" branch))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
871 (vc-file-setprop file 'vc-rcs-default-branch branch))
027fb880735d (vc-rcs-fetch-master-state): Parse and remember default branch
André Spiegel <spiegel@gnu.org>
parents: 32058
diff changeset
872
31383
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
873 (provide 'vc-rcs)
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
874
860d7ac182e3 (vc-rcs-show-log-entry): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
875 ;;; vc-rcs.el ends here