annotate lisp/vc.el @ 21064:90bdbe2754c8

(Fformat): Format multibyte characters by "%c" correctly. Handle padding for multibyte characters correctly.
author Kenichi Handa <handa@m17n.org>
date Wed, 04 Mar 1998 07:41:41 +0000
parents 9a6179e6eff6
children fcf0d1459d81
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; vc.el --- drive a version-control system from within Emacs
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
16821
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
5 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
6 ;; Maintainer: Andre Spiegel <spiegel@inf.fu-berlin.de>
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
8 ;; $Id: vc.el,v 1.208.1.1 1998/02/27 18:28:44 spiegel Exp $
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
9
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; any later version.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
25 ;; Boston, MA 02111-1307, USA.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
29 ;; This mode is fully documented in the Emacs user's manual.
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
30 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; This was designed and implemented by Eric Raymond <esr@snark.thyrsus.com>.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; Paul Eggert <eggert@twinsun.com>, Sebastian Kremer <sk@thp.uni-koeln.de>,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33 ;; and Richard Stallman contributed valuable criticism, support, and testing.
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
34 ;; CVS support was added by Per Cederqvist <ceder@lysator.liu.se>
16821
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
35 ;; in Jan-Feb 1994. Further enhancements came from ttn.netcom.com and
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
36 ;; Andre Spiegel <spiegel@inf.fu-berlin.de>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 ;;
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
38 ;; Supported version-control systems presently include SCCS, RCS, and CVS.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
39 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
40 ;; Some features will not work with old RCS versions. Where
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
41 ;; appropriate, VC finds out which version you have, and allows or
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
42 ;; disallows those features (stealing locks, for example, works only
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
43 ;; from 5.6.2 onwards).
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
44 ;; Even initial checkins will fail if your RCS version is so old that ci
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
45 ;; doesn't understand -t-; this has been known to happen to people running
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
46 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;
12926
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
48 ;; You can support the RCS -x option by adding pairs to the
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
49 ;; vc-master-templates list.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
54 ;; If your site uses the ChangeLog convention supported by Emacs, the
2464
667050db93ca (vc-comment-to-change-log): Renamed from vc-comment-to-changelog.
Roland McGrath <roland@gnu.org>
parents: 2419
diff changeset
55 ;; function vc-comment-to-change-log should prove a useful checkin hook.
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
56 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;; This code depends on call-process passing back the subprocess exit
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
58 ;; status. Thus, you need Emacs 18.58 or later to run it. For the
2691
be85636d8b6e (vc-directory-18): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2667
diff changeset
59 ;; vc-directory command to work properly as documented, you need 19.
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
60 ;; You also need Emacs 19's ring.el.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;; The vc code maintains some internal state in order to reduce expensive
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 ;; version-control operations to a minimum. Some names are only computed
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
64 ;; once. If you perform version control operations with RCS/SCCS/CVS while
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;; vc's back is turned, or move/rename master files while vc is running,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;; Developer's notes on some concurrency issues are included at the end of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ;; the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 (require 'vc-hooks)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
74 (require 'ring)
8290
f95e050e272f At compile time, require dired.
Richard M. Stallman <rms@gnu.org>
parents: 8237
diff changeset
75 (eval-when-compile (require 'dired)) ; for dired-map-over-marks macro
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
76
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
77 (if (not (assoc 'vc-parent-buffer minor-mode-alist))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
78 (setq minor-mode-alist
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
79 (cons '(vc-parent-buffer vc-parent-buffer-name)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
80 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81
12280
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
82 ;; To implement support for a new version-control system, add another
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
83 ;; branch to the vc-backend-dispatch macro and fill it in in each
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
84 ;; call. The variable vc-master-templates in vc-hooks.el will also
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
85 ;; have to change.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
86
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
87 (defmacro vc-backend-dispatch (f s r c)
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
88 "Execute FORM1, FORM2 or FORM3 for SCCS, RCS or CVS respectively.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
89 If FORM3 is `RCS', use FORM2 for CVS as well as RCS.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
90 \(CVS shares some code with RCS)."
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
91 (list 'let (list (list 'type (list 'vc-backend f)))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
92 (list 'cond
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
93 (list (list 'eq 'type (quote 'SCCS)) s) ;; SCCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
94 (list (list 'eq 'type (quote 'RCS)) r) ;; RCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
95 (list (list 'eq 'type (quote 'CVS)) ;; CVS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
96 (if (eq c 'RCS) r c))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
97 )))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
98
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
100
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
101 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
102 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
103 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
104
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
105 (defcustom vc-suppress-confirm nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
106 "*If non-nil, treat user as expert; suppress yes-no prompts on some things."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
107 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
108 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
109
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
110 (defcustom vc-initial-comment nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
111 "*If non-nil, prompt for initial comment when a file is registered."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
112 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
113 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
114
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
115 (defcustom vc-default-init-version "1.1"
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
116 "*A string used as the default version number when a new file is registered.
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
117 This can be overriden by giving a prefix argument to \\[vc-register]."
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
118 :type 'string
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
119 :group 'vc)
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
120
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
121 (defcustom vc-command-messages nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
122 "*If non-nil, display run messages from back-end commands."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
123 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
124 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
125
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
126 (defcustom vc-checkin-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
127 "*A string or list of strings specifying extra switches for checkin.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
128 These are passed to the checkin program by \\[vc-checkin]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
129 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
130 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
131 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
132 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
133 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
134 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
135
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
136 (defcustom vc-checkout-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
137 "*A string or list of strings specifying extra switches for checkout.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
138 These are passed to the checkout program by \\[vc-checkout]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
139 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
140 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
141 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
142 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
143 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
144 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
145
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
146 (defcustom vc-register-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
147 "*A string or list of strings; extra switches for registering a file.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
148 These are passed to the checkin program by \\[vc-register]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
149 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
150 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
151 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
152 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
153 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
154 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
155
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
156 (defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
157 "*List of directory names to be ignored while recursively walking file trees."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
158 :type '(repeat string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
159 :group 'vc)
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
160
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
161 (defconst vc-maximum-comment-ring-size 32
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
162 "Maximum number of saved comments in the comment ring.")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
163
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
164 ;;; This is duplicated in diff.el.
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
165 (defvar diff-switches "-c"
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
166 "*A string or list of strings specifying switches to be be passed to diff.")
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
167
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
168 (defcustom vc-annotate-color-map
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
169 '(( 26.3672 . "#FF0000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
170 ( 52.7344 . "#FF3800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
171 ( 79.1016 . "#FF7000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
172 (105.4688 . "#FFA800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
173 (131.8359 . "#FFE000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
174 (158.2031 . "#E7FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
175 (184.5703 . "#AFFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
176 (210.9375 . "#77FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
177 (237.3047 . "#3FFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
178 (263.6719 . "#07FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
179 (290.0391 . "#00FF31")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
180 (316.4063 . "#00FF69")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
181 (342.7734 . "#00FFA1")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
182 (369.1406 . "#00FFD9")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
183 (395.5078 . "#00EEFF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
184 (421.8750 . "#00B6FF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
185 (448.2422 . "#007EFF"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
186 "*Association list of age versus color, for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
187 Ages are given in units of 2**-16 seconds.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
188 Default is eighteen steps using a twenty day increment."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
189 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
190 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
191
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
192 (defcustom vc-annotate-very-old-color "#0046FF"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
193 "*Color for lines older than CAR of last cons in `vc-annotate-color-map'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
194 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
195 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
196
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
197 (defcustom vc-annotate-background "black"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
198 "*Background color for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
199 Default color is used if nil."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
200 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
201 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
202
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
203 (defcustom vc-annotate-menu-elements '(2 0.5 0.1 0.01)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
204 "*Menu elements for the mode-specific menu of VC-Annotate mode.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
205 List of factors, used to expand/compress the time scale. See `vc-annotate'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
206 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
207 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
208
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
209 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
210 (defcustom vc-checkin-hook nil
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
211 "*Normal hook (list of functions) run after a checkin is done.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
212 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
213 :type 'hook
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
214 :options '(vc-comment-to-change-log)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
215 :group 'vc)
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
216
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
217 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
218 (defcustom vc-before-checkin-hook nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
219 "*Normal hook (list of functions) run before a file gets checked in.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
220 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
221 :type 'hook
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
222 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
223
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
224 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
225 (defcustom vc-annotate-mode-hook nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
226 "*Hooks to run when VC-Annotate mode is turned on."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
227 :type 'hook
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
228 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
229
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
230 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
231
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
232 (defcustom vc-header-alist
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
233 '((SCCS "\%W\%") (RCS "\$Id\$") (CVS "\$Id\$"))
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
234 "*Header keywords to be inserted by `vc-insert-headers'.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
235 Must be a list of two-element lists, the first element of each must
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
236 be `RCS', `CVS', or `SCCS'. The second element is the string to
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
237 be inserted for this particular backend."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
238 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
239 (choice :tag "System"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
240 (const SCCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
241 (const RCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
242 (const CVS))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
243 (string :tag "Header")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
244 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
245
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
246 (defcustom vc-static-header-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
247 '(("\\.c$" .
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
248 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
249 "*Associate static header string templates with file types. A \%s in the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
250 template is replaced with the first string associated with the file's
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
251 version-control type in `vc-header-alist'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
252 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
253 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
254 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
255 :group 'vc)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
256
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
257 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
258 '((nroff-mode ".\\\"" ""))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
259 "*Special comment delimiters to be used in generating vc headers only.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
260 Add an entry in this list if you need to override the normal comment-start
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
261 and comment-end variables. This will only be necessary if the mode language
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
262 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
263 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
264 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
265 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
266 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
267 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
268
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
269 ;; Default is to be extra careful for super-user.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
270 (defcustom vc-checkout-carefully (= (user-uid) 0)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
271 "*Non-nil means be extra-careful in checkout.
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
272 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
273 and that its contents match what the master file says."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
274 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
275 :group 'vc)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
276
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
277 (defcustom vc-rcs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
278 "*The release number of your RCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
279 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
280 :type '(choice (const :tag "Auto" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
281 string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
282 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
283
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
284 (defcustom vc-sccs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
285 "*The release number of your SCCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
286 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
287 :type '(choice (const :tag "Auto" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
288 string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
289 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
290
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
291 (defcustom vc-cvs-release nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
292 "*The release number of your CVS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
293 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
294 :type '(choice (const :tag "Auto" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
295 string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
296 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
297
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
298 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
299 (defvar vc-log-entry-mode nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
300 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
301 (defvar vc-log-after-operation-hook nil)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
302 (defvar vc-checkout-writable-buffer-hook 'vc-checkout-writable-buffer)
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
303 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
304 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
305 ;; (either a file, or a VC dired buffer).
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
306 (defvar vc-parent-buffer nil)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
307 (defvar vc-parent-buffer-name nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
308
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
309 (defvar vc-log-file)
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
310 (defvar vc-log-version)
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
311
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
312 (defconst vc-name-assoc-file "VC-names")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
313
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
314 (defvar vc-dired-mode nil)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
315 (make-variable-buffer-local 'vc-dired-mode)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
316
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
317 (defvar vc-comment-ring (make-ring vc-maximum-comment-ring-size))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
318 (defvar vc-comment-ring-index nil)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
319 (defvar vc-last-comment-match nil)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
320
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
321 ;; Back-portability to Emacs 18
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
322
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
323 (defun file-executable-p-18 (f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
324 (let ((modes (file-modes f)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
325 (and modes (not (zerop (logand 292))))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
326
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
327 (defun file-regular-p-18 (f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
328 (let ((attributes (file-attributes f)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
329 (and attributes (not (car attributes)))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
330
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
331 ; Conditionally rebind some things for Emacs 18 compatibility
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
332 (if (not (boundp 'minor-mode-map-alist))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
333 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
334 (setq compilation-old-error-list nil)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
335 (fset 'file-executable-p 'file-executable-p-18)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
336 (fset 'shrink-window-if-larger-than-buffer 'beginning-of-buffer)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
337 ))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
338
12897
ee3f21f562b8 (file-regular-p-18): Fix test for whether to use this.
Richard M. Stallman <rms@gnu.org>
parents: 12885
diff changeset
339 (if (not (fboundp 'file-regular-p))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
340 (fset 'file-regular-p 'file-regular-p-18))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
341
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
342 ;;; Find and compare backend releases
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
343
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
344 (defun vc-backend-release (backend)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
345 ;; Returns which backend release is installed on this system.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
346 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
347 ((eq backend 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
348 (or vc-rcs-release
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
349 (and (zerop (vc-do-command nil nil "rcs" nil nil "-V"))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
350 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
351 (set-buffer (get-buffer "*vc*"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
352 (setq vc-rcs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
353 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
354 '(("^RCS version \\([0-9.]+ *.*\\)" 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
355 (setq vc-rcs-release 'unknown)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
356 ((eq backend 'CVS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
357 (or vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
358 (and (zerop (vc-do-command nil 1 "cvs" nil nil "-v"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
359 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
360 (set-buffer (get-buffer "*vc*"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
361 (setq vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
362 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
363 '(("^Concurrent Versions System (CVS) \\([0-9.]+\\)"
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
364 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
365 (setq vc-cvs-release 'unknown)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
366 ((eq backend 'SCCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
367 vc-sccs-release)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
368
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
369 (defun vc-release-greater-or-equal (r1 r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
370 ;; Compare release numbers, represented as strings.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
371 ;; Release components are assumed cardinal numbers, not decimal
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
372 ;; fractions (5.10 is a higher release than 5.9). Omitted fields
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
373 ;; are considered lower (5.6.7 is earlier than 5.6.7.1).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
374 ;; Comparison runs till the end of the string is found, or a
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
375 ;; non-numeric component shows up (5.6.7 is earlier than "5.6.7 beta",
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
376 ;; which is probably not what you want in some cases).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
377 ;; This code is suitable for existing RCS release numbers.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
378 ;; CVS releases are handled reasonably, too (1.3 < 1.4* < 1.5).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
379 (let (v1 v2 i1 i2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
380 (catch 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
381 (or (and (string-match "^\\.?\\([0-9]+\\)" r1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
382 (setq i1 (match-end 0))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
383 (setq v1 (string-to-number (match-string 1 r1)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
384 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
385 (setq i2 (match-end 0))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
386 (setq v2 (string-to-number (match-string 1 r2)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
387 (if (> v1 v2) (throw 'done t)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
388 (if (< v1 v2) (throw 'done nil)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
389 (throw 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
390 (vc-release-greater-or-equal
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
391 (substring r1 i1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
392 (substring r2 i2)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
393 (throw 'done t)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
394 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
395 (throw 'done nil))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
396 (throw 'done t)))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
397
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
398 (defun vc-backend-release-p (backend release)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
399 ;; Return t if we have RELEASE of BACKEND or better
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
400 (let (i r (ri 0) (ii 0) is rs (installation (vc-backend-release backend)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
401 (if (not (eq installation 'unknown))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
402 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
403 ((or (eq backend 'RCS) (eq backend 'CVS))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
404 (vc-release-greater-or-equal installation release))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
405
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
406 ;;; functions that operate on RCS revision numbers
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
407
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
408 (defun vc-trunk-p (rev)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
409 ;; return t if REV is a revision on the trunk
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
410 (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
411
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
412 (defun vc-branch-part (rev)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
413 ;; return the branch part of a revision number REV
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
414 (substring rev 0 (string-match "\\.[0-9]+\\'" rev)))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
415
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
416 (defun vc-minor-part (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
417 ;; return the minor version number of a revision number REV
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
418 (string-match "[0-9]+\\'" rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
419 (substring rev (match-beginning 0) (match-end 0)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
420
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
421 (defun vc-previous-version (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
422 ;; guess the previous version number
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
423 (let ((branch (vc-branch-part rev))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
424 (minor-num (string-to-number (vc-minor-part rev))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
425 (if (> minor-num 1)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
426 ;; version does probably not start a branch or release
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
427 (concat branch "." (number-to-string (1- minor-num)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
428 (if (vc-trunk-p rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
429 ;; we are at the beginning of the trunk --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
430 ;; don't know anything to return here
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
431 ""
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
432 ;; we are at the beginning of a branch --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
433 ;; return version of starting point
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
434 (vc-branch-part branch)))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
435
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
436 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
437
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
438 (defun vc-clear-context ()
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
439 "Clear all cached file properties and the comment ring."
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
440 (interactive)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
441 (fillarray vc-file-prop-obarray nil)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
442 ;; Note: there is potential for minor lossage here if there is an open
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
443 ;; log buffer with a nonzero local value of vc-comment-ring-index.
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
444 (setq vc-comment-ring (make-ring vc-maximum-comment-ring-size)))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
445
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
446 (defun vc-file-clear-masterprops (file)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
447 ;; clear all properties of FILE that were retrieved
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
448 ;; from the master file
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
449 (vc-file-setprop file 'vc-latest-version nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
450 (vc-file-setprop file 'vc-your-latest-version nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
451 (vc-backend-dispatch file
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
452 (progn ;; SCCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
453 (vc-file-setprop file 'vc-master-locks nil))
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
454 (progn ;; RCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
455 (vc-file-setprop file 'vc-default-branch nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
456 (vc-file-setprop file 'vc-head-version nil)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
457 (vc-file-setprop file 'vc-master-workfile-version nil)
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
458 (vc-file-setprop file 'vc-master-locks nil))
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
459 (progn
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
460 (vc-file-setprop file 'vc-cvs-status nil))))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
461
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
462 (defun vc-head-version (file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
463 ;; Return the RCS head version of FILE
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
464 (cond ((vc-file-getprop file 'vc-head-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
465 (t (vc-fetch-master-properties file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
466 (vc-file-getprop file 'vc-head-version))))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
467
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
468 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
469
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
470 (defun vc-latest-on-branch-p (file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
471 ;; return t iff the current workfile version of FILE is
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
472 ;; the latest on its branch.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
473 (vc-backend-dispatch file
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
474 ;; SCCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
475 (string= (vc-workfile-version file) (vc-latest-version file))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
476 ;; RCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
477 (let ((workfile-version (vc-workfile-version file)) tip-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
478 (if (vc-trunk-p workfile-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
479 (progn
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
480 ;; Re-fetch the head version number. This is to make
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
481 ;; sure that no-one has checked in a new version behind
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
482 ;; our back.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
483 (vc-fetch-master-properties file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
484 (string= (vc-file-getprop file 'vc-head-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
485 workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
486 ;; If we are not on the trunk, we need to examine the
12875
33a7a6329aa5 Changed references to vc-top-version into vc-master-workfile-version.
André Spiegel <spiegel@gnu.org>
parents: 12873
diff changeset
487 ;; whole current branch. (vc-master-workfile-version
33a7a6329aa5 Changed references to vc-top-version into vc-master-workfile-version.
André Spiegel <spiegel@gnu.org>
parents: 12873
diff changeset
488 ;; is not what we need.)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
489 (save-excursion
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
490 (set-buffer (get-buffer-create "*vc-info*"))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
491 (vc-insert-file (vc-name file) "^desc")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
492 (setq tip-version (car (vc-parse-buffer (list (list
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
493 (concat "^\\(" (regexp-quote (vc-branch-part workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
494 "\\.[0-9]+\\)\ndate[ \t]+\\([0-9.]+\\);") 1 2)))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
495 (if (get-buffer "*vc-info*")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
496 (kill-buffer (get-buffer "*vc-info*")))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
497 (string= tip-version workfile-version))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
498 ;; CVS
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
499 t))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
500
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
501 (defun vc-registration-error (file)
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
502 (if file
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
503 (error "File %s is not under version control" file)
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
504 (error "Buffer %s is not associated with a file" (buffer-name))))
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
505
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
506 (defvar vc-binary-assoc nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
507
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
508 (defun vc-find-binary (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
509 "Look for a command anywhere on the subprocess-command search path."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
510 (or (cdr (assoc name vc-binary-assoc))
4791
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
511 (catch 'found
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
512 (mapcar
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
513 (function
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
514 (lambda (s)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
515 (if s
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
516 (let ((full (concat s "/" name)))
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
517 (if (file-executable-p full)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
518 (progn
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
519 (setq vc-binary-assoc
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
520 (cons (cons name full) vc-binary-assoc))
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
521 (throw 'found full)))))))
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
522 exec-path)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
523 nil)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
524
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
525 (defun vc-do-command (buffer okstatus command file last &rest flags)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
526 "Execute a version-control command, notifying user and checking for errors.
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
527 Output from COMMAND goes to BUFFER, or *vc* if BUFFER is nil.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
528 The command is successful if its exit status does not exceed OKSTATUS.
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
529 (If OKSTATUS is nil, that means to ignore errors.)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
530 The last argument of the command is the master name of FILE if LAST is
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
531 `MASTER', or the workfile of FILE if LAST is `WORKFILE'; this is appended
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
532 to an optional list of FLAGS."
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
533 (and file (setq file (expand-file-name file)))
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
534 (if (not buffer) (setq buffer "*vc*"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
535 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
536 (message "Running %s on %s..." command file))
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
537 (let ((obuf (current-buffer)) (camefrom (current-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
538 (squeezed nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
539 (vc-file (and file (vc-name file)))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
540 (olddir default-directory)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
541 status)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
542 (set-buffer (get-buffer-create buffer))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
543 (set (make-local-variable 'vc-parent-buffer) camefrom)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
544 (set (make-local-variable 'vc-parent-buffer-name)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
545 (concat " from " (buffer-name camefrom)))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
546 (setq default-directory olddir)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
547
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
548 (erase-buffer)
1674
75e8a7f920c7 * vc.el (vc-do-command): Set the default directory of the *vc*
Jim Blandy <jimb@redhat.com>
parents: 1636
diff changeset
549
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
550 (mapcar
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
551 (function (lambda (s) (and s (setq squeezed (append squeezed (list s))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
552 flags)
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
553 (if (and vc-file (eq last 'MASTER))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
554 (setq squeezed (append squeezed (list vc-file))))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
555 (if (eq last 'WORKFILE)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
556 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
557 (let* ((pwd (expand-file-name default-directory))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
558 (preflen (length pwd)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
559 (if (string= (substring file 0 preflen) pwd)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
560 (setq file (substring file preflen))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
561 (setq squeezed (append squeezed (list file)))))
10862
b905092475a7 (vc-do-command): Search vc-path first, not last.
Richard M. Stallman <rms@gnu.org>
parents: 10786
diff changeset
562 (let ((exec-path (append vc-path exec-path))
8726
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
563 ;; Add vc-path to PATH for the execution of this command.
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
564 (process-environment
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
565 (cons (concat "PATH=" (getenv "PATH")
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
566 path-separator
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
567 (mapconcat 'identity vc-path path-separator))
15787
d5dd4b891c3e (vc-do-command): Bind win32-quote-process-args.
Richard M. Stallman <rms@gnu.org>
parents: 15336
diff changeset
568 process-environment))
16590
a0cfcb9f8033 Use w32 instead of ms-windows for window-system symbol
Geoff Voelker <voelker@cs.washington.edu>
parents: 16529
diff changeset
569 (w32-quote-process-args t))
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
570 (setq status (apply 'call-process command nil t nil squeezed)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
571 (goto-char (point-max))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
572 (set-buffer-modified-p nil)
4770
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
573 (forward-line -1)
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
574 (if (or (not (integerp status)) (and okstatus (< okstatus status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
575 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
576 (pop-to-buffer buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
577 (goto-char (point-min))
4362
2c0ac46d5d5b (vc-shrink-to-fit): Deleted. All callers changed to use
Richard M. Stallman <rms@gnu.org>
parents: 4281
diff changeset
578 (shrink-window-if-larger-than-buffer)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
579 (error "Running %s...FAILED (%s)" command
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
580 (if (integerp status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
581 (format "status %d" status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
582 status))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
583 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
584 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
585 (message "Running %s...OK" command))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
586 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
587 (set-buffer obuf)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
588 status)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
589 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
590
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
591 ;;; Save a bit of the text around POSN in the current buffer, to help
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
592 ;;; us find the corresponding position again later. This works even
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
593 ;;; if all markers are destroyed or corrupted.
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
594 ;;; A lot of this was shamelessly lifted from Sebastian Kremer's rcs.el mode.
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
595 (defun vc-position-context (posn)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
596 (list posn
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
597 (buffer-size)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
598 (buffer-substring posn
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
599 (min (point-max) (+ posn 100)))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
600
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
601 ;;; Return the position of CONTEXT in the current buffer, or nil if we
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
602 ;;; couldn't find it.
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
603 (defun vc-find-position-by-context (context)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
604 (let ((context-string (nth 2 context)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
605 (if (equal "" context-string)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
606 (point-max)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
607 (save-excursion
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
608 (let ((diff (- (nth 1 context) (buffer-size))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
609 (if (< diff 0) (setq diff (- diff)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
610 (goto-char (nth 0 context))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
611 (if (or (search-forward context-string nil t)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
612 ;; Can't use search-backward since the match may continue
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
613 ;; after point.
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
614 (progn (goto-char (- (point) diff (length context-string)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
615 ;; goto-char doesn't signal an error at
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
616 ;; beginning of buffer like backward-char would
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
617 (search-forward context-string nil t)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
618 ;; to beginning of OSTRING
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
619 (- (point) (length context-string))))))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
620
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
621 (defun vc-buffer-context ()
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
622 ;; Return a list '(point-context mark-context reparse); from which
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
623 ;; vc-restore-buffer-context can later restore the context.
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
624 (let ((point-context (vc-position-context (point)))
2041
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
625 ;; Use mark-marker to avoid confusion in transient-mark-mode.
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
626 (mark-context (if (eq (marker-buffer (mark-marker)) (current-buffer))
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
627 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
628 ;; Make the right thing happen in transient-mark-mode.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
629 (mark-active nil)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
630 ;; We may want to reparse the compilation buffer after revert
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
631 (reparse (and (boundp 'compilation-error-list) ;compile loaded
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
632 (let ((curbuf (current-buffer)))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
633 ;; Construct a list; each elt is nil or a buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
634 ;; iff that buffer is a compilation output buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
635 ;; that contains markers into the current buffer.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
636 (save-excursion
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
637 (mapcar (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
638 (lambda (buffer)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
639 (set-buffer buffer)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
640 (let ((errors (or
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
641 compilation-old-error-list
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
642 compilation-error-list))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
643 (buffer-error-marked-p nil))
2774
ea8a7ab72d14 (vc-revert-buffer1): Don't assume that compilation-error-list
Richard M. Stallman <rms@gnu.org>
parents: 2769
diff changeset
644 (while (and (consp errors)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
645 (not buffer-error-marked-p))
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
646 (and (markerp (cdr (car errors)))
2604
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
647 (eq buffer
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
648 (marker-buffer
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
649 (cdr (car errors))))
2604
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
650 (setq buffer-error-marked-p t))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
651 (setq errors (cdr errors)))
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
652 (if buffer-error-marked-p buffer))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
653 (buffer-list)))))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
654 (list point-context mark-context reparse)))
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
655
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
656 (defun vc-restore-buffer-context (context)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
657 ;; Restore point/mark, and reparse any affected compilation buffers.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
658 ;; CONTEXT is that which vc-buffer-context returns.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
659 (let ((point-context (nth 0 context))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
660 (mark-context (nth 1 context))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
661 (reparse (nth 2 context)))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
662 ;; Reparse affected compilation buffers.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
663 (while reparse
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
664 (if (car reparse)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
665 (save-excursion
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
666 (set-buffer (car reparse))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
667 (let ((compilation-last-buffer (current-buffer)) ;select buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
668 ;; Record the position in the compilation buffer of
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
669 ;; the last error next-error went to.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
670 (error-pos (marker-position
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
671 (car (car-safe compilation-error-list)))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
672 ;; Reparse the error messages as far as they were parsed before.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
673 (compile-reinitialize-errors '(4) compilation-parsing-end)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
674 ;; Move the pointer up to find the error we were at before
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
675 ;; reparsing. Now next-error should properly go to the next one.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
676 (while (and compilation-error-list
2558
78a9cebdb22c (vc-revert-buffer1): Typo fix in last change.
Roland McGrath <roland@gnu.org>
parents: 2555
diff changeset
677 (/= error-pos (car (car compilation-error-list))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
678 (setq compilation-error-list (cdr compilation-error-list))))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
679 (setq reparse (cdr reparse)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
680
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
681 ;; Restore point and mark
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
682 (let ((new-point (vc-find-position-by-context point-context)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
683 (if new-point (goto-char new-point)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
684 (if mark-context
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
685 (let ((new-mark (vc-find-position-by-context mark-context)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
686 (if new-mark (set-mark new-mark))))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
687
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
688 (defun vc-revert-buffer1 (&optional arg no-confirm)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
689 ;; Revert buffer, try to keep point and mark where user expects them in spite
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
690 ;; of changes because of expanded version-control key words.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
691 ;; This is quite important since otherwise typeahead won't work as expected.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
692 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
693 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
694 (let ((context (vc-buffer-context)))
13858
faf3e1b6f976 (vc-revert-buffer1): Pass t as preserve-modes to revert-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 13852
diff changeset
695 ;; t means don't call normal-mode; that's to preserve various minor modes.
faf3e1b6f976 (vc-revert-buffer1): Pass t as preserve-modes to revert-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 13852
diff changeset
696 (revert-buffer arg no-confirm t)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
697 (vc-restore-buffer-context context)))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
698
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
699
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
700 (defun vc-buffer-sync (&optional not-urgent)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
701 ;; Make sure the current buffer and its working file are in sync
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
702 ;; NOT-URGENT means it is ok to continue if the user says not to save.
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
703 (if (buffer-modified-p)
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
704 (if (or vc-suppress-confirm
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
705 (y-or-n-p (format "Buffer %s modified; save it? " (buffer-name))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
706 (save-buffer)
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
707 (if not-urgent
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
708 nil
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
709 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
710
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
711
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
712 (defun vc-workfile-unchanged-p (file &optional want-differences-if-changed)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
713 ;; Has the given workfile changed since last checkout?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
714 (let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
715 (lastmod (nth 5 (file-attributes file))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
716 (or (equal checkout-time lastmod)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
717 (and (or (not checkout-time) want-differences-if-changed)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
718 (let ((unchanged (zerop (vc-backend-diff file nil nil
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
719 (not want-differences-if-changed)))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
720 ;; 0 stands for an unknown time; it can't match any mod time.
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
721 (vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0))
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
722 unchanged)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
723
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
724 (defun vc-next-action-on-file (file verbose &optional comment)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
725 ;;; If comment is specified, it will be used as an admin or checkin comment.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
726 (let ((vc-file (vc-name file))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
727 (vc-type (vc-backend file))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
728 owner version buffer)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
729 (cond
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
730
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
731 ;; if there is no master file corresponding, create one
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
732 ((not vc-file)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
733 (vc-register verbose comment)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
734 (if vc-initial-comment
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
735 (setq vc-log-after-operation-hook
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
736 'vc-checkout-writable-buffer-hook)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
737 (vc-checkout-writable-buffer file)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
738
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
739 ;; CVS: changes to the master file need to be
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
740 ;; merged back into the working file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
741 ((and (eq vc-type 'CVS)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
742 (or (eq (vc-cvs-status file) 'needs-checkout)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
743 (eq (vc-cvs-status file) 'needs-merge)))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
744 (if (or vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
745 (yes-or-no-p
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
746 (format "%s is not up-to-date. Merge in changes now? "
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
747 (buffer-name))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
748 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
749 (if vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
750 (and (setq buffer (get-file-buffer file))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
751 (buffer-modified-p buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
752 (switch-to-buffer-other-window buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
753 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
754 (setq buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
755 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
756 (if (and buffer (buffer-modified-p buffer)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
757 (not (yes-or-no-p
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
758 (format
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
759 "Buffer %s modified; merge file on disc anyhow? "
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
760 (buffer-name buffer)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
761 (error "Merge aborted"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
762 (if (not (zerop (vc-backend-merge-news file)))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
763 ;; Overlaps detected - what now? Should use some
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
764 ;; fancy RCS conflict resolving package, or maybe
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
765 ;; emerge, but for now, simply warn the user with a
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
766 ;; message.
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
767 (message "Conflicts detected!"))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
768 (and buffer
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
769 (vc-resynch-buffer file t (not (buffer-modified-p buffer)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
770 (error "%s needs update" (buffer-name))))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
771
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
772 ;; For CVS files with implicit checkout: if unmodified, don't do anything
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
773 ((and (eq vc-type 'CVS)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
774 (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
775 (not (vc-locking-user file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
776 (not verbose))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
777 (message "%s is up to date" (buffer-name)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
778
17201
ac40292bd898 (vc-next-action-on-file): With implicit checkout, make
Richard M. Stallman <rms@gnu.org>
parents: 17135
diff changeset
779 ;; If there is no lock on the file, assert one and get it.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
780 ((not (setq owner (vc-locking-user file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
781 ;; With implicit checkout, make sure not to lose unsaved changes.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
782 (and (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
783 (buffer-modified-p buffer)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
784 (vc-buffer-sync))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
785 (if (and vc-checkout-carefully
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
786 (not (vc-workfile-unchanged-p file t)))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
787 (if (save-window-excursion
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
788 (pop-to-buffer "*vc-diff*")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
789 (goto-char (point-min))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
790 (insert-string (format "Changes to %s since last lock:\n\n"
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
791 file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
792 (not (beep))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
793 (yes-or-no-p
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
794 (concat "File has unlocked changes, "
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
795 "claim lock retaining changes? ")))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
796 (progn (vc-backend-steal file)
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
797 (vc-mode-line file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
798 (if (not (yes-or-no-p "Revert to checked-in version, instead? "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
799 (error "Checkout aborted")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
800 (vc-revert-buffer1 t t)
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
801 (vc-checkout-writable-buffer file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
802 )
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
803 (if verbose
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
804 (if (not (eq vc-type 'SCCS))
12876
fedbe59f374e (vc-next-action-on-file): Moved the setting of the default branch to
André Spiegel <spiegel@gnu.org>
parents: 12875
diff changeset
805 (vc-checkout file nil
fedbe59f374e (vc-next-action-on-file): Moved the setting of the default branch to
André Spiegel <spiegel@gnu.org>
parents: 12875
diff changeset
806 (read-string "Branch or version to move to: "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
807 (error "Sorry, this is not implemented for SCCS"))
12873
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
808 (if (vc-latest-on-branch-p file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
809 (vc-checkout-writable-buffer file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
810 (if (yes-or-no-p
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
811 "This is not the latest version. Really lock it? ")
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
812 (vc-checkout-writable-buffer file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
813 (if (yes-or-no-p "Lock the latest version instead? ")
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
814 (vc-checkout-writable-buffer file
13111
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
815 (if (vc-trunk-p (vc-workfile-version file))
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
816 "" ;; this means check out latest on trunk
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
817 (vc-branch-part (vc-workfile-version file)))))))
12873
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
818 )))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
819
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
820 ;; a checked-out version exists, but the user may not own the lock
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
821 ((and (not (eq vc-type 'CVS))
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
822 (not (string-equal owner (vc-user-login-name))))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
823 (if comment
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
824 (error "Sorry, you can't steal the lock on %s this way" file))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
825 (and (eq vc-type 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
826 (not (vc-backend-release-p 'RCS "5.6.2"))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
827 (error "File is locked by %s" owner))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
828 (vc-steal-lock
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
829 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
830 (if verbose (read-string "Version to steal: ")
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
831 (vc-workfile-version file))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
832 owner))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
833
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
834 ;; OK, user owns the lock on the file
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
835 (t
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
836 (if vc-dired-mode
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
837 (find-file-other-window file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
838 (find-file file))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
839
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
840 ;; give luser a chance to save before checking in.
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
841 (vc-buffer-sync)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
842
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
843 ;; Revert if file is unchanged and buffer is too.
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
844 ;; If buffer is modified, that means the user just said no
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
845 ;; to saving it; in that case, don't revert,
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
846 ;; because the user might intend to save
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
847 ;; after finishing the log entry.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
848 (if (and (vc-workfile-unchanged-p file)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
849 (not (buffer-modified-p)))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
850 ;; DO NOT revert the file without asking the user!
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
851 (cond
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
852 ((yes-or-no-p "Revert to master version? ")
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
853 (vc-backend-revert file)
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
854 (vc-resynch-window file t t)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
855
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
856 ;; user may want to set nonstandard parameters
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
857 (if verbose
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
858 (setq version (read-string "New version level: ")))
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
859
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
860 ;; OK, let's do the checkin
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
861 (vc-checkin file version comment)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
862 )))))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
863
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
864 (defun vc-next-action-dired (file rev comment)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
865 ;; Do a vc-next-action-on-file on all the marked files, possibly
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
866 ;; passing on the log comment we've just entered.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
867 (let ((configuration (current-window-configuration))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
868 (dired-buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
869 (dired-dir default-directory))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
870 (dired-map-over-marks
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
871 (let ((file (dired-get-filename)) p
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
872 (default-directory default-directory))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
873 (message "Processing %s..." file)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
874 ;; Adjust the default directory so that checkouts
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
875 ;; go to the right place.
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
876 (setq default-directory (file-name-directory file))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
877 (vc-next-action-on-file file nil comment)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
878 (set-buffer dired-buffer)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
879 (setq default-directory dired-dir)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
880 (vc-dired-update-line file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
881 (set-window-configuration configuration)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
882 (message "Processing %s...done" file))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
883 nil t)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
884
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
885 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
886
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
887 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
888 (defun vc-next-action (verbose)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
889 "Do the next logical checkin or checkout operation on the current file.
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
890 If you call this from within a VC dired buffer with no files marked,
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
891 it will operate on the file in the current line.
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
892 If you call this from within a VC dired buffer, and one or more
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
893 files are marked, it will accept a log message and then operate on
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
894 each one. The log message will be used as a comment for any register
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
895 or checkin operations, but ignored when doing checkouts. Attempted
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
896 lock steals will raise an error.
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
897 A prefix argument lets you specify the version number to use.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
898
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
899 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
900 If the file is not already registered, this registers it for version
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
901 control and then retrieves a writable, locked copy for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
902 If the file is registered and not locked by anyone, this checks out
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
903 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
904 If the file is checked out and locked by the calling user, this
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
905 first checks to see if the file has changed since checkout. If not,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
906 it performs a revert.
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
907 If the file has been changed, this pops up a buffer for entry
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
908 of a log message; when the message has been entered, it checks in the
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
909 resulting changes along with the log message as change commentary. If
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
910 the variable `vc-keep-workfiles' is non-nil (which is its default), a
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
911 read-only copy of the changed file is left in place afterwards.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
912 If the file is registered and locked by someone else, you are given
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
913 the option to steal the lock.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
914
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
915 For CVS files:
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
916 If the file is not already registered, this registers it for version
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
917 control. This does a \"cvs add\", but no \"cvs commit\".
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
918 If the file is added but not committed, it is committed.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
919 If your working file is changed, but the repository file is
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
920 unchanged, this pops up a buffer for entry of a log message; when the
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
921 message has been entered, it checks in the resulting changes along
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
922 with the logmessage as change commentary. A writable file is retained.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
923 If the repository file is changed, you are asked if you want to
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
924 merge in the changes into your working copy."
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
925
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
926 (interactive "P")
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
927 (catch 'nogo
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
928 (if vc-dired-mode
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
929 (let ((files (dired-get-marked-files)))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
930 (if (string= ""
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
931 (mapconcat
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
932 (function (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
933 (if (eq (vc-backend f) 'CVS)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
934 (if (or (eq (vc-cvs-status f) 'locally-modified)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
935 (eq (vc-cvs-status f) 'locally-added))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
936 "@" "")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
937 (if (vc-locking-user f) "@" ""))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
938 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
939 (vc-next-action-dired nil nil "dummy")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
940 (vc-start-entry nil nil nil
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
941 "Enter a change comment for the marked files."
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
942 'vc-next-action-dired))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
943 (throw 'nogo nil)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
944 (while vc-parent-buffer
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
945 (pop-to-buffer vc-parent-buffer))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
946 (if buffer-file-name
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
947 (vc-next-action-on-file buffer-file-name verbose)
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
948 (vc-registration-error nil))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
949
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
950 ;;; These functions help the vc-next-action entry point
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
951
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
952 (defun vc-checkout-writable-buffer (&optional file rev)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
953 "Retrieve a writable copy of the latest version of the current buffer's file."
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
954 (vc-checkout (or file (buffer-file-name)) t rev)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
955 )
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
956
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
957 ;;;###autoload
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
958 (defun vc-register (&optional override comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
959 "Register the current file into your version-control system."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
960 (interactive "P")
12152
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
961 (or buffer-file-name
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
962 (error "No visited file"))
9216
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
963 (let ((master (vc-name buffer-file-name)))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
964 (and master (file-exists-p master)
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
965 (error "This file is already registered"))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
966 (and master
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
967 (not (y-or-n-p "Previous master file has vanished. Make a new one? "))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
968 (error "This file is already registered")))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
969 ;; Watch out for new buffers of size 0: the corresponding file
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
970 ;; does not exist yet, even though buffer-modified-p is nil.
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
971 (if (and (not (buffer-modified-p))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
972 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
973 (not (file-exists-p buffer-file-name)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
974 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
975 (vc-buffer-sync)
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
976 (cond ((not vc-make-backup-files)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
977 ;; inhibit backup for this buffer
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
978 (make-local-variable 'backup-inhibited)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
979 (setq backup-inhibited t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
980 (vc-admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
981 buffer-file-name
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
982 (or (and override
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
983 (read-string
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
984 (format "Initial version level for %s: " buffer-file-name)))
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
985 vc-default-init-version)
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
986 comment)
20977
1ca384be7f8a (vc-register): Update vc-buffer-backend.
Karl Heuer <kwzh@gnu.org>
parents: 20967
diff changeset
987 (setq vc-buffer-backend (vc-backend (buffer-file-name)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
988 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
989
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
990 (defun vc-resynch-window (file &optional keep noquery)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
991 ;; If the given file is in the current buffer,
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
992 ;; either revert on it so we see expanded keywords,
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
993 ;; or unvisit it (depending on vc-keep-workfiles)
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
994 ;; NOQUERY if non-nil inhibits confirmation for reverting.
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
995 ;; NOQUERY should be t *only* if it is known the only difference
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
996 ;; between the buffer and the file is due to RCS rather than user editing!
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
997 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
998 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
999 (progn
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1000 ;; temporarily remove vc-find-file-hook, so that
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1001 ;; we don't lose the properties
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1002 (remove-hook 'find-file-hooks 'vc-find-file-hook)
1905
494dd05d460c * files.el (revert-buffer): Reverse the sense of the first
Jim Blandy <jimb@redhat.com>
parents: 1674
diff changeset
1003 (vc-revert-buffer1 t noquery)
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1004 (add-hook 'find-file-hooks 'vc-find-file-hook)
20602
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1005 (and view-read-only
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1006 (if (file-writable-p file)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1007 (and view-mode
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1008 (let ((view-old-buffer-read-only nil))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1009 (view-mode-exit)))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1010 (and (not view-mode)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1011 (not (eq (get major-mode 'mode-class) 'special))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1012 (view-mode-enter))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1013 (vc-mode-line buffer-file-name))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1014 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1015
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1016 (defun vc-resynch-buffer (file &optional keep noquery)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1017 ;; if FILE is currently visited, resynch its buffer
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1018 (let ((buffer (get-file-buffer file)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1019 (if buffer
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1020 (save-excursion
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1021 (set-buffer buffer)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1022 (vc-resynch-window file keep noquery)))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1023
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1024 (defun vc-start-entry (file rev comment msg action &optional after-hook)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1025 ;; Accept a comment for an operation on FILE revision REV. If COMMENT
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1026 ;; is nil, pop up a VC-log buffer, emit MSG, and set the
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1027 ;; action on close to ACTION; otherwise, do action immediately.
8349
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1028 ;; Remember the file's buffer in vc-parent-buffer (current one if no file).
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1029 ;; AFTER-HOOK specifies the local value for vc-log-operation-hook.
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1030 (let ((parent (if file (find-file-noselect file) (current-buffer))))
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1031 (if vc-before-checkin-hook
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1032 (if file
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1033 (save-excursion
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1034 (set-buffer parent)
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1035 (run-hooks 'vc-before-checkin-hook))
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1036 (run-hooks 'vc-before-checkin-hook)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1037 (if comment
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1038 (set-buffer (get-buffer-create "*VC-log*"))
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1039 (pop-to-buffer (get-buffer-create "*VC-log*")))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1040 (set (make-local-variable 'vc-parent-buffer) parent)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1041 (set (make-local-variable 'vc-parent-buffer-name)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1042 (concat " from " (buffer-name vc-parent-buffer)))
12393
7d4615a12286 (vc-start-entry): Prevent lossage when doing a mass checkin from
Richard M. Stallman <rms@gnu.org>
parents: 12365
diff changeset
1043 (if file (vc-mode-line file))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1044 (vc-log-mode file)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1045 (make-local-variable 'vc-log-after-operation-hook)
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1046 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1047 (setq vc-log-after-operation-hook after-hook))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1048 (setq vc-log-operation action)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1049 (setq vc-log-version rev)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1050 (if comment
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1051 (progn
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1052 (erase-buffer)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1053 (if (eq comment t)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1054 (vc-finish-logentry t)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1055 (insert comment)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1056 (vc-finish-logentry nil)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1057 (message "%s Type C-c C-c when done." msg))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1058
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1059 (defun vc-admin (file rev &optional comment)
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1060 "Check a file into your version-control system.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1061 FILE is the unmodified name of the file. REV should be the base version
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1062 level to check it in under. COMMENT, if specified, is the checkin comment."
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1063 (vc-start-entry file rev
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1064 (or comment (not vc-initial-comment))
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1065 "Enter initial comment." 'vc-backend-admin
8563
a15ce495af6f (vc-admin): Pass nil as last arg to vc-start-entry.
Richard M. Stallman <rms@gnu.org>
parents: 8350
diff changeset
1066 nil))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1067
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1068 (defun vc-checkout (file &optional writable rev)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1069 "Retrieve a copy of the latest version of the given file."
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1070 ;; If ftp is on this system and the name matches the ange-ftp format
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1071 ;; for a remote file, the user is trying something that won't work.
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1072 (if (and (string-match "^/[^/:]+:" file) (vc-find-binary "ftp"))
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1073 (error "Sorry, you can't check out files over FTP"))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1074 (vc-backend-checkout file writable rev)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1075 (vc-resynch-buffer file t t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1076
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1077 (defun vc-steal-lock (file rev &optional owner)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1078 "Steal the lock on the current workfile."
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1079 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1080 (if (not owner)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1081 (setq owner (vc-locking-user file)))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1082 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1083 (setq file-description (format "%s:%s" file rev))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1084 (setq file-description file))
18265
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1085 (if (not (yes-or-no-p (format "Steal the lock on %s from %s? "
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1086 file-description owner)))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1087 (error "Steal cancelled"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1088 (pop-to-buffer (get-buffer-create "*VC-mail*"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1089 (setq default-directory (expand-file-name "~/"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1090 (auto-save-mode auto-save-default)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1091 (mail-mode)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1092 (erase-buffer)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1093 (mail-setup owner (format "Stolen lock on %s" file-description) nil nil nil
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1094 (list (list 'vc-finish-steal file rev)))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1095 (goto-char (point-max))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1096 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1097 (format "I stole the lock on %s, " file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1098 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1099 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1100 (message "Please explain why you stole the lock. Type C-c C-c when done.")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1101
1343
9b5cb40cb6c8 (vc-steal-lock): Use mail-setup, and do like `mail'.
Richard M. Stallman <rms@gnu.org>
parents: 1337
diff changeset
1102 ;; This is called when the notification has been sent.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1103 (defun vc-finish-steal (file version)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1104 (vc-backend-steal file version)
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1105 (if (get-file-buffer file)
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1106 (save-excursion
9046
09fb6d81f449 (vc-finish-steal): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9045
diff changeset
1107 (set-buffer (get-file-buffer file))
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1108 (vc-resynch-window file t t))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1109
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1110 (defun vc-checkin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1111 "Check in the file specified by FILE.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1112 The optional argument REV may be a string specifying the new version level
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1113 \(if nil increment the current level). The file is either retained with write
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1114 permissions zeroed, or deleted (according to the value of `vc-keep-workfiles').
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1115 If the back-end is CVS, a writable workfile is always kept.
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1116 COMMENT is a comment string; if omitted, a buffer is popped up to accept a
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1117 comment.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1118
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1119 Runs the normal hook `vc-checkin-hook'."
6581
3a0db3b2366c (vc-checkin): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6563
diff changeset
1120 (vc-start-entry file rev comment
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1121 "Enter a change comment." 'vc-backend-checkin
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1122 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1123
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1124 (defun vc-comment-to-change-log (&optional whoami file-name)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1125 "Enter last VC comment into change log file for current buffer's file.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1126 Optional arg (interactive prefix) non-nil means prompt for user name and site.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1127 Second arg is file name of change log. \
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1128 If nil, uses `change-log-default-name'.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1129
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1130 May be useful as a `vc-checkin-hook' to update change logs automatically."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1131 (interactive (if current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1132 (list current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1133 (prompt-for-change-log-name))))
5871
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1134 ;; Make sure the defvar for add-log-current-defun-function has been executed
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1135 ;; before binding it.
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1136 (require 'add-log)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1137 (let (;; Extract the comment first so we get any error before doing anything.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1138 (comment (ring-ref vc-comment-ring 0))
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1139 ;; Don't let add-change-log-entry insert a defun name.
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1140 (add-log-current-defun-function 'ignore)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1141 end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1142 ;; Call add-log to do half the work.
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1143 (add-change-log-entry whoami file-name t t)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1144 ;; Insert the VC comment, leaving point before it.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1145 (setq end (save-excursion (insert comment) (point-marker)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1146 (if (looking-at "\\s *\\s(")
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1147 ;; It starts with an open-paren, as in "(foo): Frobbed."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1148 ;; So remove the ": " add-log inserted.
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1149 (delete-char -2))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1150 ;; Canonicalize the white space between the file name and comment.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1151 (just-one-space)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1152 ;; Indent rest of the text the same way add-log indented the first line.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1153 (let ((indentation (current-indentation)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1154 (save-excursion
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1155 (while (< (point) end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1156 (forward-line 1)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1157 (indent-to indentation))
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1158 (setq end (point))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1159 ;; Fill the inserted text, preserving open-parens at bol.
10900
5b375fee0e1f (vc-comment-to-change-log): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents: 10862
diff changeset
1160 (let ((paragraph-separate (concat paragraph-separate "\\|\\s *\\s("))
5b375fee0e1f (vc-comment-to-change-log): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents: 10862
diff changeset
1161 (paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1162 (beginning-of-line)
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1163 (fill-region (point) end))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1164 ;; Canonicalize the white space at the end of the entry so it is
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1165 ;; separated from the next entry by a single blank line.
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1166 (skip-syntax-forward " " end)
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1167 (delete-char (- (skip-syntax-backward " ")))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1168 (or (eobp) (looking-at "\n\n")
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1169 (insert "\n"))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1170
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1171
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1172 (defun vc-finish-logentry (&optional nocomment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1173 "Complete the operation implied by the current log entry."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1174 (interactive)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1175 ;; Check and record the comment, if any.
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1176 (if (not nocomment)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1177 (progn
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1178 (goto-char (point-max))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1179 (if (not (bolp))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1180 (newline))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1181 ;; Comment too long?
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1182 (vc-backend-logentry-check vc-log-file)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1183 ;; Record the comment in the comment ring
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1184 (ring-insert vc-comment-ring (buffer-string))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1185 ))
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1186 ;; Sync parent buffer in case the user modified it while editing the comment.
8349
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1187 ;; But not if it is a vc-dired buffer.
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1188 (save-excursion
8349
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1189 (set-buffer vc-parent-buffer)
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1190 (or vc-dired-mode
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1191 (vc-buffer-sync)))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1192 (if (not vc-log-operation) (error "No log operation is pending"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1193 ;; save the parameters held in buffer-local variables
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1194 (let ((log-operation vc-log-operation)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1195 (log-file vc-log-file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1196 (log-version vc-log-version)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1197 (log-entry (buffer-string))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1198 (after-hook vc-log-after-operation-hook))
8237
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1199 (pop-to-buffer vc-parent-buffer)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1200 ;; OK, do it to it
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1201 (save-excursion
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1202 (funcall log-operation
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1203 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1204 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1205 log-entry))
20661
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1206 ;; Remove checkin window (after the checkin so that if that fails
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1207 ;; we don't zap the *VC-log* buffer and the typing therein).
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1208 (let ((logbuf (get-buffer "*VC-log*")))
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1209 (delete-windows-on logbuf)
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1210 (kill-buffer logbuf))
8237
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1211 ;; Now make sure we see the expanded headers
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1212 (if buffer-file-name
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1213 (vc-resynch-window buffer-file-name vc-keep-workfiles t))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1214 (run-hooks after-hook 'vc-finish-logentry-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1215
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1216 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1217
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1218 (defun vc-previous-comment (arg)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1219 "Cycle backwards through comment history."
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1220 (interactive "*p")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1221 (let ((len (ring-length vc-comment-ring)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1222 (cond ((<= len 0)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1223 (message "Empty comment ring")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1224 (ding))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1225 (t
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1226 (erase-buffer)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1227 ;; Initialize the index on the first use of this command
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1228 ;; so that the first M-p gets index 0, and the first M-n gets
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1229 ;; index -1.
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1230 (if (null vc-comment-ring-index)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1231 (setq vc-comment-ring-index
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1232 (if (> arg 0) -1
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1233 (if (< arg 0) 1 0))))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1234 (setq vc-comment-ring-index
4509
aeef9d07f78d (vc-previous-comment): Use `mod', not `ring-mod'.
Paul Eggert <eggert@twinsun.com>
parents: 4480
diff changeset
1235 (mod (+ vc-comment-ring-index arg) len))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1236 (message "%d" (1+ vc-comment-ring-index))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1237 (insert (ring-ref vc-comment-ring vc-comment-ring-index))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1238
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1239 (defun vc-next-comment (arg)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1240 "Cycle forwards through comment history."
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1241 (interactive "*p")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1242 (vc-previous-comment (- arg)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1243
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1244 (defun vc-comment-search-reverse (str)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1245 "Searches backwards through comment history for substring match."
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1246 (interactive "sComment substring: ")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1247 (if (string= str "")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1248 (setq str vc-last-comment-match)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1249 (setq vc-last-comment-match str))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1250 (if (null vc-comment-ring-index)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1251 (setq vc-comment-ring-index -1))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1252 (let ((str (regexp-quote str))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1253 (len (ring-length vc-comment-ring))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1254 (n (1+ vc-comment-ring-index)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1255 (while (and (< n len) (not (string-match str (ring-ref vc-comment-ring n))))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1256 (setq n (+ n 1)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1257 (cond ((< n len)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1258 (vc-previous-comment (- n vc-comment-ring-index)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1259 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1260
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1261 (defun vc-comment-search-forward (str)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1262 "Searches forwards through comment history for substring match."
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1263 (interactive "sComment substring: ")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1264 (if (string= str "")
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1265 (setq str vc-last-comment-match)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1266 (setq vc-last-comment-match str))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1267 (if (null vc-comment-ring-index)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1268 (setq vc-comment-ring-index 0))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1269 (let ((str (regexp-quote str))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1270 (len (ring-length vc-comment-ring))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1271 (n vc-comment-ring-index))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1272 (while (and (>= n 0) (not (string-match str (ring-ref vc-comment-ring n))))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1273 (setq n (- n 1)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1274 (cond ((>= n 0)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1275 (vc-next-comment (- n vc-comment-ring-index)))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1276 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1277
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1278 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1279
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1280 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1281 (defun vc-diff (historic &optional not-urgent)
2667
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1282 "Display diffs between file versions.
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1283 Normally this compares the current file and buffer with the most recent
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1284 checked in version of that file. This uses no arguments.
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1285 With a prefix argument, it reads the file name to use
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1286 and two version designators specifying which versions to compare."
14376
eb8910a353fc (vc-diff): Make NOT-URGENT default to t.
Richard M. Stallman <rms@gnu.org>
parents: 14297
diff changeset
1287 (interactive (list current-prefix-arg t))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1288 (if vc-dired-mode
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1289 (set-buffer (find-file-noselect (dired-get-filename))))
2419
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1290 (while vc-parent-buffer
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1291 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1292 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1293 (call-interactively 'vc-version-diff)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1294 (if (or (null buffer-file-name) (null (vc-name buffer-file-name)))
4480
208145c77950 * vc.el (vc-diff, vc-directory-18): Add missing paren to end of
Jim Blandy <jimb@redhat.com>
parents: 4362
diff changeset
1295 (error
208145c77950 * vc.el (vc-diff, vc-directory-18): Add missing paren to end of
Jim Blandy <jimb@redhat.com>
parents: 4362
diff changeset
1296 "There is no version-control master associated with this buffer"))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1297 (let ((file buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1298 unchanged)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1299 (vc-buffer-sync not-urgent)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1300 (setq unchanged (vc-workfile-unchanged-p buffer-file-name))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1301 (if unchanged
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1302 (message "No changes to %s since latest version" file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1303 (vc-backend-diff file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1304 ;; Ideally, we'd like at this point to parse the diff so that
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1305 ;; the buffer effectively goes into compilation mode and we
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1306 ;; can visit the old and new change locations via next-error.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1307 ;; Unfortunately, this is just too painful to do. The basic
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1308 ;; problem is that the `old' file doesn't exist to be
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1309 ;; visited. This plays hell with numerous assumptions in
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1310 ;; the diff.el and compile.el machinery.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1311 (set-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1312 (setq default-directory (file-name-directory file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1313 (if (= 0 (buffer-size))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1314 (progn
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1315 (setq unchanged t)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1316 (message "No changes to %s since latest version" file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1317 (pop-to-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1318 (goto-char (point-min))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1319 (shrink-window-if-larger-than-buffer)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1320 (not unchanged))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1321
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1322 (defun vc-version-diff (file rel1 rel2)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1323 "For FILE, report diffs between two stored versions REL1 and REL2 of it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1324 If FILE is a directory, generate diffs between versions for all registered
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1325 files in or below it."
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1326 (interactive
19484
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1327 (let ((file (read-file-name (if buffer-file-name
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1328 "File or dir to diff: (default visited file) "
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1329 "File or dir to diff: ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1330 default-directory buffer-file-name t))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1331 (rel1-default nil) (rel2-default nil))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1332 ;; compute default versions based on the file state
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1333 (cond
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1334 ;; if it's a directory, don't supply any version defauolt
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1335 ((file-directory-p file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1336 nil)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1337 ;; if the file is locked, use current version as older version
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1338 ((vc-locking-user file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1339 (setq rel1-default (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1340 ;; if the file is not locked, use last and previous version as default
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1341 (t
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1342 (setq rel1-default (vc-previous-version (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1343 (setq rel2-default (vc-workfile-version file))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1344 ;; construct argument list
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1345 (list file
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1346 (read-string (if rel1-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1347 (concat "Older version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1348 rel1-default ") ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1349 "Older version: ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1350 nil nil rel1-default)
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1351 (read-string (if rel2-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1352 (concat "Newer version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1353 rel2-default ") ")
19177
31175a4bf0a6 (vc-version-diff): Change the Newer version prompt.
Richard M. Stallman <rms@gnu.org>
parents: 19126
diff changeset
1354 "Newer version (default: current source): ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1355 nil nil rel2-default))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1356 (if (string-equal rel1 "") (setq rel1 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1357 (if (string-equal rel2 "") (setq rel2 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1358 (if (file-directory-p file)
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1359 (let ((camefrom (current-buffer)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1360 (set-buffer (get-buffer-create "*vc-status*"))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1361 (set (make-local-variable 'vc-parent-buffer) camefrom)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1362 (set (make-local-variable 'vc-parent-buffer-name)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1363 (concat " from " (buffer-name camefrom)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1364 (erase-buffer)
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1365 (insert "Diffs between "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1366 (or rel1 "last version checked in")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1367 " and "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1368 (or rel2 "current workfile(s)")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1369 ":\n\n")
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1370 (set-buffer (get-buffer-create "*vc-diff*"))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1371 (cd file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1372 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1373 default-directory
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1374 (function (lambda (f)
2219
a729b16f7427 (vc-version-diff): Use (message ...), not (message (format ...)).
Paul Eggert <eggert@twinsun.com>
parents: 2212
diff changeset
1375 (message "Looking at %s" f)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1376 (and
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1377 (not (file-directory-p f))
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1378 (vc-registered f)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1379 (vc-backend-diff f rel1 rel2)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1380 (append-to-buffer "*vc-status*" (point-min) (point-max)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1381 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1382 (pop-to-buffer "*vc-status*")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1383 (insert "\nEnd of diffs.\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1384 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1385 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1386 )
2769
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1387 (if (zerop (vc-backend-diff file rel1 rel2))
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1388 (message "No changes to %s between %s and %s." file rel1 rel2)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1389 (pop-to-buffer "*vc-diff*"))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1390
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1391 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1392 (defun vc-version-other-window (rev)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1393 "Visit version REV of the current buffer in another window.
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1394 If the current buffer is named `F', the version is named `F.~REV~'.
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1395 If `F.~REV~' already exists, it is used instead of being re-created."
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1396 (interactive "sVersion to visit (default is latest version): ")
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1397 (if vc-dired-mode
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1398 (set-buffer (find-file-noselect (dired-get-filename))))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1399 (while vc-parent-buffer
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1400 (pop-to-buffer vc-parent-buffer))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1401 (if (and buffer-file-name (vc-name buffer-file-name))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1402 (let* ((version (if (string-equal rev "")
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1403 (vc-latest-version buffer-file-name)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1404 rev))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1405 (filename (concat buffer-file-name ".~" version "~")))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1406 (or (file-exists-p filename)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1407 (vc-backend-checkout buffer-file-name nil version filename))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1408 (find-file-other-window filename))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1409 (vc-registration-error buffer-file-name)))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1410
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1411 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1412
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1413 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1414 (defun vc-insert-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1415 "Insert headers in a file for use with your version-control system.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1416 Headers desired are inserted at the start of the buffer, and are pulled from
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1417 the variable `vc-header-alist'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1418 (interactive)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1419 (if vc-dired-mode
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1420 (find-file-other-window (dired-get-filename)))
2419
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1421 (while vc-parent-buffer
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1422 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1423 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1424 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1425 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1426 (if (or (not (vc-check-headers))
3227
b2e2fcc4fb24 (vc-steal-lock, vc-insert-headers): Fix question whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 2968
diff changeset
1427 (y-or-n-p "Version headers already exist. Insert another set? "))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1428 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1429 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1430 (comment-start-vc (or (car delims) comment-start "#"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1431 (comment-end-vc (or (car (cdr delims)) comment-end ""))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
1432 (hdstrings (cdr (assoc (vc-backend (buffer-file-name)) vc-header-alist))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1433 (mapcar (function (lambda (s)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1434 (insert comment-start-vc "\t" s "\t"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1435 comment-end-vc "\n")))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1436 hdstrings)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1437 (if vc-static-header-alist
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1438 (mapcar (function (lambda (f)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1439 (if (string-match (car f) buffer-file-name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1440 (insert (format (cdr f) (car hdstrings))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1441 vc-static-header-alist))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1442 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1443 )))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1444
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1445 (defun vc-clear-headers ()
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1446 ;; Clear all version headers in the current buffer, i.e. reset them
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1447 ;; to the nonexpanded form. Only implemented for RCS, yet.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1448 ;; Don't lose point and mark during this.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1449 (let ((context (vc-buffer-context))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1450 (case-fold-search nil))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1451 (goto-char (point-min))
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1452 (while (re-search-forward
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1453 (concat "\\$\\(Author\\|Date\\|Header\\|Id\\|Locker\\|Name\\|"
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1454 "RCSfile\\|Revision\\|Source\\|State\\): [^\\$\\n]+\\$")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1455 nil t)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1456 (replace-match "$\\1$"))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1457 (vc-restore-buffer-context context)))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1458
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1459 ;; The VC directory major mode. Coopt Dired for this.
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1460 ;; All VC commands get mapped into logical equivalents.
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1461
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1462 (define-derived-mode vc-dired-mode dired-mode "Dired under VC"
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1463 "The major mode used in VC directory buffers. It is derived from Dired.
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1464 All Dired commands operate normally. Users currently locking listed files
2664
334f3eeb459d (vc-dired-prefix-map): New keymap.
Richard M. Stallman <rms@gnu.org>
parents: 2617
diff changeset
1465 are listed in place of the file's owner and group.
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1466 Keystrokes bound to VC commands will execute as though they had been called
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1467 on a buffer attached to the file named in the current Dired buffer line."
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1468 (setq vc-dired-mode t))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1469
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1470 (define-key vc-dired-mode-map "\C-xv" vc-prefix-map)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1471 (define-key vc-dired-mode-map "g" 'vc-dired-update)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1472 (define-key vc-dired-mode-map "=" 'vc-diff)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1473
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1474 (defun vc-dired-state-info (file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1475 ;; Return the string that indicates the version control status
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1476 ;; on a VC dired line.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1477 (let ((cvs-state (and (eq (vc-backend file) 'CVS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1478 (vc-cvs-status file))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1479 (if cvs-state
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1480 (cond ((eq cvs-state 'up-to-date) nil)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1481 ((eq cvs-state 'needs-checkout) "patch")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1482 ((eq cvs-state 'locally-modified) "modified")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1483 ((eq cvs-state 'needs-merge) "merge")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1484 ((eq cvs-state 'unresolved-conflict) "conflict")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1485 ((eq cvs-state 'locally-added) "added"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1486 (vc-locking-user file))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1487
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1488 (defun vc-dired-reformat-line (x)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1489 ;; Hack a directory-listing line, plugging in locking-user info in
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1490 ;; place of the user and group info. Should have the beneficial
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1491 ;; side-effect of shortening the listing line. Each call starts with
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1492 ;; point immediately following the dired mark area on the line to be
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1493 ;; hacked.
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1494 ;;
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1495 ;; Simplest possible one:
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1496 ;; (insert (concat x "\t")))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1497 ;;
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1498 ;; This code, like dired, assumes UNIX -l format.
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1499 (let ((pos (point)) limit perm owner date-and-file)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1500 (end-of-line)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1501 (setq limit (point))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1502 (goto-char pos)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1503 (cond
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1504 ((or
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1505 (re-search-forward ;; owner and group
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1506 "\\([drwxlts-]+ \\) *[0-9]+ \\([^ ]+\\) +[^ ]+ +[0-9]+\\( [^ 0-9]+ [0-9 ][0-9] .*\\)"
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1507 limit t)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1508 (re-search-forward ;; only owner displayed
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1509 "\\([drwxlts-]+ \\) *[0-9]+ \\([^ ]+\\) +[0-9]+\\( [^ 0-9]+ [0-9 ][0-9] .*\\)"
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1510 limit t))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1511 (setq perm (match-string 1)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1512 owner (match-string 2)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1513 date-and-file (match-string 3)))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1514 ((re-search-forward ;; OS/2 -l format, no links, owner, group
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1515 "\\([drwxlts-]+ \\) *[0-9]+\\( [^ 0-9]+ [0-9 ][0-9] .*\\)"
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1516 limit t)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1517 (setq perm (match-string 1)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1518 date-and-file (match-string 2))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1519 (if x (setq x (concat "(" x ")")))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1520 (let ((rep (substring (concat x " ") 0 10)))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1521 (replace-match (concat perm rep date-and-file)))))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1522
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1523 (defun vc-dired-update-line (file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1524 ;; Update the vc-dired listing line of file -- it is assumed
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1525 ;; that point is already on this line. Don't use dired-do-redisplay
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1526 ;; for this, because it cannot handle the way vc-dired deals with
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1527 ;; subdirectories.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1528 (beginning-of-line)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1529 (forward-char 2)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1530 (let ((start (point)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1531 (forward-line 1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1532 (beginning-of-line)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1533 (delete-region start (point))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1534 (insert-directory file dired-listing-switches)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1535 (forward-line -1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1536 (end-of-line)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1537 (delete-char (- (length file)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1538 (insert (substring file (length (expand-file-name default-directory))))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1539 (goto-char start))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1540 (vc-dired-reformat-line (vc-dired-state-info file)))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1541
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1542 (defun vc-dired-update (verbose)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1543 (interactive "P")
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1544 (vc-directory default-directory verbose))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1545
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1546 ;;; Note in Emacs 18 the following defun gets overridden
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1547 ;;; with the symbol 'vc-directory-18. See below.
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1548 ;;;###autoload
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1549 (defun vc-directory (dirname verbose)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1550 "Show version-control status of the current directory and subdirectories.
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1551 Normally it creates a Dired buffer that lists only the locked files
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1552 in all these directories. With a prefix argument, it lists all files."
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1553 (interactive "DDired under VC (directory): \nP")
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1554 (require 'dired)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1555 (setq dirname (expand-file-name dirname))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1556 ;; force a trailing slash
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1557 (if (not (eq (elt dirname (1- (length dirname))) ?/))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1558 (setq dirname (concat dirname "/")))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1559 (let (nonempty
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1560 (dl (length dirname))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1561 (filelist nil) (statelist nil)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1562 (old-dir default-directory)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1563 dired-buf
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1564 dired-buf-mod-count)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1565 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1566 dirname
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1567 (function
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1568 (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1569 (if (vc-registered f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1570 (let ((state (vc-dired-state-info f)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1571 (and (or verbose state)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1572 (setq filelist (cons (substring f dl) filelist))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1573 (setq statelist (cons state statelist))))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1574 (save-window-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1575 (save-excursion
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1576 ;; This uses a semi-documented feature of dired; giving a switch
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1577 ;; argument forces the buffer to refresh each time.
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1578 (setq dired-buf
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1579 (dired-internal-noselect
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1580 (cons dirname (nreverse filelist))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1581 dired-listing-switches 'vc-dired-mode))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1582 (setq nonempty (not (eq 0 (length filelist))))))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1583 (switch-to-buffer dired-buf)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1584 ;; Make a few modifications to the header
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1585 (setq buffer-read-only nil)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1586 (goto-char (point-min))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1587 (forward-line 1) ;; Skip header line
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1588 (let ((start (point))) ;; Erase (but don't remove) the
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1589 (end-of-line) ;; "wildcard" line.
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1590 (delete-region start (point)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1591 (beginning-of-line)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1592 (if nonempty
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1593 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1594 ;; Plug the version information into the individual lines
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1595 (mapcar
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1596 (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1597 (lambda (x)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1598 (forward-char 2) ;; skip dired's mark area
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
1599 (vc-dired-reformat-line x)
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1600 (forward-line 1))) ;; go to next line
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1601 (nreverse statelist))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1602 (setq buffer-read-only t)
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1603 (goto-char (point-min))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1604 (dired-next-line 2)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1605 )
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1606 (dired-next-line 1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1607 (insert " ")
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1608 (setq buffer-read-only t)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1609 (message "No files are currently %s under %s"
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1610 (if verbose "registered" "locked") dirname))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1611 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1612
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1613 ;; Emacs 18 version
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1614 (defun vc-directory-18 (verbose)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1615 "Show version-control status of all files under the current directory."
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1616 (interactive "P")
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1617 (let (nonempty (dir default-directory))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1618 (save-excursion
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1619 (set-buffer (get-buffer-create "*vc-status*"))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1620 (erase-buffer)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1621 (cd dir)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1622 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1623 default-directory
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1624 (function (lambda (f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1625 (if (vc-registered f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1626 (let ((user (vc-locking-user f)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1627 (if (or user verbose)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1628 (insert (format
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1629 "%s %s\n"
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1630 (concat user) f))))))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1631 (setq nonempty (not (zerop (buffer-size)))))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1632
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1633 (if nonempty
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1634 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1635 (pop-to-buffer "*vc-status*" t)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1636 (goto-char (point-min))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1637 (shrink-window-if-larger-than-buffer)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1638 (message "No files are currently %s under %s"
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1639 (if verbose "registered" "locked") default-directory))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1640 )
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1641
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1642 (or (boundp 'minor-mode-map-alist)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1643 (fset 'vc-directory 'vc-directory-18))
10475
2d9590603a06 Revert Jan 15 and Jan 5 changes.
Richard M. Stallman <rms@gnu.org>
parents: 10431
diff changeset
1644
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1645 ;; Named-configuration support for SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1646
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1647 (defun vc-add-triple (name file rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1648 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1649 (find-file (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1650 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1651 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1652 (expand-file-name (vc-backend-subdirectory-name file)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1653 (file-name-directory file)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1654 (goto-char (point-max))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1655 (insert name "\t:\t" file "\t" rev "\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1656 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1657 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1658 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1659
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1660 (defun vc-record-rename (file newname)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1661 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1662 (find-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1663 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1664 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1665 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1666 (expand-file-name (vc-backend-subdirectory-name file)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1667 (file-name-directory file)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1668 (goto-char (point-min))
5263
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1669 ;; (replace-regexp (concat ":" (regexp-quote file) "$") (concat ":" newname))
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1670 (while (re-search-forward (concat ":" (regexp-quote file) "$") nil t)
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1671 (replace-match (concat ":" newname) nil nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1672 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1673 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1674 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1675
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1676 (defun vc-lookup-triple (file name)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1677 ;; Return the numeric version corresponding to a named snapshot of file
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1678 ;; If name is nil or a version number string it's just passed through
5989
0b529dfd88c3 (vc-lookup-triple): Yield nil, not "", if NAME is nil.
Paul Eggert <eggert@twinsun.com>
parents: 5871
diff changeset
1679 (cond ((null name) name)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1680 ((let ((firstchar (aref name 0)))
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1681 (and (>= firstchar ?0) (<= firstchar ?9)))
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1682 name)
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1683 (t
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1684 (save-excursion
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1685 (set-buffer (get-buffer-create "*vc-info*"))
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1686 (vc-insert-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1687 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1688 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1689 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1690 (expand-file-name (vc-backend-subdirectory-name file)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1691 (file-name-directory file)))))
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1692 (prog1
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1693 (car (vc-parse-buffer
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1694 (list (list (concat name "\t:\t" file "\t\\(.+\\)") 1))))
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1695 (kill-buffer "*vc-info*"))))
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1696 ))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1697
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1698 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1699
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1700 (defun vc-snapshot-precondition ()
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1701 ;; Scan the tree below the current directory.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1702 ;; If any files are locked, return the name of the first such file.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1703 ;; (This means, neither snapshot creation nor retrieval is allowed.)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1704 ;; If one or more of the files are currently visited, return `visited'.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1705 ;; Otherwise, return nil.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1706 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1707 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1708 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1709 default-directory
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1710 (function (lambda (f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1711 (and (vc-registered f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1712 (if (vc-locking-user f) (throw 'vc-locked-example f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1713 (if (get-file-buffer f) (setq status 'visited)))))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1714 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1715
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1716 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1717 (defun vc-create-snapshot (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1718 "Make a snapshot called NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1719 The snapshot is made from all registered files at or below the current
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1720 directory. For each file, the version level of its latest
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1721 version becomes part of the named configuration."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1722 (interactive "sNew snapshot name: ")
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1723 (let ((result (vc-snapshot-precondition)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1724 (if (stringp result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1725 (error "File %s is locked" result)
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1726 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1727 default-directory
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1728 (function (lambda (f) (and
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1729 (vc-name f)
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1730 (vc-backend-assign-name f name)))))
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1731 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1732
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1733 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1734 (defun vc-retrieve-snapshot (name)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1735 "Retrieve the snapshot called NAME, or latest versions if NAME is empty.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1736 When retrieving a snapshot, there must not be any locked files at or below
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1737 the current directory. If none are locked, all registered files are
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1738 checked out (unlocked) at their version levels in the snapshot NAME.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1739 If NAME is the empty string, all registered files that are not currently
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1740 locked are updated to the latest versions."
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1741 (interactive "sSnapshot name to retrieve (default latest versions): ")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1742 (let ((update (yes-or-no-p "Update any affected buffers? ")))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1743 (if (string= name "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1744 (progn
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1745 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1746 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1747 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1748 (vc-registered f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1749 (not (vc-locking-user f))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1750 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1751 (vc-backend-checkout f nil "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1752 (if update (vc-resynch-buffer f t t))))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1753 (let ((result (vc-snapshot-precondition)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1754 (if (stringp result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1755 (error "File %s is locked" result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1756 (setq update (and (eq result 'visited) update))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1757 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1758 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1759 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1760 (vc-name f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1761 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1762 (vc-backend-checkout f nil name)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1763 (if update (vc-resynch-buffer f t t)))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1764 )))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1765
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1766 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1767
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1768 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1769 (defun vc-print-log ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1770 "List the change log of the current buffer in a window."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1771 (interactive)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1772 (if vc-dired-mode
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1773 (set-buffer (find-file-noselect (dired-get-filename))))
2419
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1774 (while vc-parent-buffer
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1775 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1776 (if (and buffer-file-name (vc-name buffer-file-name))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1777 (let ((file buffer-file-name))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1778 (vc-backend-print-log file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1779 (pop-to-buffer (get-buffer-create "*vc*"))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1780 (setq default-directory (file-name-directory file))
16215
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1781 (goto-char (point-max)) (forward-line -1)
4770
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
1782 (while (looking-at "=*\n")
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
1783 (delete-char (- (match-end 0) (match-beginning 0)))
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
1784 (forward-line -1))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1785 (goto-char (point-min))
4770
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
1786 (if (looking-at "[\b\t\n\v\f\r ]+")
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
1787 (delete-char (- (match-end 0) (match-beginning 0))))
4362
2c0ac46d5d5b (vc-shrink-to-fit): Deleted. All callers changed to use
Richard M. Stallman <rms@gnu.org>
parents: 4281
diff changeset
1788 (shrink-window-if-larger-than-buffer)
16138
852c9735c076 (vc-print-log): Move point to the log entry of the current version.
André Spiegel <spiegel@gnu.org>
parents: 16033
diff changeset
1789 ;; move point to the log entry for the current version
16215
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1790 (and (not (eq (vc-backend file) 'SCCS))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1791 (re-search-forward
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1792 ;; also match some context, for safety
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1793 (concat "----\nrevision " (vc-workfile-version file)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1794 "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1795 ;; set the display window so that
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1796 ;; the whole log entry is displayed
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1797 (let (start end lines)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1798 (beginning-of-line) (forward-line -1) (setq start (point))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1799 (if (not (re-search-forward "^----*\nrevision" nil t))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1800 (setq end (point-max))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1801 (beginning-of-line) (forward-line -1) (setq end (point)))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1802 (setq lines (count-lines start end))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1803 (cond
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1804 ;; if the global information and this log entry fit
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1805 ;; into the window, display from the beginning
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1806 ((< (count-lines (point-min) end) (window-height))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1807 (goto-char (point-min))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1808 (recenter 0)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1809 (goto-char start))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1810 ;; if the whole entry fits into the window,
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1811 ;; display it centered
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1812 ((< (1+ lines) (window-height))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1813 (goto-char start)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1814 (recenter (1- (- (/ (window-height) 2) (/ lines 2)))))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1815 ;; otherwise (the entry is too large for the window),
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1816 ;; display from the start
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1817 (t
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1818 (goto-char start)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1819 (recenter 0)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1820 )
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1821 (vc-registration-error buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1822 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1823 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1824
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1825 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1826 (defun vc-revert-buffer ()
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
1827 "Revert the current buffer's file back to the latest checked-in version.
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
1828 This asks for confirmation if the buffer contents are not identical
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1829 to that version.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1830 If the back-end is CVS, this will give you the most recent revision of
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1831 the file on the branch you are editing."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1832 (interactive)
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1833 (if vc-dired-mode
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1834 (find-file-other-window (dired-get-filename)))
2419
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1835 (while vc-parent-buffer
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1836 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1837 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1838 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1839 (vc-suppress-confirm nil)
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1840 (obuf (current-buffer)) (changed (vc-diff nil t)))
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1841 (if (and changed (not (yes-or-no-p "Discard changes? ")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1842 (progn
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1843 (if (and (window-dedicated-p (selected-window))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1844 (one-window-p t 'selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1845 (make-frame-invisible (selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1846 (delete-window))
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
1847 (error "Revert cancelled"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1848 (set-buffer obuf))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1849 (if changed
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1850 (if (and (window-dedicated-p (selected-window))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1851 (one-window-p t 'selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1852 (make-frame-invisible (selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1853 (delete-window)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1854 (vc-backend-revert file)
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1855 (vc-resynch-window file t t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1856 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1857 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1858
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1859 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1860 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1861 "Get rid of most recently checked in version of this file.
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1862 A prefix argument means do not revert the buffer afterwards."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1863 (interactive "P")
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1864 (if vc-dired-mode
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1865 (find-file-other-window (dired-get-filename)))
2419
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1866 (while vc-parent-buffer
77a67b7a1cce (vc-next-action, vc-peint-log, vc-diff, vc-revert-buffer) improved
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2402
diff changeset
1867 (pop-to-buffer vc-parent-buffer))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1868 (cond
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1869 ((not (vc-registered (buffer-file-name)))
15336
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
1870 (vc-registration-error (buffer-file-name)))
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
1871 ((eq (vc-backend (buffer-file-name)) 'CVS)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1872 (error "Unchecking files under CVS is dangerous and not supported in VC"))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1873 ((vc-locking-user (buffer-file-name))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1874 (error "This version is locked; use vc-revert-buffer to discard changes"))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1875 ((not (vc-latest-on-branch-p (buffer-file-name)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1876 (error "This is not the latest version--VC cannot cancel it")))
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1877 (let* ((target (vc-workfile-version (buffer-file-name)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1878 (recent (if (vc-trunk-p target) "" (vc-branch-part target)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1879 (config (current-window-configuration)) done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1880 (if (null (yes-or-no-p (format "Remove version %s from master? " target)))
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1881 nil
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1882 (setq norevert (or norevert (not
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1883 (yes-or-no-p "Revert buffer to most recent remaining version? "))))
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1884 (vc-backend-uncheck (buffer-file-name) target)
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1885 ;; Check out the most recent remaining version. If it fails, because
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1886 ;; the whole branch got deleted, do a double-take and check out the
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1887 ;; version where the branch started.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1888 (while (not done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1889 (condition-case err
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1890 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1891 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1892 ;; Check out locked, but only to disc, and keep
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1893 ;; modifications in the buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1894 (vc-backend-checkout (buffer-file-name) t recent)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1895 ;; Check out unlocked, and revert buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1896 (vc-checkout (buffer-file-name) nil recent))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1897 (setq done t))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1898 ;; If the checkout fails, vc-do-command signals an error.
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1899 ;; We catch this error, check the reason, correct the
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1900 ;; version number, and try a second time.
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1901 (error (set-buffer "*vc*")
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1902 (goto-char (point-min))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1903 (if (search-forward "no side branches present for" nil t)
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1904 (progn (setq recent (vc-branch-part recent))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1905 ;; vc-do-command popped up a window with
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1906 ;; the error message. Get rid of it, by
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
1907 ;; restoring the old window configuration.
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1908 (set-window-configuration config))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1909 ;; No, it was some other error: re-signal it.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1910 (signal (car err) (cdr err))))))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1911 ;; If norevert, clear version headers and mark the buffer modified.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1912 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1913 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1914 (set-visited-file-name (buffer-file-name))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1915 (if (not vc-make-backup-files)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1916 ;; inhibit backup for this buffer
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1917 (progn (make-local-variable 'backup-inhibited)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1918 (setq backup-inhibited t)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1919 (if (eq (vc-backend (buffer-file-name)) 'RCS)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1920 (progn (setq buffer-read-only nil)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1921 (vc-clear-headers)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1922 (vc-mode-line (buffer-file-name))))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1923 (message "Version %s has been removed from the master" target)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1924 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1925
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1926 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1927 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1928 "Rename file OLD to NEW, and rename its master file likewise."
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1929 (interactive "fVC rename file: \nFRename to: ")
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1930 ;; There are several ways of renaming files under CVS 1.3, but they all
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1931 ;; have serious disadvantages. See the FAQ (available from think.com in
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1932 ;; pub/cvs/). I'd rather send the user an error, than do something he might
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1933 ;; consider to be wrong. When the famous, long-awaited rename database is
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1934 ;; implemented things might change for the better. This is unlikely to occur
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1935 ;; until CVS 2.0 is released. --ceder 1994-01-23 21:27:51
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
1936 (if (eq (vc-backend old) 'CVS)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1937 (error "Renaming files under CVS is dangerous and not supported in VC"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1938 (let ((oldbuf (get-file-buffer old)))
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1939 (if (and oldbuf (buffer-modified-p oldbuf))
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
1940 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1941 (if (get-file-buffer new)
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
1942 (error "Already editing new file name"))
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1943 (if (file-exists-p new)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1944 (error "New file already exists"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1945 (let ((oldmaster (vc-name old)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1946 (if oldmaster
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1947 (progn
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1948 (if (vc-locking-user old)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1949 (error "Please check in files before moving them"))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1950 (if (or (file-symlink-p oldmaster)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1951 ;; This had FILE, I changed it to OLD. -- rms.
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1952 (file-symlink-p (vc-backend-subdirectory-name old)))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1953 (error "This is not a safe thing to do in the presence of symbolic links"))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1954 (rename-file
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1955 oldmaster
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
1956 (let ((backend (vc-backend old))
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1957 (newdir (or (file-name-directory new) ""))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1958 (newbase (file-name-nondirectory new)))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1959 (catch 'found
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1960 (mapcar
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1961 (function
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1962 (lambda (s)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1963 (if (eq backend (cdr s))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1964 (let* ((newmaster (format (car s) newdir newbase))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1965 (newmasterdir (file-name-directory newmaster)))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1966 (if (or (not newmasterdir)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1967 (file-directory-p newmasterdir))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1968 (throw 'found newmaster))))))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1969 vc-master-templates)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1970 (error "New file lacks a version control directory"))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1971 (if (or (not oldmaster) (file-exists-p old))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1972 (rename-file old new)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1973 ; ?? Renaming a file might change its contents due to keyword expansion.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1974 ; We should really check out a new copy if the old copy was precisely equal
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1975 ; to some checked in version. However, testing for this is tricky....
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1976 (if oldbuf
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1977 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1978 (set-buffer oldbuf)
15227
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
1979 (let ((buffer-read-only buffer-read-only))
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
1980 (set-visited-file-name new))
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
1981 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
1982 (vc-mode-line new)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1983 (set-buffer-modified-p nil))))
1243
de79e26e67cf (vc-rename-file): Use OLD, not FILE which is unbound.
Richard M. Stallman <rms@gnu.org>
parents: 1232
diff changeset
1984 ;; This had FILE, I changed it to OLD. -- rms.
de79e26e67cf (vc-rename-file): Use OLD, not FILE which is unbound.
Richard M. Stallman <rms@gnu.org>
parents: 1232
diff changeset
1985 (vc-backend-dispatch old
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1986 (vc-record-rename old new) ;SCCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1987 nil ;RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1988 nil ;CVS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1989 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1990 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1991
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1992 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
1993 (defun vc-update-change-log (&rest args)
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1994 "Find change log file and add entries from recent RCS/CVS logs.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
1995 Normally, find log entries for all registered files in the default
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
1996 directory using `rcs2log', which finds CVS logs preferentially.
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
1997 The mark is left at the end of the text prepended to the change log.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
1998
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
1999 With prefix arg of C-u, only find log entries for the current buffer's file.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2000
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2001 With any numeric prefix arg, find log entries for all currently visited
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2002 files that are under version control. This puts all the entries in the
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2003 log for the default directory, which may not be appropriate.
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2004
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2005 From a program, any arguments are assumed to be filenames and are
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2006 passed to the `rcs2log' script after massaging to be relative to the
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2007 default directory."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2008 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2009 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2010 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2011 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2012 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2013 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2014 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2015 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2016 (setq file (buffer-file-name (car buffers)))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
2017 (and file (vc-backend file)
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2018 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2019 (setq buffers (cdr buffers)))
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2020 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2021 (t
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2022 ;; `rcs2log' will find the relevant RCS or CVS files
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2023 ;; relative to the curent directory if none supplied.
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2024 nil)))
14053
c8c5b83d9691 (vc-update-change-log): Use add-log-full-name and
Karl Heuer <kwzh@gnu.org>
parents: 14040
diff changeset
2025 (let ((odefault default-directory)
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2026 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2027 ;; Presumably not portable to non-Unixy systems, along with rcs2log:
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2028 (tempfile (make-temp-name
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2029 (concat (file-name-as-directory
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2030 (directory-file-name (or (getenv "TMPDIR")
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2031 (getenv "TMP")
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2032 (getenv "TEMP")
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2033 "/tmp")))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2034 "vc")))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2035 (full-name (or add-log-full-name
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2036 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2037 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2038 (format "uid%d" (number-to-string (user-uid)))))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2039 (mailing-address (or add-log-mailing-address
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2040 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2041 (find-file-other-window changelog)
3905
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2042 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2043 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2044 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2045 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2046 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2047 (message "Computing change log entries...")
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2048 (message "Computing change log entries... %s"
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2049 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2050 (progn
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2051 (cd odefault)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2052 (if (eq 0 (apply 'call-process "rcs2log" nil
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2053 (list t tempfile) nil
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2054 "-c" changelog
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2055 "-u" (concat (vc-user-login-name)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2056 "\t" full-name
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2057 "\t" mailing-address)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2058 (mapcar
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2059 (function
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2060 (lambda (f)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2061 (file-relative-name
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2062 (if (file-name-absolute-p f)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2063 f
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2064 (concat odefault f)))))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2065 args)))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2066 "done"
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2067 (pop-to-buffer
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2068 (set-buffer (get-buffer-create "*vc*")))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2069 (erase-buffer)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2070 (insert-file tempfile)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2071 "failed"))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2072 (cd (file-name-directory changelog))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2073 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2074
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2075 ;; vc-annotate functionality (CVS only).
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2076 (defvar vc-annotate-mode nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2077 "Variable indicating if VC-Annotate mode is active.")
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2078
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2079 (defvar vc-annotate-mode-map nil
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2080 "Local keymap used for VC-Annotate mode.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2081
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2082 (defvar vc-annotate-mode-menu nil
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2083 "Local keymap used for VC-Annotate mode's menu bar menu.")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2084
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2085 ;; Syntax Table
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2086 (defvar vc-annotate-mode-syntax-table nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2087 "Syntax table used in VC-Annotate mode buffers.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2088
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2089 ;; Declare globally instead of additional parameter to
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2090 ;; temp-buffer-show-function (not possible to pass more than one
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2091 ;; parameter).
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2092 (defvar vc-annotate-ratio nil)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2093
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2094 (defun vc-annotate-mode-variables ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2095 (if (not vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2096 (progn (setq vc-annotate-mode-syntax-table (make-syntax-table))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2097 (set-syntax-table vc-annotate-mode-syntax-table)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2098 (if (not vc-annotate-mode-map)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2099 (setq vc-annotate-mode-map (make-sparse-keymap)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2100 (setq vc-annotate-mode-menu (make-sparse-keymap "Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2101 (define-key vc-annotate-mode-map [menu-bar]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2102 (make-sparse-keymap "VC-Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2103 (define-key vc-annotate-mode-map [menu-bar vc-annotate-mode]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2104 (cons "VC-Annotate" vc-annotate-mode-menu)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2105
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2106 (defun vc-annotate-mode ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2107 "Major mode for buffers displaying output from the CVS `annotate' command.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2108
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2109 You can use the mode-specific menu to alter the time-span of the used
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2110 colors. See variable `vc-annotate-menu-elements' for customizing the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2111 menu items."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2112 (interactive)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2113 (kill-all-local-variables) ; Recommended by RMS.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2114 (vc-annotate-mode-variables) ; This defines various variables.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2115 (use-local-map vc-annotate-mode-map) ; This provides the local keymap.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2116 (set-syntax-table vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2117 (setq major-mode 'vc-annotate-mode) ; This is how `describe-mode'
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2118 ; finds out what to describe.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2119 (setq mode-name "Annotate") ; This goes into the mode line.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2120 (run-hooks 'vc-annotate-mode-hook)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2121 (vc-annotate-add-menu))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2122
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2123 (defun vc-annotate-display-default (&optional event)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2124 "Use the default color spectrum for VC Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2125 (interactive)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2126 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2127 (vc-annotate-display (get-buffer (buffer-name)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2128 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2129
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2130 (defun vc-annotate-add-menu ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2131 "Adds the menu 'Annotate' to the menu bar in VC-Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2132 (define-key vc-annotate-mode-menu [default]
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2133 '("Default" . vc-annotate-display-default))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2134 (let ((menu-elements vc-annotate-menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2135 (while menu-elements
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2136 (let* ((element (car menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2137 (days (round (* element
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2138 (vc-annotate-car-last-cons vc-annotate-color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2139 0.7585))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2140 (setq menu-elements (cdr menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2141 (define-key vc-annotate-mode-menu
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2142 (vector days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2143 (cons (format "Span %d days"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2144 days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2145 `(lambda ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2146 ,(format "Use colors spanning %d days" days)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2147 (interactive)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2148 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2149 (vc-annotate-display
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2150 (get-buffer (buffer-name))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2151 (vc-annotate-time-span vc-annotate-color-map ,element))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2152 (message "Redisplaying annotation...done"))))))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2153
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2154 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2155 (defun vc-annotate (ratio)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2156 "Display the result of the CVS `annotate' command using colors.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2157 New lines are displayed in red, old in blue.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2158 A prefix argument specifies a factor for stretching the time scale.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2159
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2160 `vc-annotate-menu-elements' customizes the menu elements of the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2161 mode-specific menu. `vc-annotate-color-map' and
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2162 `vc-annotate-very-old-color' defines the mapping of time to
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2163 colors. `vc-annotate-background' specifies the background color."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2164 (interactive "p")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2165 (if (not (eq (vc-buffer-backend) 'CVS)) ; This only works with CVS
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2166 (vc-registration-error (buffer-file-name)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2167 (message "Annotating...")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2168 (let ((temp-buffer-name (concat "*cvs annotate " (buffer-name) "*"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2169 (temp-buffer-show-function 'vc-annotate-display)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2170 (vc-annotate-ratio ratio))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2171 (with-output-to-temp-buffer temp-buffer-name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2172 (call-process "cvs" nil (get-buffer temp-buffer-name) nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2173 "annotate" (file-name-nondirectory (buffer-file-name)))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2174 (message "Annotating... done"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2175
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2176 (defun vc-annotate-car-last-cons (a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2177 "Return car of last cons in association list A-LIST."
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2178 (if (not (eq nil (cdr a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2179 (vc-annotate-car-last-cons (cdr a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2180 (car (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2181
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2182 (defun vc-annotate-time-span (a-list span &optional quantize)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2183 "Return an association list with factor SPAN applied to the time-span
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2184 of association list A-LIST. Optionaly quantize to the factor of
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2185 QUANTIZE."
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2186 ;; Apply span to each car of every cons
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2187 (if (not (eq nil a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2188 (append (list (cons (* (car (car a-list)) span)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2189 (cdr (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2190 (vc-annotate-time-span (nthcdr (cond (quantize) ; optional
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2191 (1)) ; Default to cdr
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2192 a-list) span quantize))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2193
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2194 (defun vc-annotate-compcar (threshold a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2195 "Test successive cons cells of association list A-LIST against
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2196 THRESHOLD. Return the first cons cell which car is not less than
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2197 THRESHOLD, nil otherwise"
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2198 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2199 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2200 (while (and tmp-cons (< (car tmp-cons) threshold))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2201 (setq tmp-cons (car (nthcdr i a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2202 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2203 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2204
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2205
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2206 (defun vc-annotate-display (buffer &optional color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2207 "Do the VC-Annotate display in BUFFER using COLOR-MAP."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2208
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2209 ;; Handle the case of the global variable vc-annotate-ratio being
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2210 ;; set. This variable is used to pass information from function
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2211 ;; vc-annotate since it is not possible to use another parameter
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2212 ;; (see temp-buffer-show-function).
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2213 (if (and (not color-map) vc-annotate-ratio)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2214 ;; This will only be true if called from vc-annotate with ratio
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2215 ;; being non-nil.
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2216 (setq color-map (vc-annotate-time-span vc-annotate-color-map
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2217 vc-annotate-ratio)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2218
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2219 ;; We need a list of months and their corresponding numbers.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2220 (let* ((local-month-numbers
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2221 '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2222 ("May" . 5) ("Jun" . 6) ("Jul" . 7) ("Aug" . 8)
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2223 ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) ("Dec" . 12))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2224 (set-buffer buffer)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2225 (display-buffer buffer)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2226 (if (not vc-annotate-mode) ; Turn on vc-annotate-mode if not done
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2227 (vc-annotate-mode))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2228 (goto-char (point-min)) ; Position at the top of the buffer.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2229 (while (re-search-forward
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2230 "^\\S-+\\s-+\\S-+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2231 ;; "^[0-9]+\\(\.[0-9]+\\)*\\s-+(\\sw+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2232 nil t)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2233
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2234 (let* (;; Unfortunately, order is important. match-string will
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2235 ;; be corrupted by extent functions in XEmacs. Access
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2236 ;; string-matches first.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2237 (day (string-to-number (match-string 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2238 (month (cdr (assoc (match-string 2) local-month-numbers)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2239 (year-tmp (string-to-number (match-string 3)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2240 (year (+ (if (> 100 year-tmp) 1900 0) year-tmp)) ; Possible millenium problem
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2241 (high (- (car (current-time))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2242 (car (encode-time 0 0 0 day month year))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2243 (color (cond ((vc-annotate-compcar high (cond (color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2244 (vc-annotate-color-map))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2245 ((cons nil vc-annotate-very-old-color))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2246 ;; substring from index 1 to remove any leading `#' in the name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2247 (face-name (concat "vc-annotate-face-" (substring (cdr color) 1)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2248 ;; Make the face if not done.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2249 (face (cond ((intern-soft face-name))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2250 ((let ((tmp-face (make-face (intern face-name))))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2251 (set-face-foreground tmp-face (cdr color))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2252 (if vc-annotate-background
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2253 (set-face-background tmp-face vc-annotate-background))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2254 tmp-face)))) ; Return the face
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2255 (point (point)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2256
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2257 (forward-line 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2258 (overlay-put (make-overlay point (point) nil) 'face face)))))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2259
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2260
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2261 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2262
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2263 (defun vc-backend-admin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2264 ;; Register a file into the version-control system
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2265 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2266 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2267 ;; it deletes the workfile.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2268 (vc-file-clearprops file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2269 (or vc-default-back-end
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2270 (setq vc-default-back-end (if (vc-find-binary "rcs") 'RCS 'SCCS)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2271 (message "Registering %s..." file)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2272 (let ((switches
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2273 (if (stringp vc-register-switches)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2274 (list vc-register-switches)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2275 vc-register-switches))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2276 (backend
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2277 (cond
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2278 ((file-exists-p (vc-backend-subdirectory-name)) vc-default-back-end)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2279 ((file-exists-p "RCS") 'RCS)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2280 ((file-exists-p "SCCS") 'SCCS)
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2281 ((file-exists-p "CVS") 'CVS)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2282 (t vc-default-back-end))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2283 (cond ((eq backend 'SCCS)
17911
058196d8908e (vc-backend-admin): If there is no SCCS subdirectory yet, create it.
André Spiegel <spiegel@gnu.org>
parents: 17672
diff changeset
2284 ;; If there is no SCCS subdirectory yet, create it.
058196d8908e (vc-backend-admin): If there is no SCCS subdirectory yet, create it.
André Spiegel <spiegel@gnu.org>
parents: 17672
diff changeset
2285 ;; (SCCS could do without it, but VC requires it to be there.)
058196d8908e (vc-backend-admin): If there is no SCCS subdirectory yet, create it.
André Spiegel <spiegel@gnu.org>
parents: 17672
diff changeset
2286 (if (not (file-exists-p "SCCS")) (make-directory "SCCS"))
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2287 (apply 'vc-do-command nil 0 "admin" file 'MASTER ;; SCCS
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2288 (and rev (concat "-r" rev))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2289 "-fb"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2290 (concat "-i" file)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2291 (and comment (concat "-y" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2292 (format
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2293 (car (rassq 'SCCS vc-master-templates))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2294 (or (file-name-directory file) "")
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2295 (file-name-nondirectory file))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2296 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2297 (delete-file file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2298 (if vc-keep-workfiles
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2299 (vc-do-command nil 0 "get" file 'MASTER)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2300 ((eq backend 'RCS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2301 (apply 'vc-do-command nil 0 "ci" file 'WORKFILE ;; RCS
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2302 ;; if available, use the secure registering option
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2303 (and (vc-backend-release-p 'RCS "5.6.4") "-i")
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2304 (concat (if vc-keep-workfiles "-u" "-r") rev)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2305 (and comment (concat "-t-" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2306 switches))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2307 ((eq backend 'CVS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2308 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE ;; CVS
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2309 "add"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2310 (and comment (string-match "[^\t\n ]" comment)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2311 (concat "-m" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2312 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2313 )))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2314 (message "Registering %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2315 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2316
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2317 (defun vc-backend-checkout (file &optional writable rev workfile)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2318 ;; Retrieve a copy of a saved version into a workfile
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2319 (let ((filename (or workfile file))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2320 (file-buffer (get-file-buffer file))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2321 switches)
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2322 (message "Checking out %s..." filename)
10046
4c632e091d88 (vc-backend-checkout): Finish last change.
Roland McGrath <roland@gnu.org>
parents: 10045
diff changeset
2323 (save-excursion
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2324 ;; Change buffers to get local value of vc-checkout-switches.
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2325 (if file-buffer (set-buffer file-buffer))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2326 (setq switches (if (stringp vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2327 (list vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2328 vc-checkout-switches))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2329 ;; Save this buffer's default-directory
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2330 ;; and use save-excursion to make sure it is restored
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2331 ;; in the same buffer it was saved in.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2332 (let ((default-directory default-directory))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2333 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2334 ;; Adjust the default-directory so that the check-out creates
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2335 ;; the file in the right place.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2336 (setq default-directory (file-name-directory filename))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2337 (vc-backend-dispatch file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2338 (progn ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2339 (and rev (string= rev "") (setq rev nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2340 (if workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2341 ;; Some SCCS implementations allow checking out directly to a
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2342 ;; file using the -G option, but then some don't so use the
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2343 ;; least common denominator approach and use the -p option
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2344 ;; ala RCS.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2345 (let ((vc-modes (logior (file-modes (vc-name file))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2346 (if writable 128 0)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2347 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2348 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2349 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2350 (apply 'vc-do-command
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2351 nil 0 "/bin/sh" file 'MASTER "-c"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2352 ;; Some shells make the "" dummy argument into $0
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2353 ;; while others use the shell's name as $0 and
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2354 ;; use the "" as $1. The if-statement
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2355 ;; converts the latter case to the former.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2356 (format "if [ x\"$1\" = x ]; then shift; fi; \
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2357 umask %o; exec >\"$1\" || exit; \
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2358 shift; umask %o; exec get \"$@\""
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2359 (logand 511 (lognot vc-modes))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2360 (logand 511 (lognot (default-file-modes))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2361 "" ; dummy argument for shell's $0
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2362 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2363 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2364 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2365 (and rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2366 (concat "-r" (vc-lookup-triple file rev)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2367 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2368 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2369 (and failed (file-exists-p filename)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2370 (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2371 (apply 'vc-do-command nil 0 "get" file 'MASTER ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2372 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2373 (and rev (concat "-r" (vc-lookup-triple file rev)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2374 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2375 (vc-file-setprop file 'vc-workfile-version nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2376 (if workfile ;; RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2377 ;; RCS doesn't let us check out into arbitrary file names directly.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2378 ;; Use `co -p' and make stdout point to the correct file.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2379 (let ((vc-modes (logior (file-modes (vc-name file))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2380 (if writable 128 0)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2381 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2382 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2383 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2384 (apply 'vc-do-command
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2385 nil 0 "/bin/sh" file 'MASTER "-c"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2386 ;; See the SCCS case, above, regarding the
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2387 ;; if-statement.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2388 (format "if [ x\"$1\" = x ]; then shift; fi; \
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2389 umask %o; exec >\"$1\" || exit; \
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2390 shift; umask %o; exec co \"$@\""
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2391 (logand 511 (lognot vc-modes))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2392 (logand 511 (lognot (default-file-modes))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2393 "" ; dummy argument for shell's $0
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2394 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2395 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2396 (concat "-p" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2397 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2398 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2399 (and failed (file-exists-p filename) (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2400 (let (new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2401 ;; if we should go to the head of the trunk,
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2402 ;; clear the default branch first
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2403 (and rev (string= rev "")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2404 (vc-do-command nil 0 "rcs" file 'MASTER "-b"))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2405 ;; now do the checkout
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2406 (apply 'vc-do-command
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2407 nil 0 "co" file 'MASTER
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2408 ;; If locking is not strict, force to overwrite
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2409 ;; the writable workfile.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2410 (if (eq (vc-checkout-model file) 'implicit) "-f")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2411 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2412 (if rev (concat "-r" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2413 ;; if no explicit revision was specified,
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2414 ;; check out that of the working file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2415 (let ((workrev (vc-workfile-version file)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2416 (if workrev (concat "-r" workrev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2417 nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2418 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2419 ;; determine the new workfile version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2420 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2421 (set-buffer "*vc*")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2422 (goto-char (point-min))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2423 (setq new-version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2424 (if (re-search-forward "^revision \\([0-9.]+\\).*\n" nil t)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2425 (buffer-substring (match-beginning 1) (match-end 1)))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2426 (vc-file-setprop file 'vc-workfile-version new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2427 ;; if necessary, adjust the default branch
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2428 (and rev (not (string= rev ""))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2429 (vc-do-command nil 0 "rcs" file 'MASTER
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2430 (concat "-b" (if (vc-latest-on-branch-p file)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2431 (if (vc-trunk-p new-version) nil
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2432 (vc-branch-part new-version))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2433 new-version))))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2434 (if workfile ;; CVS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2435 ;; CVS is much like RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2436 (let ((failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2437 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2438 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2439 (apply 'vc-do-command
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2440 nil 0 "/bin/sh" file 'WORKFILE "-c"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2441 "exec >\"$1\" || exit; shift; exec cvs update \"$@\""
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2442 "" ; dummy argument for shell's $0
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2443 workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2444 (concat "-r" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2445 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2446 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2447 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2448 (and failed (file-exists-p filename) (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2449 ;; default for verbose checkout: clear the sticky tag
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2450 ;; so that the actual update will get the head of the trunk
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2451 (and rev (string= rev "")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2452 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2453 ;; If a revision was specified, check that out.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2454 (if rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2455 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2456 (and writable (eq (vc-checkout-model file) 'manual) "-w")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2457 "update"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2458 (and rev (not (string= rev ""))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2459 (concat "-r" rev))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2460 switches)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2461 ;; If no revision was specified, call "cvs edit" to make
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2462 ;; the file writeable.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2463 (and writable (eq (vc-checkout-model file) 'manual)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2464 (vc-do-command nil 0 "cvs" file 'WORKFILE "edit")))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2465 (if rev (vc-file-setprop file 'vc-workfile-version nil))))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2466 (cond
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2467 ((not workfile)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2468 (vc-file-clear-masterprops file)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2469 (if writable
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2470 (vc-file-setprop file 'vc-locking-user (vc-user-login-name)))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2471 (vc-file-setprop file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2472 'vc-checkout-time (nth 5 (file-attributes file)))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2473 (message "Checking out %s...done" filename))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2474
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2475 (defun vc-backend-logentry-check (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2476 (vc-backend-dispatch file
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
2477 (if (>= (buffer-size) 512) ;; SCCS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2478 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2479 (goto-char 512)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2480 (error
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2481 "Log must be less than 512 characters; point is now at pos 512")))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2482 nil ;; RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2483 nil) ;; CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2484 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2485
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2486 (defun vc-backend-checkin (file rev comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2487 ;; Register changes to FILE as level REV with explanatory COMMENT.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2488 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2489 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2490 ;; it deletes the workfile.
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2491 ;; Adaptation for RCS branch support: if this is an explicit checkin,
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2492 ;; or if the checkin creates a new branch, set the master file branch
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2493 ;; accordingly.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2494 (message "Checking in %s..." file)
12210
a74a202e9660 (vc-backend-checkin): Provide an explicit string saying
Richard M. Stallman <rms@gnu.org>
parents: 12153
diff changeset
2495 ;; "This log message intentionally left almost blank".
12365
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2496 ;; RCS 5.7 gripes about white-space-only comments too.
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2497 (or (and comment (string-match "[^\t\n ]" comment))
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2498 (setq comment "*** empty log message ***"))
1337
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2499 (save-excursion
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2500 ;; Change buffers to get local value of vc-checkin-switches.
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2501 (set-buffer (or (get-file-buffer file) (current-buffer)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2502 (let ((switches
13890
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2503 (if (stringp vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2504 (list vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2505 vc-checkin-switches)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2506 ;; Clear the master-properties. Do that here, not at the
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2507 ;; end, because if the check-in fails we want them to get
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2508 ;; re-computed before the next try.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2509 (vc-file-clear-masterprops file)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2510 (vc-backend-dispatch file
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2511 ;; SCCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2512 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2513 (apply 'vc-do-command nil 0 "delta" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2514 (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2515 (concat "-y" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2516 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2517 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2518 (vc-file-setprop file 'vc-workfile-version nil)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2519 (if vc-keep-workfiles
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2520 (vc-do-command nil 0 "get" file 'MASTER))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2521 )
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2522 ;; RCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2523 (let ((old-version (vc-workfile-version file)) new-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2524 (apply 'vc-do-command nil 0 "ci" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2525 ;; if available, use the secure check-in option
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2526 (and (vc-backend-release-p 'RCS "5.6.4") "-j")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2527 (concat (if vc-keep-workfiles "-u" "-r") rev)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2528 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2529 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2530 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2531 (vc-file-setprop file 'vc-workfile-version nil)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2532
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2533 ;; determine the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2534 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2535 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2536 (if (or (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2537 "new revision: \\([0-9.]+\\);" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2538 (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2539 "reverting to previous revision \\([0-9.]+\\)" nil t))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2540 (progn (setq new-version (buffer-substring (match-beginning 1)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2541 (match-end 1)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2542 (vc-file-setprop file 'vc-workfile-version new-version)))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2543
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2544 ;; if we got to a different branch, adjust the default
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2545 ;; branch accordingly
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2546 (cond
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2547 ((and old-version new-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2548 (not (string= (vc-branch-part old-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2549 (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2550 (vc-do-command nil 0 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2551 (if (vc-trunk-p new-version) "-b"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2552 (concat "-b" (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2553 ;; If this is an old RCS release, we might have
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2554 ;; to remove a remaining lock.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2555 (if (not (vc-backend-release-p 'RCS "5.6.2"))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2556 ;; exit status of 1 is also accepted.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2557 ;; It means that the lock was removed before.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2558 (vc-do-command nil 1 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2559 (concat "-u" old-version))))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2560 ;; CVS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2561 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2562 ;; explicit check-in to the trunk requires a
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2563 ;; double check-in (first unexplicit) (CVS-1.3)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2564 (condition-case nil
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2565 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2566 (if (and rev (vc-trunk-p rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2567 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2568 "ci" "-m" "intermediate"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2569 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2570 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2571 "ci" (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2572 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2573 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2574 (error (if (eq (vc-cvs-status file) 'needs-merge)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2575 ;; The CVS output will be on top of this message.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2576 (error "Type C-x 0 C-x C-q to merge in changes")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2577 (error "Check-in failed"))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2578 ;; determine and store the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2579 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2580 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2581 (if (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2582 "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2583 (vc-file-setprop file 'vc-workfile-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2584 (buffer-substring (match-beginning 2)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2585 (match-end 2)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2586 (vc-file-setprop file 'vc-workfile-version nil))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2587 ;; if this was an explicit check-in, remove the sticky tag
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2588 (if rev
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2589 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2590 ;; Forget the checkout model, because we might have assumed
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2591 ;; a wrong one when we found the file. After commit, we can
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2592 ;; tell it from the permissions of the file
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2593 ;; (see vc-checkout-model).
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2594 (vc-file-setprop file 'vc-checkout-model nil)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2595 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2596 (vc-file-setprop file 'vc-checkout-time
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2597 (nth 5 (file-attributes file)))))))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2598 (message "Checking in %s...done" file))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2599
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2600 (defun vc-backend-revert (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2601 ;; Revert file to latest checked-in version.
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2602 ;; (for RCS, to workfile version)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2603 (message "Reverting %s..." file)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2604 (vc-file-clear-masterprops file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2605 (vc-backend-dispatch
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2606 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2607 ;; SCCS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2608 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2609 (vc-do-command nil 0 "unget" file 'MASTER nil)
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2610 (vc-do-command nil 0 "get" file 'MASTER nil))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2611 ;; RCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2612 (vc-do-command nil 0 "co" file 'MASTER
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2613 "-f" (concat "-u" (vc-workfile-version file)))
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2614 ;; CVS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2615 (progn
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2616 (delete-file file)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2617 (vc-do-command nil 0 "cvs" file 'WORKFILE "update")))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2618 (vc-file-setprop file 'vc-locking-user 'none)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2619 (vc-file-setprop file 'vc-checkout-time (nth 5 (file-attributes file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2620 (message "Reverting %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2621 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2622
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2623 (defun vc-backend-steal (file &optional rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2624 ;; Steal the lock on the current workfile. Needs RCS 5.6.2 or later for -M.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2625 (message "Stealing lock on %s..." file)
4281
8407cf00af85 (vc-backend-steal): Pass arg omitted in last change.
Richard M. Stallman <rms@gnu.org>
parents: 4228
diff changeset
2626 (vc-backend-dispatch file
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2627 (progn ;SCCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2628 (vc-do-command nil 0 "unget" file 'MASTER "-n" (if rev (concat "-r" rev)))
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2629 (vc-do-command nil 0 "get" file 'MASTER "-g" (if rev (concat "-r" rev)))
4228
f1441ca7277e > (vc-backend-revert): Use `co -f' instead of deleting the
Paul Eggert <eggert@twinsun.com>
parents: 4158
diff changeset
2630 )
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2631 (vc-do-command nil 0 "rcs" file 'MASTER ;RCS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2632 "-M" (concat "-u" rev) (concat "-l" rev))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2633 (error "You cannot steal a CVS lock; there are no CVS locks to steal") ;CVS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2634 )
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2635 (vc-file-setprop file 'vc-locking-user (vc-user-login-name))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2636 (message "Stealing lock on %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2637 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2638
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2639 (defun vc-backend-uncheck (file target)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2640 ;; Undo the latest checkin.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2641 (message "Removing last change from %s..." file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2642 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2643 (vc-do-command nil 0 "rmdel" file 'MASTER (concat "-r" target))
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2644 (vc-do-command nil 0 "rcs" file 'MASTER (concat "-o" target))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2645 nil ;; this is never reached under CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2646 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2647 (message "Removing last change from %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2648 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2649
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2650 (defun vc-backend-print-log (file)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2651 ;; Get change log associated with FILE.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2652 (vc-backend-dispatch
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2653 file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2654 (vc-do-command nil 0 "prs" file 'MASTER)
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2655 (vc-do-command nil 0 "rlog" file 'MASTER)
16529
5e1ecf96072f (vc-backend-print-log): Use "cvs log" to get log entries, not "cvs rlog".
Richard M. Stallman <rms@gnu.org>
parents: 16447
diff changeset
2656 (vc-do-command nil 0 "cvs" file 'WORKFILE "log")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2657
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2658 (defun vc-backend-assign-name (file name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2659 ;; Assign to a FILE's latest version a given NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2660 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2661 (vc-add-triple name file (vc-latest-version file)) ;; SCCS
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2662 (vc-do-command nil 0 "rcs" file 'MASTER (concat "-n" name ":")) ;; RCS
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2663 (vc-do-command nil 0 "cvs" file 'WORKFILE "tag" name) ;; CVS
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2664 )
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2665 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2666
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2667 (defun vc-backend-diff (file &optional oldvers newvers cmp)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2668 ;; Get a difference report between two versions of FILE.
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2669 ;; Get only a brief comparison report if CMP, a difference report otherwise.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2670 (let ((backend (vc-backend file)) options status
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2671 (diff-switches-list (if (listp diff-switches)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2672 diff-switches
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2673 (list diff-switches))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2674 (cond
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2675 ((eq backend 'SCCS)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
2676 (setq oldvers (vc-lookup-triple file oldvers))
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2677 (setq newvers (vc-lookup-triple file newvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2678 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2679 (and oldvers (concat "-r" oldvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2680 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2681 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2682 (apply 'vc-do-command "*vc-diff*" 1 "vcdiff" file 'MASTER options))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2683 ((eq backend 'RCS)
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2684 (if (not oldvers) (setq oldvers (vc-workfile-version file)))
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2685 ;; If we know that --brief is not supported, don't try it.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2686 (setq cmp (and cmp (not (eq vc-rcsdiff-knows-brief 'no))))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2687 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2688 (concat "-r" oldvers)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2689 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2690 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2691 (setq status (apply 'vc-do-command "*vc-diff*" 2
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2692 "rcsdiff" file 'WORKFILE options))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2693 ;; If --brief didn't work, do a double-take and remember it
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2694 ;; for the future.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2695 (if (eq status 2)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2696 (prog1
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2697 (apply 'vc-do-command "*vc-diff*" 1 "rcsdiff" file 'WORKFILE
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2698 (if cmp (cdr options) options))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2699 (if cmp (setq vc-rcsdiff-knows-brief 'no)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2700 ;; If --brief DID work, remember that, too.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2701 (and cmp (not vc-rcsdiff-knows-brief)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2702 (setq vc-rcsdiff-knows-brief 'yes))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2703 status))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2704 ;; CVS is different.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2705 ((eq backend 'CVS)
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2706 (if (string= (vc-workfile-version file) "0")
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2707 ;; This file is added but not yet committed; there is no master file.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2708 (if (or oldvers newvers)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2709 (error "No revisions of %s exist" file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2710 (if cmp 1 ;; file is added but not committed,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2711 ;; we regard this as "changed".
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2712 ;; diff it against /dev/null.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2713 (apply 'vc-do-command
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2714 "*vc-diff*" 1 "diff" file 'WORKFILE
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2715 (append (if (listp diff-switches)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2716 diff-switches
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2717 (list diff-switches)) '("/dev/null")))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2718 ;; cmp is not yet implemented -- we always do a full diff.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2719 (apply 'vc-do-command
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2720 "*vc-diff*" 1 "cvs" file 'WORKFILE "diff"
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2721 (and oldvers (concat "-r" oldvers))
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2722 (and newvers (concat "-r" newvers))
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2723 (if (listp diff-switches)
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2724 diff-switches
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2725 (list diff-switches)))))
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2726 (t
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2727 (vc-registration-error file)))))
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2728
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2729 (defun vc-backend-merge-news (file)
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2730 ;; Merge in any new changes made to FILE.
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2731 (message "Merging changes into %s..." file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2732 (prog1
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2733 (vc-backend-dispatch
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2734 file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2735 (error "vc-backend-merge-news not meaningful for SCCS files") ;SCCS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2736 (error "vc-backend-merge-news not meaningful for RCS files") ;RCS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2737 (save-excursion ; CVS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2738 (vc-file-clear-masterprops file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2739 (vc-file-setprop file 'vc-workfile-version nil)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2740 (vc-file-setprop file 'vc-locking-user nil)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2741 (vc-file-setprop file 'vc-checkout-time nil)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2742 (vc-do-command nil 0 "cvs" file 'WORKFILE "update")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2743 ;; Analyze the merge result reported by CVS, and set
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2744 ;; file properties accordingly.
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2745 (set-buffer (get-buffer "*vc*"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2746 (goto-char (point-min))
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2747 ;; get new workfile version
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2748 (if (re-search-forward (concat "^Merging differences between "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2749 "[01234567890.]* and "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2750 "\\([01234567890.]*\\) into")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2751 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2752 (vc-file-setprop file 'vc-workfile-version (match-string 1)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2753 ;; get file status
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2754 (if (re-search-forward
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2755 (concat "^\\([CMU]\\) "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2756 (regexp-quote (file-name-nondirectory file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2757 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2758 (cond
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2759 ;; Merge successful, we are in sync with repository now
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2760 ((string= (match-string 1) "U")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2761 (vc-file-setprop file 'vc-locking-user 'none)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2762 (vc-file-setprop file 'vc-checkout-time
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2763 (nth 5 (file-attributes file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2764 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2765 ;; Merge successful, but our own changes are still in the file
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2766 ((string= (match-string 1) "M")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2767 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2768 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2769 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2770 ;; Conflicts detected!
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2771 ((string= (match-string 1) "C")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2772 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2773 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2774 1) ;; signal the error to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2775 )
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2776 (pop-to-buffer "*vc*")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2777 (error "Couldn't analyze cvs update result"))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2778 (message "Merging changes into %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2779
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2780 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2781 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2782 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2783 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2784 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2785 (vc-backend-dispatch buffer-file-name
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2786 (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" nil t) ;; SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2787 (re-search-forward "\\$[A-Za-z\300-\326\330-\366\370-\377]+\\(: [\t -#%-\176\240-\377]*\\)?\\$" nil t) ;; RCS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2788 'RCS ;; CVS works like RCS in this regard.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2789 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2790 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2791
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2792 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2793
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2794 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2795
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
2796 (defun vc-log-mode (&optional file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2797 "Minor mode for driving version-control tools.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2798 These bindings are added to the global keymap when you enter this mode:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2799 \\[vc-next-action] perform next logical version-control operation on current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2800 \\[vc-register] register current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2801 \\[vc-toggle-read-only] like next-action, but won't register files
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2802 \\[vc-insert-headers] insert version-control headers in current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2803 \\[vc-print-log] display change history of current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2804 \\[vc-revert-buffer] revert buffer to latest version
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2805 \\[vc-cancel-version] undo latest checkin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2806 \\[vc-diff] show diffs between file versions
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2807 \\[vc-version-other-window] visit old version in another window
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2808 \\[vc-directory] show all files locked by any user in or below .
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2809 \\[vc-annotate] colorful display of the cvs annotate command
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2810 \\[vc-update-change-log] add change log entry from recent checkins
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2811
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2812 While you are entering a change log message for a version, the following
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2813 additional bindings will be in effect.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2814
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2815 \\[vc-finish-logentry] proceed with check in, ending log message entry
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2816
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2817 Whenever you do a checkin, your log comment is added to a ring of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2818 saved comments. These can be recalled as follows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2819
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2820 \\[vc-next-comment] replace region with next message in comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2821 \\[vc-previous-comment] replace region with previous message in comment ring
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
2822 \\[vc-comment-search-reverse] search backward for regexp in the comment ring
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
2823 \\[vc-comment-search-forward] search backward for regexp in the comment ring
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2824
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2825 Entry to the change-log submode calls the value of text-mode-hook, then
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2826 the value of vc-log-mode-hook.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2827
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2828 Global user options:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2829 vc-initial-comment If non-nil, require user to enter a change
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2830 comment upon first checkin of the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2831
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2832 vc-keep-workfiles Non-nil value prevents workfiles from being
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2833 deleted when changes are checked in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2834
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2835 vc-suppress-confirm Suppresses some confirmation prompts,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2836 notably for reversions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2837
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
2838 vc-header-alist Which keywords to insert when adding headers
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2839 with \\[vc-insert-headers]. Defaults to
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2840 '(\"\%\W\%\") under SCCS, '(\"\$Id\$\") under
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2841 RCS and CVS.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2842
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2843 vc-static-header-alist By default, version headers inserted in C files
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2844 get stuffed in a static string area so that
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2845 ident(RCS/CVS) or what(SCCS) can see them in
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2846 the compiled object code. You can override
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2847 this by setting this variable to nil, or change
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2848 the header template by changing it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2849
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2850 vc-command-messages if non-nil, display run messages from the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2851 actual version-control utilities (this is
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2852 intended primarily for people hacking vc
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2853 itself).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2854 "
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2855 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2856 (set-syntax-table text-mode-syntax-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2857 (use-local-map vc-log-entry-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2858 (setq local-abbrev-table text-mode-abbrev-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2859 (setq major-mode 'vc-log-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2860 (setq mode-name "VC-Log")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2861 (make-local-variable 'vc-log-file)
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
2862 (setq vc-log-file file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2863 (make-local-variable 'vc-log-version)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
2864 (make-local-variable 'vc-comment-ring-index)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2865 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2866 (setq buffer-file-name nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2867 (run-hooks 'text-mode-hook 'vc-log-mode-hook)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2868 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2869
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2870 ;; Initialization code, to be done just once at load-time
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2871 (if vc-log-entry-mode
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2872 nil
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2873 (setq vc-log-entry-mode (make-sparse-keymap))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2874 (define-key vc-log-entry-mode "\M-n" 'vc-next-comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2875 (define-key vc-log-entry-mode "\M-p" 'vc-previous-comment)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
2876 (define-key vc-log-entry-mode "\M-r" 'vc-comment-search-reverse)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2877 (define-key vc-log-entry-mode "\M-s" 'vc-comment-search-forward)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2878 (define-key vc-log-entry-mode "\C-c\C-c" 'vc-finish-logentry)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2879 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2880
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2881 ;;; These things should probably be generally available
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2882
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2883 (defun vc-file-tree-walk (dirname func &rest args)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2884 "Walk recursively through DIRNAME.
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2885 Invoke FUNC f ARGS on each non-directory file f underneath it."
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2886 (vc-file-tree-walk-internal (expand-file-name dirname) func args)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2887 (message "Traversing directory %s...done" dirname))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2888
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2889 (defun vc-file-tree-walk-internal (file func args)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2890 (if (not (file-directory-p file))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2891 (apply func file args)
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
2892 (message "Traversing directory %s..." (abbreviate-file-name file))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2893 (let ((dir (file-name-as-directory file)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2894 (mapcar
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2895 (function
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2896 (lambda (f) (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2897 (string-equal f ".")
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2898 (string-equal f "..")
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
2899 (member f vc-directory-exclusion-list)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2900 (let ((dirf (concat dir f)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2901 (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2902 (file-symlink-p dirf) ;; Avoid possible loops
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2903 (vc-file-tree-walk-internal dirf func args))))))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2904 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2905
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2906 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2907
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2908 ;;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2909 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2910 ;;; These may be useful to anyone who has to debug or extend the package.
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2911 ;;; (Note that this information corresponds to versions 5.x. Some of it
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2912 ;;; might have been invalidated by the additions to support branching
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2913 ;;; and RCS keyword lookup. AS, 1995/03/24)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2914 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2915 ;;; A fundamental problem in VC is that there are time windows between
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2916 ;;; vc-next-action's computations of the file's version-control state and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2917 ;;; the actions that change it. This is a window open to lossage in a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2918 ;;; multi-user environment; someone else could nip in and change the state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2919 ;;; of the master during it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2920 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2921 ;;; The performance problem is that rlog/prs calls are very expensive; we want
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2922 ;;; to avoid them as much as possible.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2923 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2924 ;;; ANALYSIS:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2925 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2926 ;;; The performance problem, it turns out, simplifies in practice to the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2927 ;;; problem of making vc-locking-user fast. The two other functions that call
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2928 ;;; prs/rlog will not be so commonly used that the slowdown is a problem; one
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2929 ;;; makes snapshots, the other deletes the calling user's last change in the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2930 ;;; master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2931 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2932 ;;; The race condition implies that we have to either (a) lock the master
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2933 ;;; during the entire execution of vc-next-action, or (b) detect and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2934 ;;; recover from errors resulting from dispatch on an out-of-date state.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2935 ;;;
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2936 ;;; Alternative (a) appears to be infeasible. The problem is that we can't
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2937 ;;; guarantee that the lock will ever be removed. Suppose a user starts a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2938 ;;; checkin, the change message buffer pops up, and the user, having wandered
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2939 ;;; off to do something else, simply forgets about it?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2940 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2941 ;;; Alternative (b), on the other hand, works well with a cheap way to speed up
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2942 ;;; vc-locking-user. Usually, if a file is registered, we can read its locked/
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2943 ;;; unlocked state and its current owner from its permissions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2944 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2945 ;;; This shortcut will fail if someone has manually changed the workfile's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2946 ;;; permissions; also if developers are munging the workfile in several
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2947 ;;; directories, with symlinks to a master (in this latter case, the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2948 ;;; permissions shortcut will fail to detect a lock asserted from another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2949 ;;; directory).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2950 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2951 ;;; Note that these cases correspond exactly to the errors which could happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2952 ;;; because of a competing checkin/checkout race in between two instances of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2953 ;;; vc-next-action.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2954 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2955 ;;; For VC's purposes, a workfile/master pair may have the following states:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2956 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2957 ;;; A. Unregistered. There is a workfile, there is no master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2958 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2959 ;;; B. Registered and not locked by anyone.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2960 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2961 ;;; C. Locked by calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2962 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2963 ;;; D. Locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2964 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2965 ;;; E. Locked by someone other than the calling user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2966 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2967 ;;; This makes for 25 states and 20 error conditions. Here's the matrix:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2968 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2969 ;;; VC's idea of state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2970 ;;; |
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2971 ;;; V Actual state RCS action SCCS action Effect
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2972 ;;; A B C D E
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2973 ;;; A . 1 2 3 4 ci -u -t- admin -fb -i<file> initial admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2974 ;;; B 5 . 6 7 8 co -l get -e checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2975 ;;; C 9 10 . 11 12 co -u unget; get revert
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2976 ;;; D 13 14 15 . 16 ci -u -m<comment> delta -y<comment>; get checkin
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2977 ;;; E 17 18 19 20 . rcs -u -M -l unget -n ; get -g steal lock
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2978 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2979 ;;; All commands take the master file name as a last argument (not shown).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2980 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2981 ;;; In the discussion below, a "self-race" is a pathological situation in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2982 ;;; which VC operations are being attempted simultaneously by two or more
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2983 ;;; Emacsen running under the same username.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2984 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2985 ;;; The vc-next-action code has the following windows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2986 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2987 ;;; Window P:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2988 ;;; Between the check for existence of a master file and the call to
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2989 ;;; admin/checkin in vc-buffer-admin (apparent state A). This window may
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2990 ;;; never close if the initial-comment feature is on.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2991 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2992 ;;; Window Q:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2993 ;;; Between the call to vc-workfile-unchanged-p in and the immediately
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2994 ;;; following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2995 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2996 ;;; Window R:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2997 ;;; Between the call to vc-workfile-unchanged-p in and the following
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2998 ;;; checkin (apparent state D). This window may never close.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2999 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3000 ;;; Window S:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3001 ;;; Between the unlock and the immediately following checkout during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3002 ;;; revert operation (apparent state C). Included in window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3003 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3004 ;;; Window T:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3005 ;;; Between vc-locking-user and the following checkout (apparent state B).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3006 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3007 ;;; Window U:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3008 ;;; Between vc-locking-user and the following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3009 ;;; Includes windows Q and S.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3010 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3011 ;;; Window V:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3012 ;;; Between vc-locking-user and the following checkin (apparent state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3013 ;;; D). This window may never be closed if the user fails to complete the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3014 ;;; checkin message. Includes window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3015 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3016 ;;; Window W:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3017 ;;; Between vc-locking-user and the following steal-lock (apparent
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
3018 ;;; state E). This window may never close if the user fails to complete
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3019 ;;; the steal-lock message. Includes window X.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3020 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3021 ;;; Window X:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3022 ;;; Between the unlock and the immediately following re-lock during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3023 ;;; steal-lock operation (apparent state E). This window may never cloce
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3024 ;;; if the user fails to complete the steal-lock message.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3025 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3026 ;;; Errors:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3027 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3028 ;;; Apparent state A ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3029 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3030 ;;; 1. File looked unregistered but is actually registered and not locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3031 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3032 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3033 ;;; caller's admin happening before their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3034 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3035 ;;; RCS: Prior to version 5.6.4, ci fails with message
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3036 ;;; "no lock set by <user>". From 5.6.4 onwards, VC uses the new
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3037 ;;; ci -i option and the message is "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3038 ;;; SCCS: admin will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3039 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3040 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3041 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3042 ;;; 2. File looked unregistered but is actually locked by caller, unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3043 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3044 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3045 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3046 ;;; RCS: Prior to version 5.6.4, reverts the file to the last saved
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3047 ;;; version and unlocks it. From 5.6.4 onwards, VC uses the new
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3048 ;;; ci -i option, failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3049 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3050 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3051 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3052 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3053 ;;; 3. File looked unregistered but is actually locked by caller, changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3054 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3055 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3056 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3057 ;;; RCS: Prior to version 5.6.4, VC registers the caller's workfile as
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3058 ;;; a delta with a null change comment (the -t- switch will be
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3059 ;;; ignored). From 5.6.4 onwards, VC uses the new ci -i option,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3060 ;;; failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3061 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3062 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3063 ;;; 4. File looked unregistered but is locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3064 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3065 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3066 ;;; caller's admin happening *after* their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3067 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3068 ;;; RCS: Prior to version 5.6.4, ci fails with a
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3069 ;;; "no lock set by <user>" message. From 5.6.4 onwards,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3070 ;;; VC uses the new ci -i option, failing with message
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3071 ;;; "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3072 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3073 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3074 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3075 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3076 ;;; Apparent state B ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3077 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3078 ;;; 5. File looked registered and not locked, but is actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3079 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3080 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3081 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3082 ;;; RCS: will fail with "RCS/<file>: No such file or directory"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3083 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3084 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3085 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3086 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3087 ;;; 6. File looked registered and not locked, but is actually locked by the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3088 ;;; calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3089 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3090 ;;; Potential cause: self-race during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3091 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3092 ;;; RCS: in the same directory as the previous workfile, co -l will fail
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3093 ;;; with "co error: writable foo exists; checkout aborted". In any other
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3094 ;;; directory, checkout will succeed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3095 ;;; SCCS: will fail with ge17.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3096 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3097 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3098 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3099 ;;; 7. File looked registered and not locked, but is actually locked by the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3100 ;;; calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3101 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3102 ;;; As case 6.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3103 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3104 ;;; 8. File looked registered and not locked, but is actually locked by another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3105 ;;; user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3106 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3107 ;;; Potential cause: someone else checks it out during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3108 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3109 ;;; RCS: co error: revision 1.3 already locked by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3110 ;;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3111 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3112 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3113 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3114 ;;; Apparent state C ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3115 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3116 ;;; 9. File looks locked by calling user and unchanged, but is unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3117 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3118 ;;; As case 5.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3119 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3120 ;;; 10. File looks locked by calling user and unchanged, but is actually not
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3121 ;;; locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3122 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3123 ;;; Potential cause: a self-race in window U, or by the revert's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3124 ;;; landing during window X of some other user's steal-lock or window S
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3125 ;;; of another user's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3126 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3127 ;;; RCS: succeeds, refreshing the file from the identical version in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3128 ;;; the master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3129 ;;; SCCS: fails with error ut4 (p file nonexistent).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3130 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3131 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3132 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3133 ;;; 11. File is locked by calling user. It looks unchanged, but is actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3134 ;;; changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3135 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3136 ;;; Potential cause: the file would have to be touched by a self-race
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3137 ;;; during window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3138 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3139 ;;; The revert will succeed, removing whatever changes came with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3140 ;;; the touch. It is theoretically possible that work could be lost.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3141 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3142 ;;; 12. File looks like it's locked by the calling user and unchanged, but
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3143 ;;; it's actually locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3144 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3145 ;;; Potential cause: a steal-lock in window V.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3146 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3147 ;;; RCS: co error: revision <rev> locked by <user>; use co -r or rcs -u
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3148 ;;; SCCS: fails with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3149 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3150 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3151 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3152 ;;; Apparent state D ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3153 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3154 ;;; 13. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3155 ;;; actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3156 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3157 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3158 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3159 ;;; RCS: Prior to version 5.6.4, checks in the user's version as an
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3160 ;;; initial delta. From 5.6.4 onwards, VC uses the new ci -j
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3161 ;;; option, failing with message "no such file or directory".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3162 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3163 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3164 ;;; This case is kind of nasty. Under RCS prior to version 5.6.4,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3165 ;;; VC may fail to detect the loss of previous version information.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3166 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3167 ;;; 14. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3168 ;;; actually unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3169 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3170 ;;; Potential cause: self-race in window V, or the checkin happening
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3171 ;;; during the window X of someone else's steal-lock or window S of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3172 ;;; someone else's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3173 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3174 ;;; RCS: ci will fail with "no lock set by <user>".
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3175 ;;; SCCS: delta will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3176 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3177 ;;; 15. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3178 ;;; actually locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3179 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3180 ;;; Potential cause: another self-race --- a whole checkin/checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3181 ;;; sequence by the calling user would have to land in window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3182 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3183 ;;; SCCS: checks in a redundant delta and leaves the file unlocked as usual.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3184 ;;; RCS: reverts to the file state as of the second user's checkin, leaving
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3185 ;;; the file unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3186 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3187 ;;; It is theoretically possible that work could be lost under RCS.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3188 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3189 ;;; 16. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3190 ;;; actually locked by a different user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3191 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3192 ;;; RCS: ci error: no lock set by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3193 ;;; SCCS: unget will fail with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3194 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3195 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3196 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3197 ;;; Apparent state E ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3198 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3199 ;;; 17. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3200 ;;; unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3201 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3202 ;;; As case 13.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3203 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3204 ;;; 18. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3205 ;;; unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3206 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3207 ;;; Potential cause: someone released a lock during window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3208 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3209 ;;; RCS: The calling user will get the lock on the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3210 ;;; SCCS: unget -n will fail with cm4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3211 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3212 ;;; Either of these consequences will be OK.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3213 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3214 ;;; 19. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3215 ;;; locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3216 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3217 ;;; Potential cause: the other user relinquishing a lock followed by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3218 ;;; a self-race, both in window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3219 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3220 ;;; Under both RCS and SCCS, both unlock and lock will succeed, making
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3221 ;;; the sequence a no-op.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3222 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3223 ;;; 20. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3224 ;;; locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3225 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3226 ;;; As case 19.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3227 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3228 ;;; PROBLEM CASES:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3229 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3230 ;;; In order of decreasing severity:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3231 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3232 ;;; Cases 11 and 15 are the only ones that potentially lose work.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3233 ;;; They would require a self-race for this to happen.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3234 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3235 ;;; Case 13 in RCS loses information about previous deltas, retaining
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3236 ;;; only the information in the current workfile. This can only happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3237 ;;; if the master file gets nuked in window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3238 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3239 ;;; Case 3 in RCS and case 15 under SCCS insert a redundant delta with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3240 ;;; no change comment in the master. This would require a self-race in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3241 ;;; window P or R respectively.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3242 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3243 ;;; Cases 2, 10, 19 and 20 do extra work, but make no changes.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3244 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3245 ;;; Unfortunately, it appears to me that no recovery is possible in these
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3246 ;;; cases. They don't yield error messages, so there's no way to tell that
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3247 ;;; a race condition has occurred.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3248 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3249 ;;; All other cases don't change either the workfile or the master, and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3250 ;;; trigger command errors which the user will see.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3251 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3252 ;;; Thus, there is no explicit recovery code.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3253
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3254 ;;; vc.el ends here