annotate lisp/vc.el @ 16945:d6cd00b2e214

(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod might need it. (fmod): Ensure that the magnitude of the result does not exceed that of the divisor, and that the sign of the result does not disagree with that of the dividend. This does not yield a particularly accurate result, but at least it will be in the range promised by fmod.
author Paul Eggert <eggert@twinsun.com>
date Tue, 28 Jan 1997 04:51:45 +0000
parents d57c1c1bb966
children 6a9b49bc5161
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
14734
20f4c4a078b2 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14376
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96 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
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; 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
11 ;; 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
12 ;; the Free Software Foundation; either version 2, or (at your option)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; any later version.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; 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
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; 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
21 ;; 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
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
23 ;; Boston, MA 02111-1307, USA.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
27 ;; 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
28 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29 ;; 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
30 ;; 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
31 ;; 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
32 ;; 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
33 ;; 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
34 ;; Andre Spiegel <spiegel@inf.fu-berlin.de>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35 ;;
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
36 ;; 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
37 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
38 ;; 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
39 ;; 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
40 ;; 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
41 ;; 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
42 ;; 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
43 ;; 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
44 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;;
12926
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
46 ;; 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
47 ;; vc-master-templates list.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
52 ;; 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
53 ;; 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
54 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55 ;; 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
56 ;; 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
57 ;; 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
58 ;; You also need Emacs 19's ring.el.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 ;; 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
61 ;; 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
62 ;; 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
63 ;; 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
64 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; 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
67 ;; the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ;;; Code:
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 (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
72 (require 'ring)
8290
f95e050e272f At compile time, require dired.
Richard M. Stallman <rms@gnu.org>
parents: 8237
diff changeset
73 (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
74
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
75 (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
76 (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
77 (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
78 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
79
12280
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
80 ;; 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
81 ;; 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
82 ;; 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
83 ;; have to change.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
84
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
85 (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
86 "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
87 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
88 \(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
89 (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
90 (list 'cond
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
91 (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
92 (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
93 (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
94 (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
95 )))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
96
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
97 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
98
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 (defvar vc-suppress-confirm nil
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
100 "*If non-nil, treat user as expert; suppress yes-no prompts on some things.")
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
101 (defvar vc-initial-comment nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
102 "*If non-nil, prompt for initial comment when a file is registered.")
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
103 (defvar vc-command-messages nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
104 "*If non-nil, display run messages from back-end commands.")
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
105 (defvar vc-register-switches nil
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
106 "*A string or list of strings specifying extra switches passed
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
107 to the register program by \\[vc-register].")
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
108 (defvar vc-checkin-switches nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
109 "*A string or list of strings specifying extra switches passed
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
110 to the checkin program by \\[vc-checkin].")
10045
a29e447fb7f7 (vc-checkout-switches): New variable.
Roland McGrath <roland@gnu.org>
parents: 9827
diff changeset
111 (defvar vc-checkout-switches nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
112 "*A string or list of strings specifying extra switches passed
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
113 to the checkout program by \\[vc-checkout].")
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
114 (defvar vc-directory-exclusion-list '("SCCS" "RCS" "CVS")
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
115 "*A list of directory names ignored by functions that recursively
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
116 walk file trees.")
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
117
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
118 (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
119 "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
120
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
121 ;;; 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
122 (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
123 "*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
124
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
125 ;;;###autoload
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
126 (defvar vc-checkin-hook nil
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
127 "*List of functions called after a checkin is done. See `run-hooks'.")
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
128
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
129 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
130
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
131 (defvar 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
132 '((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
133 "*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
134 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
135 be `RCS', `CVS', or `SCCS'. The second element is the string to
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
136 be inserted for this particular backend.")
5015
368dd7e8095d vc-static-header-alist shouldn't have been declared const.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 4991
diff changeset
137 (defvar vc-static-header-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
138 '(("\\.c$" .
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
139 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
140 "*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
141 template is replaced with the first string associated with the file's
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
142 version-control type in `vc-header-alist'.")
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
143
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
144 (defvar vc-comment-alist
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
145 '((nroff-mode ".\\\"" ""))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
146 "*Special comment delimiters to be used in generating vc headers only.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
147 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
148 and comment-end variables. This will only be necessary if the mode language
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
149 is sensitive to blank lines.")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
150
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
151 ;; Default is to be extra careful for super-user.
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
152 (defvar vc-checkout-carefully (= (user-uid) 0)
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
153 "*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
154 Verify that the file really is not locked
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
155 and that its contents match what the master file says.")
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
156
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
157 (defvar vc-rcs-release nil
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
158 "*The release number of your RCS installation, as a string.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
159 If nil, VC itself computes this value when it is first needed.")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
160
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
161 (defvar vc-sccs-release nil
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
162 "*The release number of your SCCS installation, as a string.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
163 If nil, VC itself computes this value when it is first needed.")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
164
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
165 (defvar 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
166 "*The release number of your CVS installation, as a string.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
167 If nil, VC itself computes this value when it is first needed.")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
168
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
169 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
170 (defvar vc-log-entry-mode nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
171 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
172 (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
173 (defvar vc-checkout-writable-buffer-hook 'vc-checkout-writable-buffer)
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
174 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
175 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
176 ;; (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
177 (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
178 (defvar vc-parent-buffer-name nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
179
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
180 (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
181 (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
182
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
183 (defconst vc-name-assoc-file "VC-names")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
184
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
185 (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
186 (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
187
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
188 (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
189 (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
190 (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
191
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
192 ;; 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
193
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
194 (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
195 (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
196 (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
197
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
198 (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
199 (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
200 (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
201
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
202 ; 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
203 (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
204 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
205 (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
206 (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
207 (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
208 ))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
209
12897
ee3f21f562b8 (file-regular-p-18): Fix test for whether to use this.
Richard M. Stallman <rms@gnu.org>
parents: 12885
diff changeset
210 (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
211 (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
212
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
213 ;;; 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
214
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
215 (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
216 ;; 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
217 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
218 ((eq backend 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
219 (or vc-rcs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
220 (and (zerop (vc-do-command nil 2 "rcs" nil nil "-V"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
221 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
222 (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
223 (setq vc-rcs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
224 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
225 '(("^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
226 (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
227 ((eq backend 'CVS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
228 (or vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
229 (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
230 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
231 (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
232 (setq vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
233 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
234 '(("^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
235 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
236 (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
237 ((eq backend 'SCCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
238 vc-sccs-release)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
239
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
240 (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
241 ;; 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
242 ;; 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
243 ;; 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
244 ;; 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
245 ;; 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
246 ;; 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
247 ;; 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
248 ;; 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
249 ;; 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
250 (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
251 (catch 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
252 (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
253 (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
254 (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
255 (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
256 (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
257 (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
258 (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
259 (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
260 (throw 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
261 (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
262 (substring r1 i1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
263 (substring r2 i2)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
264 (throw 'done t)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
265 (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
266 (throw 'done nil))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
267 (throw 'done t)))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
268
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
269 (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
270 ;; 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
271 (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
272 (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
273 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
274 ((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
275 (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
276
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
277 ;;; 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
278
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
279 (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
280 ;; 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
281 (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
282
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
283 (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
284 ;; 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
285 (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
286
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
287 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
288
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
289 (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
290 "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
291 (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
292 (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
293 ;; 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
294 ;; 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
295 (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
296
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
297 (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
298 ;; 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
299 ;; 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
300 (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
301 (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
302 (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
303 (progn ;; SCCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
304 (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
305 (progn ;; RCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
306 (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
307 (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
308 (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
309 (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
310 (progn
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
311 (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
312
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
313 (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
314 ;; 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
315 (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
316 (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
317 (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
318
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
319 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
320
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
321 (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
322 ;; 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
323 ;; 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
324 (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
325 ;; SCCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
326 (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
327 ;; RCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
328 (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
329 (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
330 (progn
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
331 ;; 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
332 ;; 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
333 ;; our back.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
334 (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
335 (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
336 workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
337 ;; 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
338 ;; 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
339 ;; 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
340 (save-excursion
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
341 (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
342 (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
343 (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
344 (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
345 "\\.[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
346 (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
347 (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
348 (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
349 ;; CVS
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
350 t))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
351
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
352 (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
353 (if file
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
354 (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
355 (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
356
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
357 (defvar vc-binary-assoc nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
358
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
359 (defun vc-find-binary (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
360 "Look for a command anywhere on the subprocess-command search path."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
361 (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
362 (catch 'found
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
363 (mapcar
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
364 (function
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
365 (lambda (s)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
366 (if s
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
367 (let ((full (concat s "/" name)))
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
368 (if (file-executable-p full)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
369 (progn
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
370 (setq vc-binary-assoc
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
371 (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
372 (throw 'found full)))))))
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
373 exec-path)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
374 nil)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
375
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
376 (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
377 "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
378 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
379 The command is successful if its exit status does not exceed OKSTATUS.
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
380 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
381 `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
382 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
383 (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
384 (if (not buffer) (setq buffer "*vc*"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
385 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
386 (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
387 (let ((obuf (current-buffer)) (camefrom (current-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
388 (squeezed nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
389 (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
390 (olddir default-directory)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
391 status)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
392 (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
393 (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
394 (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
395 (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
396 (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
397
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
398 (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
399
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
400 (mapcar
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
401 (function (lambda (s) (and s (setq squeezed (append squeezed (list s))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
402 flags)
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
403 (if (and vc-file (eq last 'MASTER))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
404 (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
405 (if (eq last 'WORKFILE)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
406 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
407 (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
408 (preflen (length pwd)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
409 (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
410 (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
411 (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
412 (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
413 ;; 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
414 (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
415 (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
416 path-separator
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
417 (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
418 process-environment))
16590
a0cfcb9f8033 Use w32 instead of ms-windows for window-system symbol
Geoff Voelker <voelker@cs.washington.edu>
parents: 16529
diff changeset
419 (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
420 (setq status (apply 'call-process command nil t nil squeezed)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
421 (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
422 (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
423 (forward-line -1)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
424 (if (or (not (integerp status)) (< okstatus status))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
425 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
426 (pop-to-buffer buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
427 (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
428 (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
429 (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
430 (if (integerp status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
431 (format "status %d" status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
432 status))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
433 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
434 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
435 (message "Running %s...OK" command))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
436 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
437 (set-buffer obuf)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
438 status)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
439 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
440
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
441 ;;; 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
442 ;;; 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
443 ;;; 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
444 ;;; 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
445 (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
446 (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
447 (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
448 (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
449 (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
450
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
451 ;;; 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
452 ;;; 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
453 (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
454 (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
455 (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
456 (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
457 (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
458 (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
459 (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
460 (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
461 (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
462 ;; 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
463 ;; 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
464 (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
465 ;; 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
466 ;; 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
467 (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
468 ;; 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
469 (- (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
470
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
471 (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
472 ;; 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
473 ;; 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
474 (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
475 ;; 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
476 (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
477 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
478 ;; 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
479 (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
480 ;; 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
481 (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
482 (let ((curbuf (current-buffer)))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
483 ;; 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
484 ;; 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
485 ;; 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
486 (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
487 (mapcar (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
488 (lambda (buffer)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
489 (set-buffer buffer)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
490 (let ((errors (or
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
491 compilation-old-error-list
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
492 compilation-error-list))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
493 (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
494 (while (and (consp errors)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
495 (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
496 (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
497 (eq buffer
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
498 (marker-buffer
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
499 (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
500 (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
501 (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
502 (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
503 (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
504 (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
505
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
506 (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
507 ;; 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
508 ;; 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
509 (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
510 (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
511 (reparse (nth 2 context)))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
512 ;; Reparse affected compilation buffers.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
513 (while reparse
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
514 (if (car reparse)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
515 (save-excursion
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
516 (set-buffer (car reparse))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
517 (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
518 ;; 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
519 ;; 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
520 (error-pos (marker-position
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
521 (car (car-safe compilation-error-list)))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
522 ;; 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
523 (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
524 ;; 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
525 ;; 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
526 (while (and compilation-error-list
2558
78a9cebdb22c (vc-revert-buffer1): Typo fix in last change.
Roland McGrath <roland@gnu.org>
parents: 2555
diff changeset
527 (/= 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
528 (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
529 (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
530
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
531 ;; 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
532 (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
533 (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
534 (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
535 (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
536 (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
537
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
538 (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
539 ;; 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
540 ;; 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
541 ;; 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
542 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
543 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
544 (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
545 ;; 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
546 (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
547 (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
548
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
549
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
550 (defun vc-buffer-sync (&optional not-urgent)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
551 ;; 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
552 ;; 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
553 (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
554 (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
555 (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
556 (save-buffer)
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
557 (if not-urgent
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
558 nil
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
559 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
560
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
561
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
562 (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
563 ;; Has the given workfile changed since last checkout?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
564 (let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
565 (lastmod (nth 5 (file-attributes file))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
566 (or (equal checkout-time lastmod)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
567 (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
568 (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
569 (not want-differences-if-changed)))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
570 ;; 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
571 (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
572 unchanged)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
573
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
574 (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
575 ;;; 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
576 (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
577 (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
578 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
579 (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
580
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
581 ;; 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
582 ((not vc-file)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
583 (vc-register verbose comment)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
584 (if vc-initial-comment
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
585 (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
586 '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
587 (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
588
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
589 ;; 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
590 ;; 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
591 ((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
592 (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
593 (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
594 (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
595 (yes-or-no-p
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
596 (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
597 (buffer-name))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
598 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
599 (if vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
600 (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
601 (buffer-modified-p buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
602 (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
603 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
604 (setq buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
605 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
606 (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
607 (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
608 (format
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
609 "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
610 (buffer-name buffer)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
611 (error "Merge aborted"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
612 (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
613 ;; 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
614 ;; 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
615 ;; 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
616 ;; message.
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
617 (message "Conflicts detected!"))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
618 (and buffer
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
619 (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
620 (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
621
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
622 ;; if there is no lock on the file, assert one and get it
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
623 ((not (setq owner (vc-locking-user file)))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
624 (if (and vc-checkout-carefully
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
625 (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
626 (if (save-window-excursion
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
627 (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
628 (goto-char (point-min))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
629 (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
630 file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
631 (not (beep))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
632 (yes-or-no-p
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
633 (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
634 "claim lock retaining changes? ")))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
635 (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
636 (vc-mode-line file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
637 (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
638 (error "Checkout aborted")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
639 (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
640 (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
641 )
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
642 (if verbose
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
643 (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
644 (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
645 (read-string "Branch or version to move to: "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
646 (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
647 (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
648 (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
649 (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
650 "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
651 (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
652 (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
653 (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
654 (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
655 "" ;; 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
656 (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
657 )))
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
658
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
659 ;; 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
660 ((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
661 (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
662 (if comment
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
663 (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
664 (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
665 (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
666 (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
667 (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
668 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
669 (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
670 (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
671 owner))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
672
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
673 ;; 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
674 (t
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
675 (if vc-dired-mode
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
676 (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
677 (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
678
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
679 ;; 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
680 (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
681
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
682 ;; 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
683 ;; 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
684 ;; 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
685 ;; 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
686 ;; 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
687 (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
688 (not (buffer-modified-p)))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
689 ;; 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
690 (cond
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
691 ((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
692 (vc-backend-revert file)
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
693 (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
694
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
695 ;; 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
696 (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
697 (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
698
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
699 ;; 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
700 (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
701 )))))
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
702
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
703 (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
704 ;; 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
705 ;; 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
706 (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
707 (dired-buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
708 (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
709 (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
710 (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
711 (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
712 (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
713 ;; 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
714 ;; 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
715 (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
716 (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
717 (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
718 (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
719 (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
720 (set-window-configuration configuration)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
721 (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
722 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
723
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
724 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
725
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
726 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
727 (defun vc-next-action (verbose)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
728 "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
729 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
730 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
731 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
732 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
733 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
734 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
735 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
736 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
737
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
738 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
739 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
740 control and then retrieves a writable, locked copy for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
741 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
742 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
743 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
744 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
745 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
746 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
747 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
748 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
749 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
750 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
751 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
752 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
753
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
754 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
755 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
756 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
757 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
758 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
759 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
760 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
761 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
762 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
763 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
764
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
765 (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
766 (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
767 (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
768 (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
769 (if (string= ""
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
770 (mapconcat
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
771 (function (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
772 (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
773 (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
774 (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
775 "@" "")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
776 (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
777 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
778 (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
779 (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
780 "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
781 '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
782 (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
783 (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
784 (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
785 (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
786 (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
787 (vc-registration-error nil))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
788
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
789 ;;; These functions help the vc-next-action entry point
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
790
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
791 (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
792 "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
793 (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
794 )
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
795
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
796 ;;;###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
797 (defun vc-register (&optional override comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
798 "Register the current file into your version-control system."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
799 (interactive "P")
12152
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
800 (or buffer-file-name
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
801 (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
802 (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
803 (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
804 (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
805 (and master
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
806 (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
807 (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
808 ;; 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
809 ;; 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
810 (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
811 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
812 (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
813 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
814 (vc-buffer-sync)
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
815 (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
816 ;; 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
817 (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
818 (setq backup-inhibited t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
819 (vc-admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
820 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
821 (and override
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
822 (read-string
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 (format "Initial version level for %s: " buffer-file-name))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
824 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
825
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
826 (defun vc-resynch-window (file &optional keep noquery)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
827 ;; If the given file is in the current buffer,
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
828 ;; either revert on it so we see expanded keywords,
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
829 ;; 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
830 ;; 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
831 ;; 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
832 ;; 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
833 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
834 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
835 (progn
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
836 ;; 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
837 ;; 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
838 (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
839 (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
840 (add-hook 'find-file-hooks 'vc-find-file-hook)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
841 (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
842 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
843
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
844 (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
845 ;; 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
846 (let ((buffer (get-file-buffer file)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
847 (if buffer
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
848 (save-excursion
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
849 (set-buffer buffer)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
850 (vc-resynch-window file keep noquery)))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
851
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
852 (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
853 ;; 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
854 ;; 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
855 ;; 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
856 ;; 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
857 ;; 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
858 (let ((parent (if file (find-file-noselect file) (current-buffer))))
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 (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
860 (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
861 (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
862 (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
863 (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
864 (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
865 (if file (vc-mode-line 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
866 (vc-log-mode)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
867 (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
868 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
869 (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
870 (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
871 (setq vc-log-file 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
872 (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
873 (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
874 (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
875 (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
876 (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
877 (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
878 (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
879 (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
880 (message "%s Type C-c C-c when done." msg))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
881
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
882 (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
883 "Check a file into your version-control system.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
884 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
885 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
886 (vc-start-entry file rev
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
887 (or comment (not vc-initial-comment))
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
888 "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
889 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
890
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
891 (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
892 "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
893 ;; 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
894 ;; 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
895 (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
896 (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
897 (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
898 (vc-resynch-buffer file t t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
899
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
900 (defun vc-steal-lock (file rev &optional owner)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
901 "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
902 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
903 (if (not owner)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
904 (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
905 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
906 (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
907 (setq file-description file))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
908 (if (not (y-or-n-p (format "Take the lock on %s from %s? "
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
909 file-description owner)))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
910 (error "Steal cancelled"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
911 (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
912 (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
913 (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
914 (mail-mode)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
915 (erase-buffer)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
916 (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
917 (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
918 (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
919 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
920 (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
921 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
922 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
923 (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
924
1343
9b5cb40cb6c8 (vc-steal-lock): Use mail-setup, and do like `mail'.
Richard M. Stallman <rms@gnu.org>
parents: 1337
diff changeset
925 ;; This is called when the notification has been sent.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
926 (defun vc-finish-steal (file version)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
927 (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
928 (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
929 (save-excursion
9046
09fb6d81f449 (vc-finish-steal): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9045
diff changeset
930 (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
931 (vc-resynch-window file t t))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
932
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
933 (defun vc-checkin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
934 "Check in the file specified by FILE.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
935 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
936 \(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
937 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
938 If the back-end is CVS, a writable workfile is always kept.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
939 COMMENT is a comment string; if omitted, a buffer is
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
940 popped up to accept a comment."
6581
3a0db3b2366c (vc-checkin): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6563
diff changeset
941 (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
942 "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
943 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
944
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
945 ;;; Here is a checkin hook that may prove useful to sites using the
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
946 ;;; ChangeLog facility supported by Emacs.
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
947 (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
948 "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
949 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
950 Second arg is file name of change log. \
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
951 If nil, uses `change-log-default-name'."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
952 (interactive (if current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
953 (list current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
954 (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
955 ;; 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
956 ;; before binding it.
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
957 (require 'add-log)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
958 (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
959 (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
960 ;; 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
961 (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
962 end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
963 ;; 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
964 (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
965 ;; 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
966 (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
967 (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
968 ;; 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
969 ;; 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
970 (delete-char -2))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
971 ;; 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
972 (just-one-space)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
973 ;; 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
974 (let ((indentation (current-indentation)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
975 (save-excursion
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
976 (while (< (point) end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
977 (forward-line 1)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
978 (indent-to indentation))
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
979 (setq end (point))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
980 ;; 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
981 (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
982 (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
983 (beginning-of-line)
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
984 (fill-region (point) end))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
985 ;; 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
986 ;; 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
987 (skip-syntax-forward " " end)
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
988 (delete-char (- (skip-syntax-backward " ")))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
989 (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
990 (insert "\n"))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
991
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
992
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
993 (defun vc-finish-logentry (&optional nocomment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
994 "Complete the operation implied by the current log entry."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
995 (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
996 ;; 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
997 (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
998 (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
999 (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
1000 (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
1001 (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
1002 ;; 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
1003 (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
1004 ;; 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
1005 (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
1006 ))
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1007 ;; 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
1008 ;; 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
1009 (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
1010 (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
1011 (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
1012 (vc-buffer-sync)))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1013 (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
1014 ;; 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
1015 (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
1016 (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
1017 (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
1018 (log-entry (buffer-string))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1019 (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
1020 ;; Return to "parent" buffer of this checkin and remove checkin window
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1021 (pop-to-buffer vc-parent-buffer)
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1022 (let ((logbuf (get-buffer "*VC-log*")))
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1023 (delete-windows-on logbuf)
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1024 (kill-buffer logbuf))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1025 ;; 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
1026 (save-excursion
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1027 (funcall log-operation
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1028 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1029 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1030 log-entry))
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
1031 ;; 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
1032 (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
1033 (vc-resynch-window buffer-file-name vc-keep-workfiles t))
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
1034 (run-hooks after-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1035
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1036 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1037
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
1038 (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
1039 "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
1040 (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
1041 (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
1042 (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
1043 (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
1044 (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
1045 (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
1046 (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
1047 ;; 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
1048 ;; 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
1049 ;; 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
1050 (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
1051 (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
1052 (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
1053 (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
1054 (setq vc-comment-ring-index
4509
aeef9d07f78d (vc-previous-comment): Use `mod', not `ring-mod'.
Paul Eggert <eggert@twinsun.com>
parents: 4480
diff changeset
1055 (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
1056 (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
1057 (insert (ring-ref vc-comment-ring vc-comment-ring-index))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1058
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
1059 (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
1060 "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
1061 (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
1062 (vc-previous-comment (- arg)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1063
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
1064 (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
1065 "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
1066 (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
1067 (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
1068 (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
1069 (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
1070 (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
1071 (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
1072 (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
1073 (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
1074 (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
1075 (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
1076 (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
1077 (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
1078 (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
1079 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1080
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
1081 (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
1082 "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
1083 (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
1084 (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
1085 (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
1086 (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
1087 (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
1088 (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
1089 (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
1090 (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
1091 (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
1092 (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
1093 (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
1094 (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
1095 (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
1096 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1097
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1098 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1099
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1100 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1101 (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
1102 "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
1103 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
1104 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
1105 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
1106 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
1107 (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
1108 (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
1109 (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
1110 (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
1111 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1112 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1113 (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
1114 (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
1115 (error
208145c77950 * vc.el (vc-diff, vc-directory-18): Add missing paren to end of
Jim Blandy <jimb@redhat.com>
parents: 4362
diff changeset
1116 "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
1117 (let ((file buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1118 unchanged)
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1119 (or (and file (vc-name file))
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1120 (vc-registration-error file))
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1121 (vc-buffer-sync not-urgent)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1122 (setq unchanged (vc-workfile-unchanged-p buffer-file-name))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1123 (if unchanged
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1124 (message "No changes to %s since latest version" file)
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
1125 (vc-backend-diff 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
1126 ;; Ideally, we'd like at this point to parse the diff so that
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
1127 ;; the buffer effectively goes into compilation mode and we
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
1128 ;; can visit the old and new change locations via next-error.
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
1129 ;; Unfortunately, this is just too painful to do. The basic
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
1130 ;; problem is that the `old' file doesn't exist 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
1131 ;; visited. This plays hell with numerous assumptions in
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
1132 ;; the diff.el and compile.el machinery.
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1133 (set-buffer "*vc-diff*")
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1134 (setq default-directory (file-name-directory file))
3895
0710180efd8b (vc-diff): If `diff' gives empty output, return nil.
Richard M. Stallman <rms@gnu.org>
parents: 3804
diff changeset
1135 (if (= 0 (buffer-size))
0710180efd8b (vc-diff): If `diff' gives empty output, return nil.
Richard M. Stallman <rms@gnu.org>
parents: 3804
diff changeset
1136 (progn
0710180efd8b (vc-diff): If `diff' gives empty output, return nil.
Richard M. Stallman <rms@gnu.org>
parents: 3804
diff changeset
1137 (setq unchanged t)
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1138 (message "No changes to %s since latest version" file))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1139 (pop-to-buffer "*vc-diff*")
4362
2c0ac46d5d5b (vc-shrink-to-fit): Deleted. All callers changed to use
Richard M. Stallman <rms@gnu.org>
parents: 4281
diff changeset
1140 (goto-char (point-min))
4480
208145c77950 * vc.el (vc-diff, vc-directory-18): Add missing paren to end of
Jim Blandy <jimb@redhat.com>
parents: 4362
diff changeset
1141 (shrink-window-if-larger-than-buffer)))
208145c77950 * vc.el (vc-diff, vc-directory-18): Add missing paren to end of
Jim Blandy <jimb@redhat.com>
parents: 4362
diff changeset
1142 (not unchanged))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1143
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1144 (defun vc-version-diff (file rel1 rel2)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1145 "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
1146 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
1147 files in or below it."
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1148 (interactive "FFile or directory to diff: \nsOlder version: \nsNewer version: ")
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1149 (if (string-equal rel1 "") (setq rel1 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1150 (if (string-equal rel2 "") (setq rel2 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1151 (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
1152 (let ((camefrom (current-buffer)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1153 (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
1154 (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
1155 (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
1156 (concat " from " (buffer-name camefrom)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1157 (erase-buffer)
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1158 (insert "Diffs between "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1159 (or rel1 "last version checked in")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1160 " and "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1161 (or rel2 "current workfile(s)")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1162 ":\n\n")
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1163 (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
1164 (cd file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1165 (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
1166 default-directory
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1167 (function (lambda (f)
2219
a729b16f7427 (vc-version-diff): Use (message ...), not (message (format ...)).
Paul Eggert <eggert@twinsun.com>
parents: 2212
diff changeset
1168 (message "Looking at %s" f)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1169 (and
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1170 (not (file-directory-p f))
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1171 (vc-registered f)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1172 (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
1173 (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
1174 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1175 (pop-to-buffer "*vc-status*")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1176 (insert "\nEnd of diffs.\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1177 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1178 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1179 )
2769
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1180 (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
1181 (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
1182 (pop-to-buffer "*vc-diff*"))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1183
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1184 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1185 (defun vc-version-other-window (rev)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1186 "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
1187 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
1188 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
1189 (interactive "sVersion to visit (default is latest version): ")
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1190 (if vc-dired-mode
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1191 (set-buffer (find-file-noselect (dired-get-filename))))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1192 (while vc-parent-buffer
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1193 (pop-to-buffer vc-parent-buffer))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1194 (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
1195 (let* ((version (if (string-equal rev "")
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1196 (vc-latest-version buffer-file-name)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1197 rev))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1198 (filename (concat buffer-file-name ".~" version "~")))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1199 (or (file-exists-p filename)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1200 (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
1201 (find-file-other-window filename))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1202 (vc-registration-error buffer-file-name)))
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1203
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1204 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1205
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1206 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1207 (defun vc-insert-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1208 "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
1209 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
1210 the variable `vc-header-alist'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1211 (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
1212 (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
1213 (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
1214 (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
1215 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1216 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1217 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1218 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1219 (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
1220 (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
1221 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1222 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1223 (comment-start-vc (or (car delims) comment-start "#"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1224 (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
1225 (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
1226 (mapcar (function (lambda (s)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1227 (insert comment-start-vc "\t" s "\t"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1228 comment-end-vc "\n")))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1229 hdstrings)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1230 (if vc-static-header-alist
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1231 (mapcar (function (lambda (f)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1232 (if (string-match (car f) buffer-file-name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1233 (insert (format (cdr f) (car hdstrings))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1234 vc-static-header-alist))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1235 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1236 )))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1237
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1238 (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
1239 ;; 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
1240 ;; 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
1241 ;; Don't lose point and mark during this.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1242 (let ((context (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
1243 (goto-char (point-min))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1244 (while (re-search-forward "\\$\\([A-Za-z]+\\): [^\\$]+\\$" nil t)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1245 (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
1246 (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
1247
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1248 ;; 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
1249 ;; 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
1250
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1251 (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
1252 "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
1253 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
1254 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
1255 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
1256 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
1257 (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
1258
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1259 (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
1260 (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
1261 (define-key vc-dired-mode-map "=" 'vc-diff)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1262
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1263 (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
1264 ;; 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
1265 ;; 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
1266 (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
1267 (vc-cvs-status file))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1268 (if cvs-state
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1269 (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
1270 ((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
1271 ((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
1272 ((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
1273 ((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
1274 ((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
1275 (vc-locking-user file))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1276
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
1277 (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
1278 ;; 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
1279 ;; 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
1280 ;; 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
1281 ;; 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
1282 ;; 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
1283 ;;
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
1284 ;; 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
1285 ;; (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
1286 ;;
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
1287 ;; 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
1288 (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
1289 (end-of-line)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1290 (setq limit (point))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1291 (goto-char pos)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1292 (cond
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1293 ((or
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1294 (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
1295 "\\([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
1296 limit t)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1297 (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
1298 "\\([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
1299 limit t))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1300 (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
1301 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
1302 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
1303 ((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
1304 "\\([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
1305 limit t)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1306 (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
1307 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
1308 (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
1309 (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
1310 (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
1311
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1312 (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
1313 ;; 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
1314 ;; 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
1315 ;; 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
1316 ;; subdirectories.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1317 (beginning-of-line)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1318 (forward-char 2)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1319 (let ((start (point)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1320 (forward-line 1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1321 (beginning-of-line)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1322 (delete-region start (point))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1323 (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
1324 (forward-line -1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1325 (end-of-line)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1326 (delete-char (- (length file)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1327 (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
1328 (goto-char start))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1329 (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
1330
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1331 (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
1332 (interactive "P")
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1333 (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
1334
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1335 ;;; 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
1336 ;;; with the symbol 'vc-directory-18. See below.
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1337 ;;;###autoload
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1338 (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
1339 "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
1340 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
1341 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
1342 (interactive "DDired under VC (directory): \nP")
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1343 (require 'dired)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1344 (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
1345 ;; 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
1346 (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
1347 (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
1348 (let (nonempty
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1349 (dl (length dirname))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1350 (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
1351 (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
1352 dired-buf
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1353 dired-buf-mod-count)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1354 (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
1355 dirname
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1356 (function
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1357 (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1358 (if (vc-registered f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1359 (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
1360 (and (or verbose state)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1361 (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
1362 (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
1363 (save-window-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1364 (save-excursion
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1365 ;; 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
1366 ;; 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
1367 (setq dired-buf
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1368 (dired-internal-noselect
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1369 (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
1370 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
1371 (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
1372 (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
1373 ;; 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
1374 (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
1375 (goto-char (point-min))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1376 (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
1377 (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
1378 (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
1379 (delete-region start (point)))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1380 (beginning-of-line)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1381 (if nonempty
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1382 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1383 ;; 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
1384 (mapcar
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1385 (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1386 (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
1387 (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
1388 (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
1389 (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
1390 (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
1391 (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
1392 (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
1393 (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
1394 )
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1395 (dired-next-line 1)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1396 (insert " ")
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1397 (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
1398 (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
1399 (if verbose "registered" "locked") dirname))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1400 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1401
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1402 ;; Emacs 18 version
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1403 (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
1404 "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
1405 (interactive "P")
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1406 (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
1407 (save-excursion
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1408 (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
1409 (erase-buffer)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1410 (cd dir)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1411 (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
1412 default-directory
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1413 (function (lambda (f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1414 (if (vc-registered f)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1415 (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
1416 (if (or user verbose)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1417 (insert (format
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1418 "%s %s\n"
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1419 (concat user) f))))))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1420 (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
1421
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1422 (if nonempty
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1423 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1424 (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
1425 (goto-char (point-min))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1426 (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
1427 (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
1428 (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
1429 )
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1430
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1431 (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
1432 (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
1433
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1434 ;; Named-configuration support for SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1435
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1436 (defun vc-add-triple (name file rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1437 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1438 (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
1439 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1440 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1441 (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
1442 (file-name-directory file)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1443 (goto-char (point-max))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1444 (insert name "\t:\t" file "\t" rev "\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1445 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1446 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1447 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1448
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1449 (defun vc-record-rename (file newname)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1450 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1451 (find-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1452 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1453 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1454 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1455 (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
1456 (file-name-directory file)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1457 (goto-char (point-min))
5263
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1458 ;; (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
1459 (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
1460 (replace-match (concat ":" newname) nil nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1461 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1462 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1463 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1464
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1465 (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
1466 ;; 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
1467 ;; 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
1468 (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
1469 ((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
1470 (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
1471 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
1472 (t
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1473 (save-excursion
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1474 (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
1475 (vc-insert-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1476 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1477 vc-name-assoc-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1478 (file-name-as-directory
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1479 (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
1480 (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
1481 (prog1
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1482 (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
1483 (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
1484 (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
1485 ))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1486
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1487 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1488
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1489 (defun vc-snapshot-precondition ()
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1490 ;; Scan the tree below the current directory.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1491 ;; 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
1492 ;; (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
1493 ;; 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
1494 ;; Otherwise, return nil.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1495 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1496 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1497 (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
1498 default-directory
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1499 (function (lambda (f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1500 (and (vc-registered f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1501 (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
1502 (if (get-file-buffer f) (setq status 'visited)))))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1503 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1504
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1505 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1506 (defun vc-create-snapshot (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1507 "Make a snapshot called NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1508 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
1509 directory. For each file, the version level of its latest
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1510 version becomes part of the named configuration."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1511 (interactive "sNew snapshot name: ")
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1512 (let ((result (vc-snapshot-precondition)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1513 (if (stringp result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1514 (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
1515 (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
1516 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
1517 (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
1518 (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
1519 (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
1520 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1521
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1522 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1523 (defun vc-retrieve-snapshot (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1524 "Retrieve the snapshot called NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1525 This function fails if any files are locked at or below the current directory
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1526 Otherwise, all registered files are checked out (unlocked) at their version
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1527 levels in the snapshot."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1528 (interactive "sSnapshot name to retrieve: ")
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1529 (let ((result (vc-snapshot-precondition))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1530 (update nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1531 (if (stringp result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1532 (error "File %s is locked" result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1533 (if (eq result 'visited)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1534 (setq update (yes-or-no-p "Update the affected buffers? ")))
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1535 (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
1536 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
1537 (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
1538 (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
1539 (vc-error-occurred
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1540 (vc-backend-checkout f nil name)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1541 (if update (vc-resynch-buffer f t t)))))))
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1542 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1543
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1544 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1545
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1546 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1547 (defun vc-print-log ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1548 "List the change log of the current buffer in a window."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1549 (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
1550 (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
1551 (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
1552 (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
1553 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1554 (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
1555 (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
1556 (vc-backend-print-log file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1557 (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
1558 (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
1559 (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
1560 (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
1561 (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
1562 (forward-line -1))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1563 (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
1564 (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
1565 (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
1566 (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
1567 ;; 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
1568 (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
1569 (re-search-forward
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1570 ;; 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
1571 (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
1572 "\\(\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
1573 ;; 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
1574 ;; 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
1575 (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
1576 (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
1577 (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
1578 (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
1579 (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
1580 (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
1581 (cond
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1582 ;; 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
1583 ;; 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
1584 ((< (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
1585 (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
1586 (recenter 0)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1587 (goto-char start))
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1588 ;; 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
1589 ;; display it centered
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1590 ((< (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
1591 (goto-char start)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1592 (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
1593 ;; 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
1594 ;; 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
1595 (t
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1596 (goto-char start)
2c91cd1a660a (vc-print-log): Set the display window so that it shows
André Spiegel <spiegel@gnu.org>
parents: 16138
diff changeset
1597 (recenter 0)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1598 )
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
1599 (vc-registration-error buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1600 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1601 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1602
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1603 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1604 (defun vc-revert-buffer ()
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
1605 "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
1606 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
1607 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
1608 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
1609 the file on the branch you are editing."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1610 (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
1611 (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
1612 (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
1613 (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
1614 (pop-to-buffer vc-parent-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1615 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1616 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1617 (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
1618 (obuf (current-buffer)) (changed (vc-diff nil t)))
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
1619 (if (and changed (not (yes-or-no-p "Discard changes? ")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1620 (progn
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1621 (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
1622 (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
1623 (make-frame-invisible (selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1624 (delete-window))
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
1625 (error "Revert cancelled"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1626 (set-buffer obuf))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1627 (if changed
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1628 (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
1629 (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
1630 (make-frame-invisible (selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
1631 (delete-window)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1632 (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
1633 (vc-resynch-window file t t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1634 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1635 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1636
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1637 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1638 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1639 "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
1640 A prefix argument means do not revert the buffer afterwards."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1641 (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
1642 (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
1643 (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
1644 (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
1645 (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
1646 (cond
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1647 ((not (vc-registered (buffer-file-name)))
15336
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
1648 (vc-registration-error (buffer-file-name)))
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
1649 ((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
1650 (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
1651 ((vc-locking-user (buffer-file-name))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1652 (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
1653 ((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
1654 (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
1655 (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
1656 (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
1657 (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
1658 (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
1659 nil
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1660 (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
1661 (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
1662 (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
1663 ;; 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
1664 ;; 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
1665 ;; 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
1666 (while (not done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1667 (condition-case err
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1668 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1669 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1670 ;; 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
1671 ;; modifications in the buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1672 (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
1673 ;; 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
1674 (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
1675 (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
1676 ;; 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
1677 ;; 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
1678 ;; 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
1679 (error (set-buffer "*vc*")
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1680 (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
1681 (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
1682 (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
1683 ;; 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
1684 ;; 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
1685 ;; 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
1686 (set-window-configuration config))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1687 ;; 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
1688 (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
1689 ;; 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
1690 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1691 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1692 (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
1693 (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
1694 ;; 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
1695 (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
1696 (setq backup-inhibited t)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1697 (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
1698 (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
1699 (vc-clear-headers)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
1700 (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
1701 (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
1702 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1703
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1704 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1705 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1706 "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
1707 (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
1708 ;; 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
1709 ;; 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
1710 ;; 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
1711 ;; 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
1712 ;; 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
1713 ;; 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
1714 (if (eq (vc-backend old) 'CVS)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1715 (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
1716 (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
1717 (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
1718 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1719 (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
1720 (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
1721 (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
1722 (error "New file already exists"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1723 (let ((oldmaster (vc-name old)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1724 (if oldmaster
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1725 (progn
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1726 (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
1727 (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
1728 (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
1729 ;; 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
1730 (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
1731 (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
1732 (rename-file
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1733 oldmaster
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
1734 (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
1735 (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
1736 (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
1737 (catch 'found
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1738 (mapcar
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1739 (function
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1740 (lambda (s)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1741 (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
1742 (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
1743 (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
1744 (if (or (not newmasterdir)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1745 (file-directory-p newmasterdir))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1746 (throw 'found newmaster))))))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1747 vc-master-templates)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
1748 (error "New file lacks a version control directory"))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1749 (if (or (not oldmaster) (file-exists-p old))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1750 (rename-file old new)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1751 ; ?? Renaming a file might change its contents due to keyword expansion.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1752 ; 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
1753 ; to some checked in version. However, testing for this is tricky....
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1754 (if oldbuf
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1755 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1756 (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
1757 (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
1758 (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
1759 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
1760 (vc-mode-line new)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1761 (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
1762 ;; 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
1763 (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
1764 (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
1765 nil ;RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1766 nil ;CVS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1767 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1768 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1769
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1770 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
1771 (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
1772 "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
1773 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
1774 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
1775 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
1776
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
1777 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
1778
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
1779 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
1780 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
1781 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
1782
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1783 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
1784 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
1785 default directory."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1786 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1787 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1788 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1789 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1790 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1791 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1792 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1793 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1794 (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
1795 (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
1796 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1797 (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
1798 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
1799 (t
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1800 ;; `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
1801 ;; 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
1802 nil)))
14053
c8c5b83d9691 (vc-update-change-log): Use add-log-full-name and
Karl Heuer <kwzh@gnu.org>
parents: 14040
diff changeset
1803 (let ((odefault default-directory)
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
1804 (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
1805 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
1806 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
1807 (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
1808 (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
1809 user-mail-address)))
3905
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1810 (find-file-other-window (find-change-log))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1811 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1812 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1813 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1814 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1815 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
1816 (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
1817 (message "Computing change log entries... %s"
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1818 (if (eq 0 (apply 'call-process "rcs2log" nil '(t nil) nil
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1819 "-u"
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
1820 (concat (vc-user-login-name)
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1821 "\t"
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1822 full-name
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1823 "\t"
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1824 mailing-address)
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1825 (mapcar (function
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1826 (lambda (f)
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1827 (file-relative-name
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1828 (if (file-name-absolute-p f)
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1829 f
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1830 (concat odefault f)))))
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
1831 args)))
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
1832 "done" "failed"))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1833
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1834 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1835
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1836 (defun vc-backend-admin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1837 ;; Register a file into the version-control system
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1838 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1839 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1840 ;; it deletes the workfile.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1841 (vc-file-clearprops file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1842 (or vc-default-back-end
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1843 (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
1844 (message "Registering %s..." file)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1845 (let ((switches
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1846 (if (stringp vc-register-switches)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1847 (list vc-register-switches)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1848 vc-register-switches))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1849 (backend
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1850 (cond
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1851 ((file-exists-p (vc-backend-subdirectory-name)) vc-default-back-end)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1852 ((file-exists-p "RCS") 'RCS)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1853 ((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
1854 ((file-exists-p "CVS") 'CVS)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1855 (t vc-default-back-end))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1856 (cond ((eq backend 'SCCS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1857 (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
1858 (and rev (concat "-r" rev))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1859 "-fb"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1860 (concat "-i" file)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1861 (and comment (concat "-y" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1862 (format
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1863 (car (rassq 'SCCS vc-master-templates))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1864 (or (file-name-directory file) "")
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1865 (file-name-nondirectory file))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1866 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1867 (delete-file file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1868 (if vc-keep-workfiles
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1869 (vc-do-command nil 0 "get" file 'MASTER)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1870 ((eq backend 'RCS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1871 (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
1872 ;; if available, use the secure registering option
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1873 (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
1874 (concat (if vc-keep-workfiles "-u" "-r") rev)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1875 (and comment (concat "-t-" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1876 switches))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1877 ((eq backend 'CVS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1878 (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
1879 "add"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1880 (and comment (string-match "[^\t\n ]" comment)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1881 (concat "-m" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
1882 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1883 )))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1884 (message "Registering %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1885 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1886
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1887 (defun vc-backend-checkout (file &optional writable rev workfile)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1888 ;; 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
1889 (let ((filename (or workfile file))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1890 (file-buffer (get-file-buffer file))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1891 switches)
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1892 (message "Checking out %s..." filename)
10046
4c632e091d88 (vc-backend-checkout): Finish last change.
Roland McGrath <roland@gnu.org>
parents: 10045
diff changeset
1893 (save-excursion
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1894 ;; 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
1895 (if file-buffer (set-buffer file-buffer))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1896 (setq switches (if (stringp vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1897 (list vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
1898 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
1899 ;; 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
1900 ;; 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
1901 ;; 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
1902 (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
1903 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1904 ;; 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
1905 ;; 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
1906 (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
1907 (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
1908 (progn ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1909 (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
1910 (if workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1911 ;; 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
1912 ;; 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
1913 ;; 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
1914 ;; ala RCS.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1915 (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
1916 (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
1917 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1918 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1919 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1920 (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
1921 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
1922 ;; 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
1923 ;; 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
1924 ;; 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
1925 ;; 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
1926 (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
1927 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
1928 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
1929 (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
1930 (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
1931 "" ; 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
1932 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1933 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1934 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1935 (and rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1936 (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
1937 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1938 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1939 (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
1940 (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1941 (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
1942 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1943 (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
1944 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1945 (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
1946 (if workfile ;; RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1947 ;; 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
1948 ;; 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
1949 (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
1950 (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
1951 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1952 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1953 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1954 (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
1955 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
1956 ;; 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
1957 ;; if-statement.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1958 (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
1959 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
1960 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
1961 (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
1962 (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
1963 "" ; 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
1964 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1965 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1966 (concat "-p" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1967 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1968 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1969 (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
1970 (let (new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1971 ;; 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
1972 ;; 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
1973 (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
1974 (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
1975 ;; 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
1976 (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
1977 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
1978 ;; 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
1979 ;; the writable workfile.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1980 (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
1981 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1982 (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
1983 ;; 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
1984 ;; 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
1985 (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
1986 (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
1987 nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1988 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1989 ;; 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
1990 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1991 (set-buffer "*vc*")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1992 (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
1993 (setq new-version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
1994 (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
1995 (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
1996 (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
1997 ;; 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
1998 (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
1999 (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
2000 (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
2001 (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
2002 (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
2003 new-version))))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2004 (if workfile ;; CVS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2005 ;; 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
2006 (let ((failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2007 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2008 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2009 (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
2010 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
2011 "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
2012 "" ; 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
2013 workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2014 (concat "-r" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2015 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2016 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2017 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2018 (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
2019 ;; 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
2020 ;; 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
2021 (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
2022 (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
2023 ;; 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
2024 (if rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2025 (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
2026 (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
2027 "update"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2028 (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
2029 (concat "-r" rev))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2030 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2031 ;; If no revision was specified, simply make the file writable.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2032 (and writable
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2033 (or (eq (vc-checkout-model file) 'manual)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2034 (zerop (logand 128 (file-modes file))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2035 (set-file-modes file (logior 128 (file-modes file)))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2036 (if rev (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
2037 (cond
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2038 ((not workfile)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2039 (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
2040 (if writable
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2041 (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
2042 (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
2043 '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
2044 (message "Checking out %s...done" filename))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2045
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2046 (defun vc-backend-logentry-check (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2047 (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
2048 (if (>= (buffer-size) 512) ;; SCCS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2049 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2050 (goto-char 512)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2051 (error
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2052 "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
2053 nil ;; RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2054 nil) ;; CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2055 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2056
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2057 (defun vc-backend-checkin (file rev comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2058 ;; Register changes to FILE as level REV with explanatory COMMENT.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2059 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2060 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2061 ;; it deletes the workfile.
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2062 ;; 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
2063 ;; 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
2064 ;; accordingly.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2065 (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
2066 ;; "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
2067 ;; 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
2068 (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
2069 (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
2070 (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
2071 ;; 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
2072 (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
2073 (let ((switches
13890
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2074 (if (stringp vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2075 (list vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2076 vc-checkin-switches)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2077 ;; 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
2078 ;; 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
2079 ;; re-computed before the next try.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2080 (vc-file-clear-masterprops file)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2081 (vc-backend-dispatch file
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2082 ;; SCCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2083 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2084 (apply 'vc-do-command nil 0 "delta" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2085 (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2086 (concat "-y" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2087 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2088 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2089 (vc-file-setprop file 'vc-workfile-version nil)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2090 (if vc-keep-workfiles
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2091 (vc-do-command nil 0 "get" file 'MASTER))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2092 )
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2093 ;; RCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2094 (let ((old-version (vc-workfile-version file)) new-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2095 (apply 'vc-do-command nil 0 "ci" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2096 ;; if available, use the secure check-in option
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2097 (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
2098 (concat (if vc-keep-workfiles "-u" "-r") rev)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2099 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2100 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2101 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2102 (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
2103
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2104 ;; determine the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2105 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2106 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2107 (if (or (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2108 "new revision: \\([0-9.]+\\);" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2109 (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2110 "reverting to previous revision \\([0-9.]+\\)" nil t))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2111 (progn (setq new-version (buffer-substring (match-beginning 1)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2112 (match-end 1)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2113 (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
2114
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2115 ;; 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
2116 ;; branch accordingly
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2117 (cond
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2118 ((and old-version new-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2119 (not (string= (vc-branch-part old-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2120 (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2121 (vc-do-command nil 0 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2122 (if (vc-trunk-p new-version) "-b"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2123 (concat "-b" (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2124 ;; 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
2125 ;; to remove a remaining lock.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2126 (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
2127 ;; exit status of 1 is also accepted.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2128 ;; It means that the lock was removed before.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2129 (vc-do-command nil 1 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2130 (concat "-u" old-version))))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2131 ;; CVS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2132 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2133 ;; explicit check-in to the trunk requires a
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2134 ;; double check-in (first unexplicit) (CVS-1.3)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2135 (condition-case nil
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2136 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2137 (if (and rev (vc-trunk-p rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2138 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2139 "ci" "-m" "intermediate"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2140 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2141 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2142 "ci" (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2143 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2144 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2145 (error (if (eq (vc-cvs-status file) 'needs-merge)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2146 ;; 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
2147 (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
2148 (error "Check-in failed"))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2149 ;; determine and store the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2150 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2151 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2152 (if (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2153 "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2154 (vc-file-setprop file 'vc-workfile-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2155 (buffer-substring (match-beginning 2)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2156 (match-end 2)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2157 (vc-file-setprop file 'vc-workfile-version nil))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2158 ;; 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
2159 (if rev
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2160 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2161 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2162 (vc-file-setprop file 'vc-checkout-time
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2163 (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
2164 (message "Checking in %s...done" file))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2165
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2166 (defun vc-backend-revert (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2167 ;; 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
2168 ;; (for RCS, to workfile version)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2169 (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
2170 (vc-file-clear-masterprops file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2171 (vc-backend-dispatch
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2172 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2173 ;; SCCS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2174 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2175 (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
2176 (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
2177 ;; RCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2178 (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
2179 "-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
2180 ;; CVS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2181 (progn
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2182 (delete-file file)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2183 (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
2184 (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
2185 (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
2186 (message "Reverting %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2187 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2188
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2189 (defun vc-backend-steal (file &optional rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2190 ;; 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
2191 (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
2192 (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
2193 (progn ;SCCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2194 (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
2195 (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
2196 )
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2197 (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
2198 "-M" (concat "-u" rev) (concat "-l" rev))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2199 (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
2200 )
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2201 (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
2202 (message "Stealing lock on %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2203 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2204
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2205 (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
2206 ;; Undo the latest checkin.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2207 (message "Removing last change from %s..." file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2208 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2209 (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
2210 (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
2211 nil ;; this is never reached under CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2212 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2213 (message "Removing last change from %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2214 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2215
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2216 (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
2217 ;; 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
2218 (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
2219 file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2220 (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
2221 (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
2222 (vc-do-command nil 0 "cvs" file 'WORKFILE "log")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2223
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2224 (defun vc-backend-assign-name (file name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2225 ;; Assign to a FILE's latest version a given NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2226 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2227 (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
2228 (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
2229 (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
2230 )
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2231 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2232
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2233 (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
2234 ;; 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
2235 ;; Get only a brief comparison report if CMP, a difference report otherwise.
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
2236 (let ((backend (vc-backend file)))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2237 (cond
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2238 ((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
2239 (setq oldvers (vc-lookup-triple file oldvers))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2240 (setq newvers (vc-lookup-triple file newvers)))
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2241 ((eq backend 'RCS)
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2242 (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
2243 ;; If we know that --brief is not supported, don't try it.
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2244 (setq cmp (and cmp (not (eq vc-rcsdiff-knows-brief 'no))))))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2245 ;; SCCS and RCS shares a lot of code.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2246 (cond
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2247 ((or (eq backend 'SCCS) (eq backend 'RCS))
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2248 (let* ((command (if (eq backend 'SCCS) "vcdiff" "rcsdiff"))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
2249 (mode (if (eq backend 'RCS) 'WORKFILE 'MASTER))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2250 (options (append (list (and cmp "--brief")
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2251 "-q"
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2252 (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
2253 (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
2254 (and (not cmp)
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2255 (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
2256 diff-switches
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2257 (list diff-switches)))))
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2258 (status (apply 'vc-do-command "*vc-diff*" 2
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2259 command file mode options)))
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2260 ;; If --brief didn't work, do a double-take and remember it
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2261 ;; for the future.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2262 (if (eq status 2)
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2263 (prog1
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2264 (apply 'vc-do-command "*vc-diff*" 1 command file 'WORKFILE
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2265 (if cmp (cdr options) options))
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2266 (if cmp (setq vc-rcsdiff-knows-brief 'no)))
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2267 ;; If --brief DID work, remember that, too.
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2268 (and cmp (not vc-rcsdiff-knows-brief)
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2269 (setq vc-rcsdiff-knows-brief 'yes))
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2270 status)))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2271 ;; 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
2272 ((eq backend 'CVS)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2273 (if (string= (vc-workfile-version file) "0") ;CVS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2274 ;; 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
2275 (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
2276 (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
2277 (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
2278 ;; 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
2279 ;; 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
2280 (apply 'vc-do-command
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2281 "*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
2282 (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
2283 diff-switches
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2284 (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
2285 ;; 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
2286 (apply 'vc-do-command
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2287 "*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
2288 (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
2289 (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
2290 (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
2291 diff-switches
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2292 (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
2293 (t
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2294 (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
2295
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2296 (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
2297 ;; 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
2298 (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
2299 (prog1
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2300 (vc-backend-dispatch
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2301 file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2302 (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
2303 (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
2304 (save-excursion ; CVS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2305 (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
2306 (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
2307 (vc-file-setprop file 'vc-locking-user nil)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2308 (vc-do-command nil 0 "cvs" file 'WORKFILE "update")
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2309 ;; CVS doesn't return an error code if conflicts are detected.
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2310 ;; Since we want to warn the user about it (and possibly start
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2311 ;; emerge later), scan the output and see if this occurred.
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2312 (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
2313 (goto-char (point-min))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2314 (if (re-search-forward "^cvs update: conflicts found in .*" nil t)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2315 1 ;; error code for caller
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2316 0 ;; no conflict detected
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2317 )))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2318 (message "Merging changes into %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2319
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2320 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2321 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2322 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2323 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2324 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2325 (vc-backend-dispatch buffer-file-name
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2326 (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" nil t) ;; SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2327 (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
2328 'RCS ;; CVS works like RCS in this regard.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2329 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2330 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2331
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2332 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2333
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2334 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2335
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2336 (defun vc-log-mode ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2337 "Minor mode for driving version-control tools.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2338 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
2339 \\[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
2340 \\[vc-register] register current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2341 \\[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
2342 \\[vc-insert-headers] insert version-control headers in current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2343 \\[vc-print-log] display change history of current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2344 \\[vc-revert-buffer] revert buffer to latest version
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2345 \\[vc-cancel-version] undo latest checkin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2346 \\[vc-diff] show diffs between file versions
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2347 \\[vc-version-other-window] visit old version in another window
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2348 \\[vc-directory] show all files locked by any user in or below .
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2349 \\[vc-update-change-log] add change log entry from recent checkins
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2350
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2351 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
2352 additional bindings will be in effect.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2353
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2354 \\[vc-finish-logentry] proceed with check in, ending log message entry
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2355
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2356 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
2357 saved comments. These can be recalled as follows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2358
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2359 \\[vc-next-comment] replace region with next message in comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2360 \\[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
2361 \\[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
2362 \\[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
2363
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2364 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
2365 the value of vc-log-mode-hook.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2366
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2367 Global user options:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2368 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
2369 comment upon first checkin of the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2370
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2371 vc-keep-workfiles Non-nil value prevents workfiles from being
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2372 deleted when changes are checked in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2373
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2374 vc-suppress-confirm Suppresses some confirmation prompts,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2375 notably for reversions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2376
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
2377 vc-header-alist Which keywords to insert when adding headers
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2378 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
2379 '(\"\%\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
2380 RCS and CVS.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2381
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2382 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
2383 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
2384 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
2385 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
2386 this by setting this variable to nil, or change
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2387 the header template by changing it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2388
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2389 vc-command-messages if non-nil, display run messages from the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2390 actual version-control utilities (this is
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2391 intended primarily for people hacking vc
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2392 itself).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2393 "
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2394 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2395 (set-syntax-table text-mode-syntax-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2396 (use-local-map vc-log-entry-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2397 (setq local-abbrev-table text-mode-abbrev-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2398 (setq major-mode 'vc-log-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2399 (setq mode-name "VC-Log")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2400 (make-local-variable 'vc-log-file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2401 (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
2402 (make-local-variable 'vc-comment-ring-index)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2403 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2404 (setq buffer-file-name nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2405 (run-hooks 'text-mode-hook 'vc-log-mode-hook)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2406 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2407
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2408 ;; Initialization code, to be done just once at load-time
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2409 (if vc-log-entry-mode
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2410 nil
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2411 (setq vc-log-entry-mode (make-sparse-keymap))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2412 (define-key vc-log-entry-mode "\M-n" 'vc-next-comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2413 (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
2414 (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
2415 (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
2416 (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
2417 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2418
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2419 ;;; These things should probably be generally available
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2420
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2421 (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
2422 "Walk recursively through DIRNAME.
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2423 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
2424 (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
2425 (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
2426
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2427 (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
2428 (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
2429 (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
2430 (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
2431 (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
2432 (mapcar
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2433 (function
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2434 (lambda (f) (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2435 (string-equal f ".")
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2436 (string-equal f "..")
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
2437 (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
2438 (let ((dirf (concat dir f)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2439 (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
2440 (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
2441 (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
2442 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2443
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2444 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2445
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2446 ;;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2447 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2448 ;;; 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
2449 ;;; (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
2450 ;;; 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
2451 ;;; and RCS keyword lookup. AS, 1995/03/24)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2452 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2453 ;;; 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
2454 ;;; 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
2455 ;;; 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
2456 ;;; 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
2457 ;;; of the master during it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2458 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2459 ;;; 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
2460 ;;; to avoid them as much as possible.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2461 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2462 ;;; ANALYSIS:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2463 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2464 ;;; The performance problem, it turns out, simplifies in practice to the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2465 ;;; 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
2466 ;;; 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
2467 ;;; 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
2468 ;;; master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2469 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2470 ;;; 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
2471 ;;; 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
2472 ;;; 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
2473 ;;;
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2474 ;;; 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
2475 ;;; 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
2476 ;;; 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
2477 ;;; off to do something else, simply forgets about it?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2478 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2479 ;;; 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
2480 ;;; 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
2481 ;;; unlocked state and its current owner from its permissions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2482 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2483 ;;; 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
2484 ;;; permissions; also if developers are munging the workfile in several
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2485 ;;; directories, with symlinks to a master (in this latter case, the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2486 ;;; permissions shortcut will fail to detect a lock asserted from another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2487 ;;; directory).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2488 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2489 ;;; 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
2490 ;;; 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
2491 ;;; vc-next-action.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2492 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2493 ;;; 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
2494 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2495 ;;; A. Unregistered. There is a workfile, there is no master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2496 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2497 ;;; B. Registered and not locked by anyone.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2498 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2499 ;;; C. Locked by calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2500 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2501 ;;; D. Locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2502 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2503 ;;; E. Locked by someone other than the calling user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2504 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2505 ;;; 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
2506 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2507 ;;; VC's idea of state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2508 ;;; |
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2509 ;;; V Actual state RCS action SCCS action Effect
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2510 ;;; A B C D E
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2511 ;;; 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
2512 ;;; B 5 . 6 7 8 co -l get -e checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2513 ;;; C 9 10 . 11 12 co -u unget; get revert
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2514 ;;; 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
2515 ;;; 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
2516 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2517 ;;; 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
2518 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2519 ;;; 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
2520 ;;; which VC operations are being attempted simultaneously by two or more
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2521 ;;; Emacsen running under the same username.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2522 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2523 ;;; The vc-next-action code has the following windows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2524 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2525 ;;; Window P:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2526 ;;; 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
2527 ;;; 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
2528 ;;; never close if the initial-comment feature is on.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2529 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2530 ;;; Window Q:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2531 ;;; 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
2532 ;;; following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2533 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2534 ;;; Window R:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2535 ;;; 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
2536 ;;; checkin (apparent state D). This window may never close.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2537 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2538 ;;; Window S:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2539 ;;; Between the unlock and the immediately following checkout during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2540 ;;; revert operation (apparent state C). Included in window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2541 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2542 ;;; Window T:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2543 ;;; Between vc-locking-user and the following checkout (apparent state B).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2544 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2545 ;;; Window U:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2546 ;;; Between vc-locking-user and the following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2547 ;;; Includes windows Q and S.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2548 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2549 ;;; Window V:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2550 ;;; Between vc-locking-user and the following checkin (apparent state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2551 ;;; 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
2552 ;;; checkin message. Includes window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2553 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2554 ;;; Window W:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2555 ;;; 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
2556 ;;; 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
2557 ;;; the steal-lock message. Includes window X.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2558 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2559 ;;; Window X:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2560 ;;; Between the unlock and the immediately following re-lock during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2561 ;;; steal-lock operation (apparent state E). This window may never cloce
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2562 ;;; if the user fails to complete the steal-lock message.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2563 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2564 ;;; Errors:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2565 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2566 ;;; Apparent state A ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2567 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2568 ;;; 1. File looked unregistered but is actually registered and not locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2569 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2570 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2571 ;;; caller's admin happening before their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2572 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2573 ;;; 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
2574 ;;; "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
2575 ;;; 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
2576 ;;; SCCS: admin will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2577 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2578 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2579 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2580 ;;; 2. File looked unregistered but is actually locked by caller, unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2581 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2582 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2583 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2584 ;;; 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
2585 ;;; 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
2586 ;;; ci -i option, failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2587 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2588 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2589 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2590 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2591 ;;; 3. File looked unregistered but is actually locked by caller, changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2592 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2593 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2594 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2595 ;;; 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
2596 ;;; 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
2597 ;;; 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
2598 ;;; failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2599 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2600 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2601 ;;; 4. File looked unregistered but is locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2602 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2603 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2604 ;;; caller's admin happening *after* their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2605 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2606 ;;; 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
2607 ;;; "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
2608 ;;; 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
2609 ;;; "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2610 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2611 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2612 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2613 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2614 ;;; Apparent state B ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2615 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2616 ;;; 5. File looked registered and not locked, but is actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2617 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2618 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2619 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2620 ;;; RCS: will fail with "RCS/<file>: No such file or directory"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2621 ;;; SCCS: will fail with error ut4.
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 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2624 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2625 ;;; 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
2626 ;;; calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2627 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2628 ;;; Potential cause: self-race during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2629 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2630 ;;; 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
2631 ;;; with "co error: writable foo exists; checkout aborted". In any other
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2632 ;;; directory, checkout will succeed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2633 ;;; SCCS: will fail with ge17.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2634 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2635 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2636 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2637 ;;; 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
2638 ;;; calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2639 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2640 ;;; As case 6.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2641 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2642 ;;; 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
2643 ;;; user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2644 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2645 ;;; Potential cause: someone else checks it out during window T.
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 ;;; RCS: co error: revision 1.3 already locked by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2648 ;;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
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 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2651 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2652 ;;; Apparent state C ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2653 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2654 ;;; 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
2655 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2656 ;;; As case 5.
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 ;;; 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
2659 ;;; locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2660 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2661 ;;; 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
2662 ;;; 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
2663 ;;; of another user's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2664 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2665 ;;; RCS: succeeds, refreshing the file from the identical version in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2666 ;;; the master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2667 ;;; SCCS: fails with error ut4 (p file nonexistent).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2668 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2669 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2670 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2671 ;;; 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
2672 ;;; changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2673 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2674 ;;; 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
2675 ;;; during window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2676 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2677 ;;; The revert will succeed, removing whatever changes came with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2678 ;;; the touch. It is theoretically possible that work could be lost.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2679 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2680 ;;; 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
2681 ;;; it's actually locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2682 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2683 ;;; Potential cause: a steal-lock in window V.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2684 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2685 ;;; 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
2686 ;;; SCCS: fails with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2687 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2688 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2689 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2690 ;;; Apparent state D ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2691 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2692 ;;; 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
2693 ;;; actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2694 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2695 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2696 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2697 ;;; 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
2698 ;;; 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
2699 ;;; option, failing with message "no such file or directory".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2700 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2701 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2702 ;;; 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
2703 ;;; 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
2704 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2705 ;;; 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
2706 ;;; actually unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2707 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2708 ;;; Potential cause: self-race in window V, or the checkin happening
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2709 ;;; 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
2710 ;;; someone else's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2711 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2712 ;;; RCS: ci will fail with "no lock set by <user>".
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2713 ;;; SCCS: delta will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2714 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2715 ;;; 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
2716 ;;; actually locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2717 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2718 ;;; Potential cause: another self-race --- a whole checkin/checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2719 ;;; 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
2720 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2721 ;;; 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
2722 ;;; 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
2723 ;;; the file unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2724 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2725 ;;; It is theoretically possible that work could be lost under RCS.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2726 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2727 ;;; 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
2728 ;;; actually locked by a different user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2729 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2730 ;;; RCS: ci error: no lock set by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2731 ;;; SCCS: unget will fail with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2732 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2733 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2734 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2735 ;;; Apparent state E ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2736 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2737 ;;; 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
2738 ;;; unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2739 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2740 ;;; As case 13.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2741 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2742 ;;; 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
2743 ;;; unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2744 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2745 ;;; Potential cause: someone released a lock during window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2746 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2747 ;;; RCS: The calling user will get the lock on the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2748 ;;; SCCS: unget -n will fail with cm4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2749 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2750 ;;; Either of these consequences will be OK.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2751 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2752 ;;; 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
2753 ;;; locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2754 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2755 ;;; Potential cause: the other user relinquishing a lock followed by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2756 ;;; a self-race, both in window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2757 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2758 ;;; 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
2759 ;;; the sequence a no-op.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2760 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2761 ;;; 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
2762 ;;; locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2763 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2764 ;;; As case 19.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2765 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2766 ;;; PROBLEM CASES:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2767 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2768 ;;; In order of decreasing severity:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2769 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2770 ;;; 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
2771 ;;; They would require a self-race for this to happen.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2772 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2773 ;;; Case 13 in RCS loses information about previous deltas, retaining
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2774 ;;; only the information in the current workfile. This can only happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2775 ;;; if the master file gets nuked in window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2776 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2777 ;;; 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
2778 ;;; 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
2779 ;;; window P or R respectively.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2780 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2781 ;;; 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
2782 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2783 ;;; 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
2784 ;;; 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
2785 ;;; a race condition has occurred.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2786 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2787 ;;; 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
2788 ;;; trigger command errors which the user will see.
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 ;;; Thus, there is no explicit recovery code.
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 ;;; vc.el ends here