annotate lisp/vc.el @ 25553:3af0f2f6145c

(vc-annotate-display): Treat 2-digit years under 70 as 20YY.
author Richard M. Stallman <rms@gnu.org>
date Mon, 06 Sep 1999 03:46:33 +0000
parents 48c997ce6c8d
children 913fac3ab440
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
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 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
25553
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
8 ;; $Id: vc.el,v 1.252 1999/09/02 12:50:28 eliz Exp rms $
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
9
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; any later version.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
25 ;; Boston, MA 02111-1307, USA.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
29 ;; This mode is fully documented in the Emacs user's manual.
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
30 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; This was designed and implemented by Eric Raymond <esr@snark.thyrsus.com>.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; Paul Eggert <eggert@twinsun.com>, Sebastian Kremer <sk@thp.uni-koeln.de>,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33 ;; and Richard Stallman contributed valuable criticism, support, and testing.
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
34 ;; CVS support was added by Per Cederqvist <ceder@lysator.liu.se>
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
35 ;; in Jan-Feb 1994. Further enhancements came from ttn@netcom.com and
16821
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
36 ;; Andre Spiegel <spiegel@inf.fu-berlin.de>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 ;;
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
38 ;; Supported version-control systems presently include SCCS, RCS, and CVS.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
39 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
40 ;; Some features will not work with old RCS versions. Where
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
41 ;; appropriate, VC finds out which version you have, and allows or
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
42 ;; disallows those features (stealing locks, for example, works only
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
43 ;; from 5.6.2 onwards).
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
44 ;; Even initial checkins will fail if your RCS version is so old that ci
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
45 ;; doesn't understand -t-; this has been known to happen to people running
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
46 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;
12926
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
48 ;; You can support the RCS -x option by adding pairs to the
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
49 ;; vc-master-templates list.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
54 ;; If your site uses the ChangeLog convention supported by Emacs, the
2464
667050db93ca (vc-comment-to-change-log): Renamed from vc-comment-to-changelog.
Roland McGrath <roland@gnu.org>
parents: 2419
diff changeset
55 ;; function vc-comment-to-change-log should prove a useful checkin hook.
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
56 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;; This code depends on call-process passing back the subprocess exit
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
58 ;; status. Thus, you need Emacs 18.58 or later to run it. For the
2691
be85636d8b6e (vc-directory-18): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2667
diff changeset
59 ;; vc-directory command to work properly as documented, you need 19.
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
60 ;; You also need Emacs 19's ring.el.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;; The vc code maintains some internal state in order to reduce expensive
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 ;; version-control operations to a minimum. Some names are only computed
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
64 ;; once. If you perform version control operations with RCS/SCCS/CVS while
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;; vc's back is turned, or move/rename master files while vc is running,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;; Developer's notes on some concurrency issues are included at the end of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ;; the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 (require 'vc-hooks)
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
74 (require 'ring)
8290
f95e050e272f At compile time, require dired.
Richard M. Stallman <rms@gnu.org>
parents: 8237
diff changeset
75 (eval-when-compile (require 'dired)) ; for dired-map-over-marks macro
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
76
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
77 (if (not (assoc 'vc-parent-buffer minor-mode-alist))
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
78 (setq minor-mode-alist
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
79 (cons '(vc-parent-buffer vc-parent-buffer-name)
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
80 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81
12280
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
82 ;; To implement support for a new version-control system, add another
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
83 ;; branch to the vc-backend-dispatch macro and fill it in in each
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
84 ;; call. The variable vc-master-templates in vc-hooks.el will also
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
85 ;; have to change.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
86
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
87 (defmacro vc-backend-dispatch (f s r c)
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
88 "Execute FORM1, FORM2 or FORM3 for SCCS, RCS or CVS respectively.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
89 If FORM3 is `RCS', use FORM2 for CVS as well as RCS.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
90 \(CVS shares some code with RCS)."
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
91 (list 'let (list (list 'type (list 'vc-backend f)))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
92 (list 'cond
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
93 (list (list 'eq 'type (quote 'SCCS)) s) ;; SCCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
94 (list (list 'eq 'type (quote 'RCS)) r) ;; RCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
95 (list (list 'eq 'type (quote 'CVS)) ;; CVS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
96 (if (eq c 'RCS) r c))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
97 )))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
98
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
100
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
101 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
102 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
103 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
104
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
105 (defcustom vc-suppress-confirm nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
106 "*If non-nil, treat user as expert; suppress yes-no prompts on some things."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
107 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
108 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
109
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
110 (defcustom vc-delete-logbuf-window t
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
111 "*If non-nil, delete the *VC-log* buffer and window after each logical action.
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
112 If nil, bury that buffer instead.
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
113 This is most useful if you have multiple windows on a frame and would like to
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
114 preserve the setting."
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
115 :type 'boolean
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
116 :group 'vc)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
117
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
118 (defcustom vc-initial-comment nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
119 "*If non-nil, prompt for initial comment when a file is registered."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
120 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
121 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
122
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
123 (defcustom vc-default-init-version "1.1"
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
124 "*A string used as the default version number when a new file is registered.
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
125 This can be overriden by giving a prefix argument to \\[vc-register]."
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
126 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
127 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
128 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
129
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
130 (defcustom vc-command-messages nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
131 "*If non-nil, display run messages from back-end commands."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
132 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
133 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
134
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
135 (defcustom vc-checkin-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
136 "*A string or list of strings specifying extra switches for checkin.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
137 These are passed to the checkin program by \\[vc-checkin]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
138 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
139 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
140 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
141 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
142 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
143 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
144
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
145 (defcustom vc-checkout-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
146 "*A string or list of strings specifying extra switches for checkout.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
147 These are passed to the checkout program by \\[vc-checkout]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
148 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
149 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
150 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
151 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
152 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
153 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
154
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
155 (defcustom vc-register-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
156 "*A string or list of strings; extra switches for registering a file.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
157 These are passed to the checkin program by \\[vc-register]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
158 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
159 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
160 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
161 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
162 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
163 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
164
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
165 (defcustom vc-dired-recurse t
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
166 "*If non-nil, show directory trees recursively in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
167 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
168 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
169 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
170
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
171 (defcustom vc-dired-terse-display t
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
172 "*If non-nil, show only locked files in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
173 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
174 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
175 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
176
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
177 (defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
178 "*List of directory names to be ignored while recursively walking file trees."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
179 :type '(repeat string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
180 :group 'vc)
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
181
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
182 (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
183 "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
184
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
185 ;;; 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
186 (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
187 "*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
188
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
189 (defcustom vc-annotate-color-map
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
190 '(( 26.3672 . "#FF0000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
191 ( 52.7344 . "#FF3800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
192 ( 79.1016 . "#FF7000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
193 (105.4688 . "#FFA800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
194 (131.8359 . "#FFE000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
195 (158.2031 . "#E7FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
196 (184.5703 . "#AFFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
197 (210.9375 . "#77FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
198 (237.3047 . "#3FFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
199 (263.6719 . "#07FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
200 (290.0391 . "#00FF31")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
201 (316.4063 . "#00FF69")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
202 (342.7734 . "#00FFA1")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
203 (369.1406 . "#00FFD9")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
204 (395.5078 . "#00EEFF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
205 (421.8750 . "#00B6FF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
206 (448.2422 . "#007EFF"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
207 "*Association list of age versus color, for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
208 Ages are given in units of 2**-16 seconds.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
209 Default is eighteen steps using a twenty day increment."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
210 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
211 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
212
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
213 (defcustom vc-annotate-very-old-color "#0046FF"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
214 "*Color for lines older than CAR of last cons in `vc-annotate-color-map'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
215 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
216 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
217
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
218 (defcustom vc-annotate-background "black"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
219 "*Background color for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
220 Default color is used if nil."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
221 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
222 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
223
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
224 (defcustom vc-annotate-menu-elements '(2 0.5 0.1 0.01)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
225 "*Menu elements for the mode-specific menu of VC-Annotate mode.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
226 List of factors, used to expand/compress the time scale. See `vc-annotate'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
227 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
228 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
229
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
230 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
231 (defcustom vc-checkin-hook nil
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
232 "*Normal hook (list of functions) run after a checkin is done.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
233 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
234 :type 'hook
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
235 :options '(vc-comment-to-change-log)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
236 :group 'vc)
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
237
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
238 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
239 (defcustom vc-before-checkin-hook nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
240 "*Normal hook (list of functions) run before a file gets checked in.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
241 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
242 :type 'hook
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
243 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
244
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
245 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
246 (defcustom vc-annotate-mode-hook nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
247 "*Hooks to run when VC-Annotate mode is turned on."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
248 :type 'hook
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
249 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
250
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
251 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
253 (defcustom vc-header-alist
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
254 '((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
255 "*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
256 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
257 be `RCS', `CVS', or `SCCS'. The second element is the string to
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
258 be inserted for this particular backend."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
259 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
260 (choice :tag "System"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
261 (const SCCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
262 (const RCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
263 (const CVS))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
264 (string :tag "Header")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
265 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
266
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
267 (defcustom vc-static-header-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
268 '(("\\.c$" .
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
269 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
270 "*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
271 template is replaced with the first string associated with the file's
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
272 version-control type in `vc-header-alist'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
273 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
274 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
275 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
276 :group 'vc)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
277
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
278 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
279 '((nroff-mode ".\\\"" ""))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
280 "*Special comment delimiters to be used in generating vc headers only.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
281 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
282 and comment-end variables. This will only be necessary if the mode language
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
283 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
284 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
285 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
286 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
287 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
288 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
289
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
290 ;; Default is to be extra careful for super-user.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
291 (defcustom vc-checkout-carefully (= (user-uid) 0)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
292 "*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
293 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
294 and that its contents match what the master file says."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
295 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
296 :group 'vc)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
297
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
298 (defcustom vc-rcs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
299 "*The release number of your RCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
300 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
301 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
302 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
303 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
304 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
305
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
306 (defcustom vc-sccs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
307 "*The release number of your SCCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
308 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
309 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
310 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
311 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
312 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
313
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
314 (defcustom vc-cvs-release nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
315 "*The release number of your CVS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
316 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
317 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
318 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
319 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
320 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
321
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
322 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
323 (defvar vc-log-entry-mode nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
324 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
325 (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
326 (defvar vc-checkout-writable-buffer-hook 'vc-checkout-writable-buffer)
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
327 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
328 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
329 ;; (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
330 (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
331 (defvar vc-parent-buffer-name nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
332
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
333 (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
334 (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
335
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
336 (defconst vc-name-assoc-file "VC-names")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
337
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
338 (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
339 (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
340
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
341 (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
342 (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
343 (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
344
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
345 ;;; 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
346
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
347 (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
348 ;; 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
349 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
350 ((eq backend 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
351 (or vc-rcs-release
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
352 (and (zerop (vc-do-command nil nil "rcs" nil nil "-V"))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
353 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
354 (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
355 (setq vc-rcs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
356 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
357 '(("^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
358 (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
359 ((eq backend 'CVS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
360 (or vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
361 (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
362 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
363 (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
364 (setq vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
365 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
366 '(("^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
367 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
368 (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
369 ((eq backend 'SCCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
370 vc-sccs-release)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
371
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
372 (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
373 ;; 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
374 ;; 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
375 ;; 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
376 ;; 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
377 ;; 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
378 ;; 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
379 ;; 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
380 ;; 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
381 ;; 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
382 (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
383 (catch 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
384 (or (and (string-match "^\\.?\\([0-9]+\\)" r1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
385 (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
386 (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
387 (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
388 (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
389 (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
390 (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
391 (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
392 (throw 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
393 (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
394 (substring r1 i1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
395 (substring r2 i2)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
396 (throw 'done t)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
397 (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
398 (throw 'done nil))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
399 (throw 'done t)))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
400
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
401 (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
402 ;; 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
403 (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
404 (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
405 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
406 ((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
407 (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
408
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
409 ;;; 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
410
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
411 (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
412 ;; 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
413 (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
414
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
415 (defun vc-branch-p (rev)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
416 ;; return t if REV is a branch revision
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
417 (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
418
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
419 (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
420 ;; 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
421 (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
422
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
423 (defun vc-minor-part (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
424 ;; return the minor version number of a revision number REV
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
425 (string-match "[0-9]+\\'" rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
426 (substring rev (match-beginning 0) (match-end 0)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
427
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
428 (defun vc-previous-version (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
429 ;; guess the previous version number
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
430 (let ((branch (vc-branch-part rev))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
431 (minor-num (string-to-number (vc-minor-part rev))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
432 (if (> minor-num 1)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
433 ;; version does probably not start a branch or release
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
434 (concat branch "." (number-to-string (1- minor-num)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
435 (if (vc-trunk-p rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
436 ;; we are at the beginning of the trunk --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
437 ;; don't know anything to return here
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
438 ""
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
439 ;; we are at the beginning of a branch --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
440 ;; return version of starting point
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
441 (vc-branch-part branch)))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
442
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
443 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
444
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
445 (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
446 "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
447 (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
448 (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
449 ;; 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
450 ;; 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
451 (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
452
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
453 (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
454 ;; 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
455 ;; 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
456 (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
457 (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
458 (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
459 (progn ;; SCCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
460 (vc-file-setprop file 'vc-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
461 (progn ;; RCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
462 (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
463 (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
464 (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
465 (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
466 (progn
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
467 (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
468
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
469 (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
470 ;; 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
471 (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
472 (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
473 (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
474
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
475 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
476
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
477 (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
478 ;; 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
479 ;; 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
480 (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
481 ;; SCCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
482 (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
483 ;; RCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
484 (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
485 (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
486 (progn
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
487 ;; 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
488 ;; 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
489 ;; our back.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
490 (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
491 (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
492 workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
493 ;; 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
494 ;; 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
495 ;; 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
496 (save-excursion
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
497 (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
498 (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
499 (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
500 (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
501 "\\.[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
502 (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
503 (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
504 (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
505 ;; CVS
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
506 t))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
507
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
508 ;;; Two macros for elisp programming
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
509 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
510 (defmacro with-vc-file (file comment &rest body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
511 "Execute BODY, checking out a writable copy of FILE first if necessary.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
512 After BODY has been executed, check-in FILE with COMMENT (a string).
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
513 FILE is passed through `expand-file-name'; BODY executed within
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
514 `save-excursion'. If FILE is not under version control, or locked by
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
515 somebody else, signal error."
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
516 `(let ((file (expand-file-name ,file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
517 (or (vc-registered file)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
518 (error (format "File not under version control: `%s'" file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
519 (let ((locking-user (vc-locking-user file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
520 (cond ((and (not locking-user)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
521 (eq (vc-checkout-model file) 'manual))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
522 (vc-checkout file t))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
523 ((and (stringp locking-user)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
524 (not (string= locking-user (vc-user-login-name))))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
525 (error (format "`%s' is locking `%s'" locking-user file)))))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
526 (save-excursion
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
527 ,@body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
528 (vc-checkin file nil ,comment)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
529
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
530 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
531 (defmacro edit-vc-file (file comment &rest body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
532 "Edit FILE under version control, executing BODY. Checkin with COMMENT.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
533 This macro uses `with-vc-file', passing args to it.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
534 However, before executing BODY, find FILE, and after BODY, save buffer."
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
535 `(with-vc-file
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
536 ,file ,comment
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
537 (find-file ,file)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
538 ,@body
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
539 (save-buffer)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
540
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
541 (defun vc-ensure-vc-buffer ()
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
542 ;; Make sure that the current buffer visits a version-controlled file.
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
543 (if vc-dired-mode
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
544 (set-buffer (find-file-noselect (dired-get-filename)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
545 (while vc-parent-buffer
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
546 (pop-to-buffer vc-parent-buffer))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
547 (if (not (buffer-file-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
548 (error "Buffer %s is not associated with a file" (buffer-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
549 (if (not (vc-backend (buffer-file-name)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
550 (error "File %s is not under version control" (buffer-file-name))))))
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
551
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
552 (defvar vc-binary-assoc nil)
22534
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
553 (defvar vc-binary-suffixes
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
554 (if (memq system-type '(ms-dos windows-nt))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
555 '(".exe" ".com" ".bat" ".cmd" ".btm" "")
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
556 '("")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
557 (defun vc-find-binary (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
558 "Look for a command anywhere on the subprocess-command search path."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
559 (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
560 (catch 'found
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
561 (mapcar
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
562 (function
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
563 (lambda (s)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
564 (if s
22534
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
565 (let ((full (concat s "/" name))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
566 (suffixes vc-binary-suffixes)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
567 candidate)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
568 (while suffixes
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
569 (setq candidate (concat full (car suffixes)))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
570 (if (and (file-executable-p candidate)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
571 (not (file-directory-p candidate)))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
572 (progn
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
573 (setq vc-binary-assoc
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
574 (cons (cons name candidate) vc-binary-assoc))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
575 (throw 'found candidate))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
576 (setq suffixes (cdr suffixes))))))))
4791
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
577 exec-path)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
578 nil)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
579
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
580 (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
581 "Execute a version-control command, notifying user and checking for errors.
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
582 Output from COMMAND goes to BUFFER, or *vc* if BUFFER is nil. The
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
583 command is considered successful if its exit status does not exceed
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
584 OKSTATUS (if OKSTATUS is nil, that means to ignore errors). FILE is
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
585 the name of the working file (may also be nil, to execute commands
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
586 that don't expect a file name). If FILE is non-nil, the argument LAST
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
587 indicates what filename should actually be passed to the command: if
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
588 it is `MASTER', the name of FILE's master file is used, if it is
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
589 `WORKFILE', then FILE is passed through unchanged. If an optional
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
590 list of FLAGS is present, that is inserted into the command line
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
591 before the filename."
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
592 (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
593 (if (not buffer) (setq buffer "*vc*"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
594 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
595 (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
596 (let ((obuf (current-buffer)) (camefrom (current-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
597 (squeezed nil)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
598 (olddir default-directory)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
599 vc-file status)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
600 (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
601 (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
602 (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
603 (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
604 (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
605
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
606 (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
607
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
608 (mapcar
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
609 (function (lambda (s) (and s (setq squeezed (append squeezed (list s))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
610 flags)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
611 (if (and (eq last 'MASTER) file (setq vc-file (vc-name file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
612 (setq squeezed (append squeezed (list vc-file))))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
613 (if (and file (eq last 'WORKFILE))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
614 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
615 (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
616 (preflen (length pwd)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
617 (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
618 (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
619 (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
620 (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
621 ;; 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
622 (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
623 (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
624 path-separator
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
625 (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
626 process-environment))
16590
a0cfcb9f8033 Use w32 instead of ms-windows for window-system symbol
Geoff Voelker <voelker@cs.washington.edu>
parents: 16529
diff changeset
627 (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
628 (setq status (apply 'call-process command nil t nil squeezed)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
629 (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
630 (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
631 (forward-line -1)
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
632 (if (or (not (integerp status)) (and okstatus (< okstatus status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
633 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
634 (pop-to-buffer buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
635 (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
636 (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
637 (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
638 (if (integerp status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
639 (format "status %d" status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
640 status))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
641 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
642 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
643 (message "Running %s...OK" command))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
644 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
645 (set-buffer obuf)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
646 status)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
647 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
648
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
649 ;;; 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
650 ;;; 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
651 ;;; 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
652 ;;; 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
653 (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
654 (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
655 (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
656 (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
657 (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
658
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
659 ;;; 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
660 ;;; 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
661 (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
662 (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
663 (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
664 (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
665 (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
666 (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
667 (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
668 (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
669 (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
670 ;; 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
671 ;; 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
672 (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
673 ;; 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
674 ;; 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
675 (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
676 ;; 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
677 (- (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
678
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
679 (defun vc-context-matches-p (posn context)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
680 ;; Returns t if POSN matches CONTEXT, nil otherwise.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
681 (let* ((context-string (nth 2 context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
682 (len (length context-string))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
683 (end (+ posn len)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
684 (if (> end (1+ (buffer-size)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
685 nil
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
686 (string= context-string (buffer-substring posn end)))))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
687
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
688 (defun vc-buffer-context ()
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
689 ;; 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
690 ;; 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
691 (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
692 ;; 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
693 (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
694 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
695 ;; 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
696 (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
697 ;; 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
698 (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
699 (let ((curbuf (current-buffer)))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
700 ;; 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
701 ;; 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
702 ;; 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
703 (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
704 (mapcar (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
705 (lambda (buffer)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
706 (set-buffer buffer)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
707 (let ((errors (or
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
708 compilation-old-error-list
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
709 compilation-error-list))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
710 (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
711 (while (and (consp errors)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
712 (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
713 (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
714 (eq buffer
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
715 (marker-buffer
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
716 (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
717 (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
718 (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
719 (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
720 (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
721 (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
722
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
723 (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
724 ;; 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
725 ;; 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
726 (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
727 (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
728 (reparse (nth 2 context)))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
729 ;; Reparse affected compilation buffers.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
730 (while reparse
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
731 (if (car reparse)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
732 (save-excursion
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
733 (set-buffer (car reparse))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
734 (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
735 ;; 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
736 ;; 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
737 (error-pos (marker-position
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
738 (car (car-safe compilation-error-list)))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
739 ;; 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
740 (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
741 ;; 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
742 ;; 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
743 (while (and compilation-error-list
2558
78a9cebdb22c (vc-revert-buffer1): Typo fix in last change.
Roland McGrath <roland@gnu.org>
parents: 2555
diff changeset
744 (/= 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
745 (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
746 (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
747
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
748 ;; if necessary, restore point and mark
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
749 (if (not (vc-context-matches-p (point) point-context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
750 (let ((new-point (vc-find-position-by-context point-context)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
751 (if new-point (goto-char new-point))))
21212
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
752 (and mark-active
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
753 mark-context
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
754 (not (vc-context-matches-p (mark) mark-context))
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
755 (let ((new-mark (vc-find-position-by-context mark-context)))
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
756 (if new-mark (set-mark new-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
757
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
758 (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
759 ;; 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
760 ;; 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
761 ;; 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
762 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
763 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
764 (let ((context (vc-buffer-context)))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
765 ;; Use save-excursion here, because it may be able to restore point
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
766 ;; and mark properly even in cases where vc-restore-buffer-context
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
767 ;; would fail. However, save-excursion might also get it wrong --
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
768 ;; in this case, vc-restore-buffer-context gives it a second try.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
769 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
770 ;; t means don't call normal-mode;
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
771 ;; that's to preserve various minor modes.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
772 (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
773 (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
774
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
775
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
776 (defun vc-buffer-sync (&optional not-urgent)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
777 ;; 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
778 ;; 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
779 (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
780 (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
781 (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
782 (save-buffer)
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
783 (if not-urgent
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
784 nil
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
785 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
786
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
787
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
788 (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
789 ;; Has the given workfile changed since last checkout?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
790 (let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
791 (lastmod (nth 5 (file-attributes file))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
792 (or (equal checkout-time lastmod)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
793 (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
794 (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
795 (not want-differences-if-changed)))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
796 ;; 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
797 (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
798 unchanged)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
799
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
800 (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
801 ;;; If comment is specified, it will be used as an admin or checkin comment.
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
802 (let ((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
803 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
804 (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
805
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
806 ;; If the file is not under version control, register it
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
807 ((not vc-type)
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
808 (vc-register verbose comment))
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
809
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
810 ;; 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
811 ;; 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
812 ((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
813 (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
814 (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
815 (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
816 (yes-or-no-p
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
817 (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
818 (buffer-name))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
819 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
820 (if vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
821 (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
822 (buffer-modified-p buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
823 (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
824 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
825 (setq buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
826 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
827 (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
828 (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
829 (format
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
830 "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
831 (buffer-name buffer)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
832 (error "Merge aborted"))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
833 (let ((status (vc-backend-merge-news file)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
834 (and buffer
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
835 (vc-resynch-buffer file t
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
836 (not (buffer-modified-p buffer))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
837 (if (not (zerop status))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
838 (if (y-or-n-p "Conflicts detected. Resolve them now? ")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
839 (vc-resolve-conflicts)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
840 (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
841
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
842 ;; For CVS files with implicit checkout: if unmodified, don't do anything
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
843 ((and (eq vc-type 'CVS)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
844 (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
845 (not (vc-locking-user file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
846 (not verbose))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
847 (message "%s is up to date" (buffer-name)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
848
17201
ac40292bd898 (vc-next-action-on-file): With implicit checkout, make
Richard M. Stallman <rms@gnu.org>
parents: 17135
diff changeset
849 ;; If there is no lock on the file, assert one and get it.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
850 ((not (setq owner (vc-locking-user file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
851 ;; With implicit checkout, make sure not to lose unsaved changes.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
852 (and (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
853 (buffer-modified-p buffer)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
854 (vc-buffer-sync))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
855 (if (and vc-checkout-carefully
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
856 (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
857 (if (save-window-excursion
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
858 (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
859 (goto-char (point-min))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
860 (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
861 file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
862 (not (beep))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
863 (yes-or-no-p
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
864 (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
865 "claim lock retaining changes? ")))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
866 (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
867 (vc-mode-line file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
868 (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
869 (error "Checkout aborted")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
870 (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
871 (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
872 )
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
873 (if verbose
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
874 (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
875 (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
876 (read-string "Branch or version to move to: "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
877 (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
878 (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
879 (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
880 (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
881 "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
882 (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
883 (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
884 (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
885 (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
886 "" ;; 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
887 (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
888 )))
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
889
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 ;; 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
891 ((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
892 (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
893 (if comment
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
894 (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
895 (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
896 (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
897 (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
898 (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
899 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
900 (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
901 (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
902 owner))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
903
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
904 ;; 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
905 (t
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
906 (if vc-dired-mode
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
907 (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
908 (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
909
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
910 ;; If the file on disk is newer, then the user just
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
911 ;; said no to rereading it. So the user probably wishes to
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
912 ;; overwrite the file with the buffer's contents, and check
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
913 ;; that in.
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
914 (if (not (verify-visited-file-modtime (current-buffer)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
915 (if (yes-or-no-p "Replace file on disk with buffer contents? ")
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
916 (write-file (buffer-file-name))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
917 (error "Aborted"))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
918 ;; if buffer is not saved, give user a chance to do it
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
919 (vc-buffer-sync))
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
920
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
921 ;; 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
922 ;; 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
923 ;; 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
924 ;; 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
925 ;; 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
926 (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
927 (not (buffer-modified-p)))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
928 ;; 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
929 (cond
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
930 ((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
931 (vc-backend-revert file)
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
932 (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
933
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
934 ;; 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
935 (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
936 (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
937
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
938 ;; 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
939 (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
940 )))))
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
941
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
942 (defvar vc-dired-window-configuration)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
943
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
944 (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
945 ;; 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
946 ;; passing on the log comment we've just entered.
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
947 (let ((dired-buffer (current-buffer))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
948 (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
949 (dired-map-over-marks
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
950 (let ((file (dired-get-filename)))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
951 (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
952 ;; 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
953 ;; go to the right place.
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
954 (let ((default-directory (file-name-directory file)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
955 (vc-next-action-on-file file nil comment)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
956 (set-buffer dired-buffer))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
957 ;; Make sure that files don't vanish
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
958 ;; after they are checked in.
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
959 (let ((vc-dired-terse-mode nil))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
960 (dired-do-redisplay file))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
961 (set-window-configuration vc-dired-window-configuration)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
962 (message "Processing %s...done" file))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
963 nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
964 (dired-move-to-filename))
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
965
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
966 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
967
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
968 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
969 (defun vc-next-action (verbose)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
970 "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
971 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
972 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
973 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
974 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
975 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
976 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
977 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
978 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
979
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
980 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
981 If the file is not already registered, this registers it for version
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
982 control.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
983 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
984 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
985 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
986 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
987 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
988 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
989 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
990 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
991 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
992 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
993 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
994 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
995
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
996 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
997 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
998 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
999 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
1000 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
1001 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
1002 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
1003 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
1004 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
1005 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
1006
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1007 (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
1008 (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
1009 (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
1010 (let ((files (dired-get-marked-files)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1011 (set (make-local-variable 'vc-dired-window-configuration)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1012 (current-window-configuration))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1013 (if (string= ""
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1014 (mapconcat
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1015 (function (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1016 (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
1017 (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
1018 (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
1019 "@" "")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1020 (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
1021 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1022 (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
1023 (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
1024 "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
1025 '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
1026 (throw 'nogo nil)))
21448
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1027 (while vc-parent-buffer
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1028 (pop-to-buffer vc-parent-buffer))
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1029 (if buffer-file-name
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1030 (vc-next-action-on-file buffer-file-name verbose)
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1031 (error "Buffer %s is not associated with a file" (buffer-name)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1032
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1033 ;;; These functions help the vc-next-action entry point
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1034
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1035 (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
1036 "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
1037 (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
1038 )
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1039
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1040 ;;;###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
1041 (defun vc-register (&optional override comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1042 "Register the current file into your version-control system."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1043 (interactive "P")
12152
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
1044 (or buffer-file-name
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
1045 (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
1046 (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
1047 (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
1048 (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
1049 (and master
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1050 (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
1051 (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
1052 ;; 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
1053 ;; 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
1054 (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
1055 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1056 (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
1057 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1058 (vc-buffer-sync)
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1059 (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
1060 ;; 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
1061 (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
1062 (setq backup-inhibited t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1063 (vc-admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1064 buffer-file-name
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1065 (or (and override
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1066 (read-string
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1067 (format "Initial version level for %s: " buffer-file-name)))
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1068 vc-default-init-version)
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1069 comment)
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1070 ;; Recompute backend property (it may have been set to nil before).
20977
1ca384be7f8a (vc-register): Update vc-buffer-backend.
Karl Heuer <kwzh@gnu.org>
parents: 20967
diff changeset
1071 (setq vc-buffer-backend (vc-backend (buffer-file-name)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1072 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1073
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1074 (defun vc-resynch-window (file &optional keep noquery)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1075 ;; If the given file is in the current buffer,
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
1076 ;; either revert on it so we see expanded keywords,
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1077 ;; 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
1078 ;; 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
1079 ;; 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
1080 ;; 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
1081 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1082 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1083 (progn
1905
494dd05d460c * files.el (revert-buffer): Reverse the sense of the first
Jim Blandy <jimb@redhat.com>
parents: 1674
diff changeset
1084 (vc-revert-buffer1 t noquery)
20602
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1085 (and view-read-only
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1086 (if (file-writable-p file)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1087 (and view-mode
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1088 (let ((view-old-buffer-read-only nil))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1089 (view-mode-exit)))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1090 (and (not view-mode)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1091 (not (eq (get major-mode 'mode-class) 'special))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1092 (view-mode-enter))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1093 (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
1094 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1095
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1096 (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
1097 ;; if FILE is currently visited, resynch its buffer
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1098 (if (string= buffer-file-name file)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1099 (vc-resynch-window file keep noquery)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1100 (let ((buffer (get-file-buffer file)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1101 (if buffer
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1102 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1103 (set-buffer buffer)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1104 (vc-resynch-window file keep noquery))))))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1105
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1106 (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
1107 ;; 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
1108 ;; 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
1109 ;; 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
1110 ;; 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
1111 ;; 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
1112 (let ((parent (if file (find-file-noselect file) (current-buffer))))
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1113 (if vc-before-checkin-hook
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1114 (if file
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1115 (save-excursion
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1116 (set-buffer parent)
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1117 (run-hooks 'vc-before-checkin-hook))
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1118 (run-hooks 'vc-before-checkin-hook)))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1119 (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
1120 (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
1121 (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
1122 (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
1123 (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
1124 (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
1125 (if file (vc-mode-line file))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1126 (vc-log-mode file)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1127 (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
1128 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1129 (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
1130 (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
1131 (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
1132 (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
1133 (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
1134 (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
1135 (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
1136 (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
1137 (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
1138 (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
1139 (message "%s Type C-c C-c when done." msg))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1140
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
1141 (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
1142 "Check a file into your version-control system.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1143 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
1144 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
1145 (vc-start-entry file rev
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1146 (or comment (not vc-initial-comment))
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1147 "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
1148 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
1149
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1150 (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
1151 "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
1152 ;; 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
1153 ;; 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
1154 (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
1155 (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
1156 (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
1157 (vc-resynch-buffer file t t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1158
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1159 (defun vc-steal-lock (file rev &optional owner)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1160 "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
1161 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1162 (if (not owner)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1163 (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
1164 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1165 (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
1166 (setq file-description file))
18265
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1167 (if (not (yes-or-no-p (format "Steal the lock on %s from %s? "
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1168 file-description owner)))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1169 (error "Steal cancelled"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1170 (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
1171 (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
1172 (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
1173 (mail-mode)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1174 (erase-buffer)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1175 (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
1176 (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
1177 (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
1178 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1179 (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
1180 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1181 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1182 (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
1183
1343
9b5cb40cb6c8 (vc-steal-lock): Use mail-setup, and do like `mail'.
Richard M. Stallman <rms@gnu.org>
parents: 1337
diff changeset
1184 ;; This is called when the notification has been sent.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1185 (defun vc-finish-steal (file version)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1186 (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
1187 (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
1188 (save-excursion
9046
09fb6d81f449 (vc-finish-steal): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9045
diff changeset
1189 (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
1190 (vc-resynch-window file t t))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1191
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1192 (defun vc-checkin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1193 "Check in the file specified by FILE.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1194 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
1195 \(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
1196 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
1197 If the back-end is CVS, a writable workfile is always kept.
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1198 COMMENT is a comment string; if omitted, a buffer is popped up to accept a
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1199 comment.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1200
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1201 Runs the normal hook `vc-checkin-hook'."
6581
3a0db3b2366c (vc-checkin): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6563
diff changeset
1202 (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
1203 "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
1204 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1205
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1206 (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
1207 "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
1208 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
1209 Second arg is file name of change log. \
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1210 If nil, uses `change-log-default-name'.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1211
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1212 May be useful as a `vc-checkin-hook' to update change logs automatically."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1213 (interactive (if current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1214 (list current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1215 (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
1216 ;; 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
1217 ;; before binding it.
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1218 (require 'add-log)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1219 (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
1220 (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
1221 ;; 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
1222 (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
1223 end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1224 ;; 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
1225 (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
1226 ;; 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
1227 (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
1228 (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
1229 ;; 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
1230 ;; 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
1231 (delete-char -2))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1232 ;; 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
1233 (just-one-space)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1234 ;; 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
1235 (let ((indentation (current-indentation)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1236 (save-excursion
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1237 (while (< (point) end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1238 (forward-line 1)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1239 (indent-to indentation))
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1240 (setq end (point))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1241 ;; 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
1242 (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
1243 (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
1244 (beginning-of-line)
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1245 (fill-region (point) end))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1246 ;; 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
1247 ;; 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
1248 (skip-syntax-forward " " end)
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1249 (delete-char (- (skip-syntax-backward " ")))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1250 (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
1251 (insert "\n"))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1252
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
1253 (defun vc-finish-logentry (&optional nocomment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1254 "Complete the operation implied by the current log entry."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1255 (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
1256 ;; 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
1257 (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
1258 (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
1259 ;; 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
1260 (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
1261 ;; 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
1262 (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
1263 ))
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1264 ;; 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
1265 ;; 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
1266 (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
1267 (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
1268 (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
1269 (vc-buffer-sync)))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1270 (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
1271 ;; 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
1272 (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
1273 (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
1274 (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
1275 (log-entry (buffer-string))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1276 (after-hook vc-log-after-operation-hook)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1277 (tmp-vc-parent-buffer vc-parent-buffer))
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
1278 (pop-to-buffer vc-parent-buffer)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1279 ;; 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
1280 (save-excursion
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1281 (funcall log-operation
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1282 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1283 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1284 log-entry))
20661
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1285 ;; Remove checkin window (after the checkin so that if that fails
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1286 ;; we don't zap the *VC-log* buffer and the typing therein).
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1287 (let ((logbuf (get-buffer "*VC-log*")))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1288 (cond ((and logbuf vc-delete-logbuf-window)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1289 (delete-windows-on logbuf (selected-frame))
22721
d023df160219 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 22715
diff changeset
1290 ;; Kill buffer and delete any other dedicated windows/frames.
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1291 (kill-buffer logbuf))
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1292 (t (pop-to-buffer "*VC-log*")
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1293 (bury-buffer)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1294 (pop-to-buffer tmp-vc-parent-buffer))))
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
1295 ;; 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
1296 (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
1297 (vc-resynch-window buffer-file-name vc-keep-workfiles t))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1298 (if vc-dired-mode
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1299 (dired-move-to-filename))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1300 (run-hooks after-hook 'vc-finish-logentry-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1301
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1302 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1303
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
1304 (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
1305 "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
1306 (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
1307 (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
1308 (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
1309 (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
1310 (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
1311 (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
1312 (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
1313 ;; 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
1314 ;; 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
1315 ;; 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
1316 (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
1317 (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
1318 (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
1319 (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
1320 (setq vc-comment-ring-index
4509
aeef9d07f78d (vc-previous-comment): Use `mod', not `ring-mod'.
Paul Eggert <eggert@twinsun.com>
parents: 4480
diff changeset
1321 (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
1322 (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
1323 (insert (ring-ref vc-comment-ring vc-comment-ring-index))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1324
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
1325 (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
1326 "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
1327 (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
1328 (vc-previous-comment (- arg)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1329
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 (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
1331 "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
1332 (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
1333 (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
1334 (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
1335 (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
1336 (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
1337 (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
1338 (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
1339 (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
1340 (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
1341 (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
1342 (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
1343 (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
1344 (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
1345 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1346
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
1347 (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
1348 "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
1349 (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
1350 (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
1351 (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
1352 (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
1353 (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
1354 (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
1355 (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
1356 (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
1357 (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
1358 (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
1359 (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
1360 (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
1361 (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
1362 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1363
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1364 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1365
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1366 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1367 (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
1368 "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
1369 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
1370 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
1371 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
1372 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
1373 (interactive (list current-prefix-arg t))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1374 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1375 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1376 (call-interactively 'vc-version-diff)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1377 (let ((file buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1378 unchanged)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1379 (vc-buffer-sync not-urgent)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1380 (setq unchanged (vc-workfile-unchanged-p buffer-file-name))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1381 (if unchanged
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1382 (message "No changes to %s since latest version" file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1383 (vc-backend-diff file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1384 ;; Ideally, we'd like at this point to parse the diff so that
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1385 ;; the buffer effectively goes into compilation mode and we
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1386 ;; can visit the old and new change locations via next-error.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1387 ;; Unfortunately, this is just too painful to do. The basic
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1388 ;; problem is that the `old' file doesn't exist to be
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1389 ;; visited. This plays hell with numerous assumptions in
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1390 ;; the diff.el and compile.el machinery.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1391 (set-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1392 (setq default-directory (file-name-directory file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1393 (if (= 0 (buffer-size))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1394 (progn
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1395 (setq unchanged t)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1396 (message "No changes to %s since latest version" file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1397 (pop-to-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1398 (goto-char (point-min))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1399 (shrink-window-if-larger-than-buffer)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1400 (not unchanged))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1401
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1402 (defun vc-version-diff (file rel1 rel2)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1403 "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
1404 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
1405 files in or below it."
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1406 (interactive
19484
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1407 (let ((file (read-file-name (if buffer-file-name
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1408 "File or dir to diff: (default visited file) "
e39dadab5521 (vc-version-diff): Mention that default file is visited file.
Richard M. Stallman <rms@gnu.org>
parents: 19177
diff changeset
1409 "File or dir to diff: ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1410 default-directory buffer-file-name t))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1411 (rel1-default nil) (rel2-default nil))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1412 ;; compute default versions based on the file state
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1413 (cond
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1414 ;; if it's a directory, don't supply any version defauolt
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1415 ((file-directory-p file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1416 nil)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1417 ;; if the file is locked, use current version as older version
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1418 ((vc-locking-user file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1419 (setq rel1-default (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1420 ;; if the file is not locked, use last and previous version as default
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1421 (t
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1422 (setq rel1-default (vc-previous-version (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1423 (setq rel2-default (vc-workfile-version file))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1424 ;; construct argument list
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1425 (list file
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1426 (read-string (if rel1-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1427 (concat "Older version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1428 rel1-default ") ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1429 "Older version: ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1430 nil nil rel1-default)
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1431 (read-string (if rel2-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1432 (concat "Newer version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1433 rel2-default ") ")
19177
31175a4bf0a6 (vc-version-diff): Change the Newer version prompt.
Richard M. Stallman <rms@gnu.org>
parents: 19126
diff changeset
1434 "Newer version (default: current source): ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1435 nil nil rel2-default))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1436 (if (string-equal rel1 "") (setq rel1 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1437 (if (string-equal rel2 "") (setq rel2 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1438 (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
1439 (let ((camefrom (current-buffer)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1440 (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
1441 (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
1442 (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
1443 (concat " from " (buffer-name camefrom)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1444 (erase-buffer)
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1445 (insert "Diffs between "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1446 (or rel1 "last version checked in")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1447 " and "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1448 (or rel2 "current workfile(s)")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1449 ":\n\n")
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1450 (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
1451 (cd file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1452 (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
1453 default-directory
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1454 (function (lambda (f)
2219
a729b16f7427 (vc-version-diff): Use (message ...), not (message (format ...)).
Paul Eggert <eggert@twinsun.com>
parents: 2212
diff changeset
1455 (message "Looking at %s" f)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1456 (and
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1457 (not (file-directory-p f))
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1458 (vc-registered f)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1459 (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
1460 (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
1461 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1462 (pop-to-buffer "*vc-status*")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1463 (insert "\nEnd of diffs.\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1464 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1465 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1466 )
2769
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1467 (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
1468 (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
1469 (pop-to-buffer "*vc-diff*"))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1470
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1471 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1472 (defun vc-version-other-window (rev)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1473 "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
1474 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
1475 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
1476 (interactive "sVersion to visit (default is latest version): ")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1477 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1478 (let* ((version (if (string-equal rev "")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1479 (vc-latest-version buffer-file-name)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1480 rev))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1481 (filename (concat buffer-file-name ".~" version "~")))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1482 (or (file-exists-p filename)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1483 (vc-backend-checkout buffer-file-name nil version filename))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1484 (find-file-other-window filename)))
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1485
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1486 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1487
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1488 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1489 (defun vc-insert-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1490 "Insert headers in a file for use with your version-control system.
23235
7f3fdbb83988 (vc-insert-headers): Doc fix.
Dave Love <fx@gnu.org>
parents: 22905
diff changeset
1491 Headers desired are inserted at point, and are pulled from
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1492 the variable `vc-header-alist'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1493 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1494 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1495 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1496 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1497 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1498 (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
1499 (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
1500 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1501 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1502 (comment-start-vc (or (car delims) comment-start "#"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1503 (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
1504 (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
1505 (mapcar (function (lambda (s)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1506 (insert comment-start-vc "\t" s "\t"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1507 comment-end-vc "\n")))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1508 hdstrings)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1509 (if vc-static-header-alist
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1510 (mapcar (function (lambda (f)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1511 (if (string-match (car f) buffer-file-name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1512 (insert (format (cdr f) (car hdstrings))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1513 vc-static-header-alist))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1514 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1515 )))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1516
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1517 (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
1518 ;; 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
1519 ;; 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
1520 ;; Don't lose point and mark during this.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1521 (let ((context (vc-buffer-context))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1522 (case-fold-search nil))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1523 ;; save-excursion may be able to relocate point and mark properly.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1524 ;; If it fails, vc-restore-buffer-context will give it a second try.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1525 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1526 (goto-char (point-min))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1527 (while (re-search-forward
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1528 (concat "\\$\\(Author\\|Date\\|Header\\|Id\\|Locker\\|Name\\|"
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1529 "RCSfile\\|Revision\\|Source\\|State\\): [^$\n]+\\$")
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1530 nil t)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1531 (replace-match "$\\1$")))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1532 (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
1533
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1534 ;;;###autoload
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1535 (defun vc-merge ()
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1536 (interactive)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1537 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1538 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1539 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1540 (backend (vc-backend file))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1541 first-version second-version locking-user)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1542 (if (eq backend 'SCCS)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1543 (error "Sorry, merging is not implemented for SCCS")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1544 (setq locking-user (vc-locking-user file))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1545 (if (eq (vc-checkout-model file) 'manual)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1546 (if (not locking-user)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1547 (if (not (y-or-n-p
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1548 (format "File must be %s for merging. %s now? "
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1549 (if (eq backend 'RCS) "locked" "writable")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1550 (if (eq backend 'RCS) "Lock" "Check out"))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1551 (error "Merge aborted")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1552 (vc-checkout file t))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1553 (if (not (string= locking-user (vc-user-login-name)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1554 (error "File is locked by %s" locking-user))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1555 (setq first-version (read-string "Branch or version to merge from: "))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1556 (if (and (>= (elt first-version 0) ?0)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1557 (<= (elt first-version 0) ?9))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1558 (if (not (vc-branch-p first-version))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1559 (setq second-version
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1560 (read-string "Second version: "
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1561 (concat (vc-branch-part first-version) ".")))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1562 ;; We want to merge an entire branch. Set versions
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1563 ;; accordingly, so that vc-backend-merge understands us.
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1564 (setq second-version first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1565 ;; first-version must be the starting point of the branch
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1566 (setq first-version (vc-branch-part first-version))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1567 (let ((status (vc-backend-merge file first-version second-version)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1568 (if (and (eq (vc-checkout-model file) 'implicit)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1569 (not (vc-locking-user file)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1570 (vc-file-setprop file 'vc-locking-user nil))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1571 (vc-resynch-buffer file t t)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1572 (if (not (zerop status))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1573 (if (y-or-n-p "Conflicts detected. Resolve them now? ")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1574 (vc-resolve-conflicts "WORKFILE" "MERGE SOURCE")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1575 (message "File contains conflict markers"))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1576 (message "Merge successful"))))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1577
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1578 (defvar vc-ediff-windows)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1579 (defvar vc-ediff-result)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1580
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1581 ;;;###autoload
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1582 (defun vc-resolve-conflicts (&optional name-A name-B)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1583 "Invoke ediff to resolve conflicts in the current buffer.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1584 The conflicts must be marked with rcsmerge conflict markers."
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1585 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1586 (vc-ensure-vc-buffer)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1587 (let* ((found nil)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1588 (file-name (file-name-nondirectory buffer-file-name))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1589 (your-buffer (generate-new-buffer
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1590 (concat "*" file-name
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1591 " " (or name-A "WORKFILE") "*")))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1592 (other-buffer (generate-new-buffer
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1593 (concat "*" file-name
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1594 " " (or name-B "CHECKED-IN") "*")))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1595 (result-buffer (current-buffer)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1596 (save-excursion
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1597 (set-buffer your-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1598 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1599 (insert-buffer result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1600 (goto-char (point-min))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1601 (while (re-search-forward (concat "^<<<<<<< "
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1602 (regexp-quote file-name) "\n") nil t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1603 (setq found t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1604 (replace-match "")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1605 (if (not (re-search-forward "^=======\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1606 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1607 (replace-match "")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1608 (let ((start (point)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1609 (if (not (re-search-forward "^>>>>>>> [0-9.]+\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1610 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1611 (delete-region start (point))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1612 (if (not found)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1613 (progn
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1614 (kill-buffer your-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1615 (kill-buffer other-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1616 (error "No conflict markers found")))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1617 (set-buffer other-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1618 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1619 (insert-buffer result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1620 (goto-char (point-min))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1621 (while (re-search-forward (concat "^<<<<<<< "
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1622 (regexp-quote file-name) "\n") nil t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1623 (let ((start (match-beginning 0)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1624 (if (not (re-search-forward "^=======\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1625 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1626 (delete-region start (point))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1627 (if (not (re-search-forward "^>>>>>>> [0-9.]+\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1628 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1629 (replace-match "")))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1630 (let ((config (current-window-configuration))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1631 (ediff-default-variant 'default-B))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1632
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1633 ;; Fire up ediff.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1634
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1635 (set-buffer (ediff-merge-buffers your-buffer other-buffer))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1636
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1637 ;; Ediff is now set up, and we are in the control buffer.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1638 ;; Do a few further adjustments and take precautions for exit.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1639
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1640 (make-local-variable 'vc-ediff-windows)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1641 (setq vc-ediff-windows config)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1642 (make-local-variable 'vc-ediff-result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1643 (setq vc-ediff-result result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1644 (make-local-variable 'ediff-quit-hook)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1645 (setq ediff-quit-hook
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1646 (function
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1647 (lambda ()
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1648 (let ((buffer-A ediff-buffer-A)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1649 (buffer-B ediff-buffer-B)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1650 (buffer-C ediff-buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1651 (result vc-ediff-result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1652 (windows vc-ediff-windows))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1653 (ediff-cleanup-mess)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1654 (set-buffer result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1655 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1656 (insert-buffer buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1657 (kill-buffer buffer-A)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1658 (kill-buffer buffer-B)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1659 (kill-buffer buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1660 (set-window-configuration windows)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1661 (message "Conflict resolution finished; you may save the buffer")))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1662 (message "Please resolve conflicts now; exit ediff when done")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1663 nil))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1664
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1665 ;; 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
1666 ;; 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
1667
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1668 (defvar vc-dired-switches)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1669 (defvar vc-dired-terse-mode)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1670
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1671 (define-derived-mode vc-dired-mode dired-mode "Dired under VC"
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1672 "The major mode used in VC directory buffers. It works like Dired,
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1673 but lists only files under version control, with the current VC state of
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1674 each file being indicated in the place of the file's link count, owner,
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1675 group and size. Subdirectories are also listed, and you may insert them
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1676 into the buffer as desired, like in Dired.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1677 All Dired commands operate normally, with the exception of `v', which
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1678 is redefined as the version control prefix, so that you can type
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1679 `vl', `v=' etc. to invoke `vc-print-log', `vc-diff', and the like on
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1680 the file named in the current Dired buffer line. `vv' invokes
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1681 `vc-next-action' on this file, or on all files currently marked.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1682 There is a special command, `*l', to mark all files currently locked."
21370
e8224143df73 (vc-dired-mode): Make dired-after-readin-hook a local hook, not a local variable.
André Spiegel <spiegel@gnu.org>
parents: 21368
diff changeset
1683 (make-local-hook 'dired-after-readin-hook)
e8224143df73 (vc-dired-mode): Make dired-after-readin-hook a local hook, not a local variable.
André Spiegel <spiegel@gnu.org>
parents: 21368
diff changeset
1684 (add-hook 'dired-after-readin-hook 'vc-dired-hook nil t)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1685 ;; The following is slightly modified from dired.el,
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1686 ;; because file lines look a bit different in vc-dired-mode.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1687 (set (make-local-variable 'dired-move-to-filename-regexp)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1688 (let*
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1689 ((l "\\([A-Za-z]\\|[^\0-\177]\\)")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1690 ;; In some locales, month abbreviations are as short as 2 letters,
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1691 ;; and they can be padded on the right with spaces.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1692 (month (concat l l "+ *"))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1693 ;; Recognize any non-ASCII character.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1694 ;; The purpose is to match a Kanji character.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1695 (k "[^\0-\177]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1696 ;; (k "[^\x00-\x7f\x80-\xff]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1697 (s " ")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1698 (yyyy "[0-9][0-9][0-9][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1699 (mm "[ 0-1][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1700 (dd "[ 0-3][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1701 (HH:MM "[ 0-2][0-9]:[0-5][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1702 (western (concat "\\(" month s dd "\\|" dd s month "\\)"
24852
fb28ec3f61c7 Undo previous undo -- spiegel's change already corrected rms's.
Karl Heuer <kwzh@gnu.org>
parents: 24850
diff changeset
1703 s "\\(" HH:MM "\\|" s yyyy"\\|" yyyy s "\\)"))
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1704 (japanese (concat mm k s dd k s "\\(" s HH:MM "\\|" yyyy k "\\)")))
24823
7bf461aabf49 (vc-dired-mode): Don't match anything before the date in
André Spiegel <spiegel@gnu.org>
parents: 24761
diff changeset
1705 (concat s "\\(" western "\\|" japanese "\\)" s)))
22356
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
1706 (and (boundp 'vc-dired-switches)
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
1707 vc-dired-switches
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
1708 (set (make-local-variable 'dired-actual-switches)
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
1709 vc-dired-switches))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1710 (set (make-local-variable 'vc-dired-terse-mode) vc-dired-terse-display)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1711 (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
1712
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1713 (define-key vc-dired-mode-map "\C-xv" vc-prefix-map)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1714 (define-key vc-dired-mode-map "v" vc-prefix-map)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1715
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1716 (defun vc-dired-toggle-terse-mode ()
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1717 "Toggle terse display in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1718 (interactive)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1719 (if (not vc-dired-mode)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1720 nil
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1721 (setq vc-dired-terse-mode (not vc-dired-terse-mode))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1722 (if vc-dired-terse-mode
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1723 (vc-dired-hook)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1724 (revert-buffer))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1725
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1726 (define-key vc-dired-mode-map "vt" 'vc-dired-toggle-terse-mode)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1727
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1728 (defun vc-dired-mark-locked ()
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1729 "Mark all files currently locked."
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1730 (interactive)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1731 (dired-mark-if (let ((f (dired-get-filename nil t)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1732 (and f
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1733 (not (file-directory-p f))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1734 (vc-locking-user f)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1735 "locked file"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1736
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1737 (define-key vc-dired-mode-map "*l" 'vc-dired-mark-locked)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1738
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1739 (defun vc-fetch-cvs-status (dir)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1740 (let ((default-directory dir))
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1741 ;; Don't specify DIR in this command, the default-directory is
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1742 ;; enough. Otherwise it might fail with remote repositories.
24903
6f932cbd18e8 (vc-fetch-cvs-status): Use "-l" option for "cvs status", to make it
André Spiegel <spiegel@gnu.org>
parents: 24852
diff changeset
1743 (vc-do-command "*vc-info*" 0 "cvs" nil nil "status" "-l")
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1744 (save-excursion
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1745 (set-buffer (get-buffer "*vc-info*"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1746 (goto-char (point-min))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1747 (while (re-search-forward "^=+\n\\([^=\n].*\n\\|\n\\)+" nil t)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1748 (narrow-to-region (match-beginning 0) (match-end 0))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1749 (vc-parse-cvs-status)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1750 (goto-char (point-max))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1751 (widen)))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1752
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1753 (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
1754 ;; 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
1755 ;; on a VC dired line.
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1756 (let* ((cvs-state (and (eq (vc-backend file) 'CVS)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1757 (vc-cvs-status file)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1758 (state
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1759 (if cvs-state
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1760 (cond ((eq cvs-state 'up-to-date) nil)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1761 ((eq cvs-state 'needs-checkout) "patch")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1762 ((eq cvs-state 'locally-modified) "modified")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1763 ((eq cvs-state 'needs-merge) "merge")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1764 ((eq cvs-state 'unresolved-conflict) "conflict")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1765 ((eq cvs-state 'locally-added) "added"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1766 (vc-locking-user file))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1767 (if state (concat "(" state ")"))))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1768
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
1769 (defun vc-dired-reformat-line (x)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1770 ;; Reformat a directory-listing line, replacing various columns with
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1771 ;; version control information.
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
1772 ;; This code, like dired, assumes UNIX -l format.
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1773 (beginning-of-line)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1774 (let ((pos (point)) limit perm date-and-file)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1775 (end-of-line)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1776 (setq limit (point))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1777 (goto-char pos)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1778 (when
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1779 (or
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1780 (re-search-forward ;; owner and group
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1781 "^\\(..[drwxlts-]+ \\) *[0-9]+ [^ ]+ +[^ ]+ +[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1782 limit t)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1783 (re-search-forward ;; only owner displayed
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1784 "^\\(..[drwxlts-]+ \\) *[0-9]+ [^ ]+ +[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1785 limit t)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1786 (re-search-forward ;; OS/2 -l format, no links, owner, group
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1787 "^\\(..[drwxlts-]+ \\) *[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1788 limit t))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1789 (setq perm (match-string 1)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1790 date-and-file (match-string 2))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1791 (setq x (substring (concat x " ") 0 10))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1792 (replace-match (concat perm x date-and-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
1793
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1794 (defun vc-dired-hook ()
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1795 ;; Called by dired after any portion of a vc-dired buffer has been read in.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1796 ;; Reformat the listing according to version control.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1797 (message "Getting version information... ")
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1798 (let (subdir filename (buffer-read-only nil) cvs-dir)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1799 (goto-char (point-min))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1800 (while (not (eq (point) (point-max)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1801 (cond
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1802 ;; subdir header line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1803 ((setq subdir (dired-get-subdir))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1804 (if (file-directory-p (concat subdir "/CVS"))
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1805 (progn
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1806 (vc-fetch-cvs-status (file-name-as-directory subdir))
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1807 (setq cvs-dir t))
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1808 (setq cvs-dir nil))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1809 (forward-line 1)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1810 ;; erase (but don't remove) the "total" line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1811 (let ((start (point)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1812 (end-of-line)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1813 (delete-region start (point))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1814 (beginning-of-line)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1815 (forward-line 1)))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1816 ;; directory entry
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1817 ((setq filename (dired-get-filename nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1818 (cond
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1819 ;; subdir
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1820 ((file-directory-p filename)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1821 (cond
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1822 ((member (file-name-nondirectory filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1823 vc-directory-exclusion-list)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1824 (let ((pos (point)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1825 (dired-kill-tree filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1826 (goto-char pos)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1827 (dired-kill-line)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1828 (vc-dired-terse-mode
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1829 ;; Don't show directories in terse mode. Don't use
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1830 ;; dired-kill-line to remove it, because in recursive listings,
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1831 ;; that would remove the directory contents as well.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1832 (delete-region (progn (beginning-of-line) (point))
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1833 (progn (forward-line 1) (point))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1834 ((string-match "\\`\\.\\.?\\'" (file-name-nondirectory filename))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1835 (dired-kill-line))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1836 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1837 (vc-dired-reformat-line nil)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1838 (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1839 ;; ordinary file
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1840 ((if cvs-dir
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1841 (and (eq (vc-file-getprop filename 'vc-backend) 'CVS)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1842 (or (not vc-dired-terse-mode)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1843 (not (eq (vc-cvs-status filename) 'up-to-date))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1844 (and (vc-backend filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1845 (or (not vc-dired-terse-mode)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1846 (vc-locking-user filename))))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1847 (vc-dired-reformat-line (vc-dired-state-info filename))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1848 (forward-line 1))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1849 (t
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1850 (dired-kill-line))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1851 ;; any other line
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1852 (t (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1853 (vc-dired-purge))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1854 (message "Getting version information... done")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1855 (save-restriction
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1856 (widen)
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1857 (cond ((eq (count-lines (point-min) (point-max)) 1)
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1858 (goto-char (point-min))
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1859 (message "No files locked under %s" default-directory)))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1860
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1861 (defun vc-dired-purge ()
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1862 ;; Remove empty subdirs
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1863 (let (subdir)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1864 (goto-char (point-min))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1865 (while (setq subdir (dired-get-subdir))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1866 (forward-line 2)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1867 (if (dired-get-filename nil t)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1868 (if (not (dired-next-subdir 1 t))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1869 (goto-char (point-max)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1870 (forward-line -2)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1871 (if (not (string= (dired-current-directory) default-directory))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1872 (dired-do-kill-lines t "")
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1873 ;; We cannot remove the top level directory.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1874 ;; Just make it look a little nicer.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1875 (forward-line 1)
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1876 (kill-line)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1877 (if (not (dired-next-subdir 1 t))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1878 (goto-char (point-max))))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1879 (goto-char (point-min))))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1880
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1881 ;;;###autoload
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1882 (defun vc-directory (dirname read-switches)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1883 (interactive "DDired under VC (directory): \nP")
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1884 (let ((vc-dired-switches (concat dired-listing-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1885 (if vc-dired-recurse "R" ""))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1886 (if read-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1887 (setq vc-dired-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1888 (read-string "Dired listing switches: "
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1889 vc-dired-switches)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1890 (require 'dired)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1891 (require 'dired-aux)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1892 ;; force a trailing slash
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1893 (if (not (eq (elt dirname (1- (length dirname))) ?/))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1894 (setq dirname (concat dirname "/")))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1895 (switch-to-buffer
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1896 (dired-internal-noselect (expand-file-name dirname)
22356
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
1897 (or vc-dired-switches dired-listing-switches)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1898 'vc-dired-mode))))
10475
2d9590603a06 Revert Jan 15 and Jan 5 changes.
Richard M. Stallman <rms@gnu.org>
parents: 10431
diff changeset
1899
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1900 ;; Named-configuration support for SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1901
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1902 (defun vc-add-triple (name file rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1903 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1904 (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
1905 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1906 (file-name-directory (vc-name file))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1907 (goto-char (point-max))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1908 (insert name "\t:\t" file "\t" rev "\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1909 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1910 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1911 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1912
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1913 (defun vc-record-rename (file newname)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1914 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1915 (find-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1916 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1917 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1918 (file-name-directory (vc-name file))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1919 (goto-char (point-min))
5263
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1920 ;; (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
1921 (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
1922 (replace-match (concat ":" newname) nil nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1923 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1924 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1925 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1926
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1927 (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
1928 ;; 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
1929 ;; 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
1930 (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
1931 ((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
1932 (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
1933 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
1934 (t
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1935 (save-excursion
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1936 (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
1937 (vc-insert-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1938 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1939 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1940 (file-name-directory (vc-name file))))
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1941 (prog1
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1942 (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
1943 (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
1944 (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
1945 ))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1946
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1947 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1948
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1949 (defun vc-snapshot-precondition ()
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1950 ;; Scan the tree below the current directory.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1951 ;; 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
1952 ;; (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
1953 ;; 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
1954 ;; Otherwise, return nil.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1955 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1956 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1957 (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
1958 default-directory
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1959 (function (lambda (f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1960 (and (vc-registered f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1961 (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
1962 (if (get-file-buffer f) (setq status 'visited)))))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1963 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1964
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1965 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1966 (defun vc-create-snapshot (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1967 "Make a snapshot called NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1968 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
1969 directory. For each file, the version level of its latest
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1970 version becomes part of the named configuration."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1971 (interactive "sNew snapshot name: ")
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1972 (let ((result (vc-snapshot-precondition)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1973 (if (stringp result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1974 (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
1975 (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
1976 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
1977 (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
1978 (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
1979 (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
1980 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1981
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1982 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1983 (defun vc-retrieve-snapshot (name)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1984 "Retrieve the snapshot called NAME, or latest versions if NAME is empty.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1985 When retrieving a snapshot, there must not be any locked files at or below
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1986 the current directory. If none are locked, all registered files are
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1987 checked out (unlocked) at their version levels in the snapshot NAME.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1988 If NAME is the empty string, all registered files that are not currently
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1989 locked are updated to the latest versions."
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1990 (interactive "sSnapshot name to retrieve (default latest versions): ")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1991 (let ((update (yes-or-no-p "Update any affected buffers? ")))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1992 (if (string= name "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1993 (progn
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1994 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1995 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1996 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1997 (vc-registered f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1998 (not (vc-locking-user f))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1999 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2000 (vc-backend-checkout f nil "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2001 (if update (vc-resynch-buffer f t t))))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2002 (let ((result (vc-snapshot-precondition)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2003 (if (stringp result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2004 (error "File %s is locked" result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2005 (setq update (and (eq result 'visited) update))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2006 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2007 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2008 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2009 (vc-name f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2010 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2011 (vc-backend-checkout f nil name)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2012 (if update (vc-resynch-buffer f t t)))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2013 )))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2014
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2015 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2016
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2017 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2018 (defun vc-print-log ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2019 "List the change log of the current buffer in a window."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2020 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2021 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2022 (let ((file buffer-file-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2023 (vc-backend-print-log file)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2024 (pop-to-buffer (get-buffer-create "*vc*"))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2025 (setq default-directory (file-name-directory file))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2026 (goto-char (point-max)) (forward-line -1)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2027 (while (looking-at "=*\n")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2028 (delete-char (- (match-end 0) (match-beginning 0)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2029 (forward-line -1))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2030 (goto-char (point-min))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2031 (if (looking-at "[\b\t\n\v\f\r ]+")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2032 (delete-char (- (match-end 0) (match-beginning 0))))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2033 (shrink-window-if-larger-than-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2034 ;; move point to the log entry for the current version
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2035 (and (not (eq (vc-backend file) 'SCCS))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2036 (re-search-forward
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2037 ;; also match some context, for safety
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2038 (concat "----\nrevision " (vc-workfile-version file)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2039 "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2040 ;; set the display window so that
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2041 ;; the whole log entry is displayed
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2042 (let (start end lines)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2043 (beginning-of-line) (forward-line -1) (setq start (point))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2044 (if (not (re-search-forward "^----*\nrevision" nil t))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2045 (setq end (point-max))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2046 (beginning-of-line) (forward-line -1) (setq end (point)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2047 (setq lines (count-lines start end))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2048 (cond
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2049 ;; if the global information and this log entry fit
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2050 ;; into the window, display from the beginning
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2051 ((< (count-lines (point-min) end) (window-height))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2052 (goto-char (point-min))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2053 (recenter 0)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2054 (goto-char start))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2055 ;; if the whole entry fits into the window,
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2056 ;; display it centered
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2057 ((< (1+ lines) (window-height))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2058 (goto-char start)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2059 (recenter (1- (- (/ (window-height) 2) (/ lines 2)))))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2060 ;; otherwise (the entry is too large for the window),
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2061 ;; display from the start
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2062 (t
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2063 (goto-char start)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2064 (recenter 0)))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2065
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2066 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2067 (defun vc-revert-buffer ()
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2068 "Revert the current buffer's file back to the version it was based on.
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
2069 This asks for confirmation if the buffer contents are not identical
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2070 to that version. Note that for RCS and CVS, this function does not
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2071 automatically pick up newer changes found in the master file;
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2072 use C-u \\[vc-next-action] RET to do so."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2073 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2074 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2075 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2076 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2077 (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
2078 (obuf (current-buffer)) (changed (vc-diff nil t)))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2079 (if changed
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2080 (unwind-protect
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2081 (if (not (yes-or-no-p "Discard changes? "))
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2082 (error "Revert cancelled"))
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
2083 (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
2084 (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
2085 (make-frame-invisible (selected-frame))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2086 (delete-window))))
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2087 (set-buffer obuf)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2088 (vc-backend-revert file)
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2089 (vc-resynch-window file t t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2090
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2091 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2092 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2093 "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
2094 A prefix argument means do not revert the buffer afterwards."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2095 (interactive "P")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2096 (vc-ensure-vc-buffer)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2097 (cond
15336
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
2098 ((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
2099 (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
2100 ((vc-locking-user (buffer-file-name))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2101 (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
2102 ((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
2103 (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
2104 (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
2105 (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
2106 (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
2107 (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
2108 nil
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2109 (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
2110 (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
2111 (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
2112 ;; 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
2113 ;; 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
2114 ;; 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
2115 (while (not done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2116 (condition-case err
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2117 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2118 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2119 ;; 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
2120 ;; modifications in the buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2121 (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
2122 ;; 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
2123 (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
2124 (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
2125 ;; 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
2126 ;; 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
2127 ;; 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
2128 (error (set-buffer "*vc*")
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2129 (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
2130 (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
2131 (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
2132 ;; 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
2133 ;; 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
2134 ;; 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
2135 (set-window-configuration config))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2136 ;; 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
2137 (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
2138 ;; 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
2139 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2140 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2141 (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
2142 (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
2143 ;; 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
2144 (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
2145 (setq backup-inhibited t)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2146 (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
2147 (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
2148 (vc-clear-headers)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2149 (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
2150 (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
2151 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2152
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2153 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2154 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2155 "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
2156 (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
2157 ;; 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
2158 ;; 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
2159 ;; 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
2160 ;; 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
2161 ;; 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
2162 ;; 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
2163 (if (eq (vc-backend old) 'CVS)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2164 (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
2165 (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
2166 (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
2167 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2168 (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
2169 (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
2170 (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
2171 (error "New file already exists"))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2172 (let ((oldmaster (vc-name old)) newmaster)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2173 (if oldmaster
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2174 (progn
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2175 (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
2176 (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
2177 (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
2178 ;; 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
2179 (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
2180 (error "This is not a safe thing to do in the presence of symbolic links"))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2181 (setq newmaster
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2182 (let ((backend (vc-backend old))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2183 (newdir (or (file-name-directory new) ""))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2184 (newbase (file-name-nondirectory new)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2185 (catch 'found
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2186 (mapcar
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2187 (function
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2188 (lambda (s)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2189 (if (eq backend (cdr s))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2190 (let* ((newmaster (format (car s) newdir newbase))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2191 (newmasterdir (file-name-directory newmaster)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2192 (if (or (not newmasterdir)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2193 (file-directory-p newmasterdir))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2194 (throw 'found newmaster))))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2195 vc-master-templates)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2196 (error "New file lacks a version control directory"))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2197 ;; Handle the SCCS PROJECTDIR feature. It is odd that this
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2198 ;; is a special case, but a more elegant solution would require
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2199 ;; significant changes in other parts of VC.
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2200 (if (eq (vc-backend old) 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2201 (let ((project-dir (vc-sccs-project-dir)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2202 (if project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2203 (setq newmaster
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2204 (concat project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2205 (file-name-nondirectory newmaster))))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2206 (rename-file oldmaster newmaster)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2207 (if (or (not oldmaster) (file-exists-p old))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2208 (rename-file old new)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2209 ; ?? Renaming a file might change its contents due to keyword expansion.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2210 ; 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
2211 ; to some checked in version. However, testing for this is tricky....
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2212 (if oldbuf
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2213 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2214 (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
2215 (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
2216 (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
2217 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2218 (vc-mode-line new)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2219 (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
2220 ;; 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
2221 (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
2222 (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
2223 nil ;RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2224 nil ;CVS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2225 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2226 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2227
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2228 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2229 (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
2230 "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
2231 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
2232 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
2233 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
2234
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2235 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
2236
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2237 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
2238 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
2239 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
2240
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2241 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
2242 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
2243 default directory."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2244 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2245 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2246 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2247 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2248 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2249 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2250 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2251 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2252 (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
2253 (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
2254 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2255 (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
2256 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2257 (t
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2258 ;; `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
2259 ;; 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
2260 nil)))
14053
c8c5b83d9691 (vc-update-change-log): Use add-log-full-name and
Karl Heuer <kwzh@gnu.org>
parents: 14040
diff changeset
2261 (let ((odefault default-directory)
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2262 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2263 ;; Presumably not portable to non-Unixy systems, along with rcs2log:
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2264 (tempfile (make-temp-name
25488
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2265 (expand-file-name "vc"
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2266 (or small-temporary-file-directory
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2267 temporary-file-directory))))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2268 (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
2269 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2270 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2271 (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
2272 (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
2273 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2274 (find-file-other-window changelog)
3905
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2275 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2276 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2277 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2278 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2279 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2280 (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
2281 (message "Computing change log entries... %s"
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2282 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2283 (progn
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2284 (cd odefault)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2285 (if (eq 0 (apply 'call-process "rcs2log" nil
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2286 (list t tempfile) nil
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2287 "-c" changelog
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2288 "-u" (concat (vc-user-login-name)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2289 "\t" full-name
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2290 "\t" mailing-address)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2291 (mapcar
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2292 (function
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2293 (lambda (f)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2294 (file-relative-name
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2295 (if (file-name-absolute-p f)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2296 f
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2297 (concat odefault f)))))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2298 args)))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2299 "done"
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2300 (pop-to-buffer
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2301 (set-buffer (get-buffer-create "*vc*")))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2302 (erase-buffer)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2303 (insert-file tempfile)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2304 "failed"))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2305 (cd (file-name-directory changelog))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2306 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2307
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2308 ;; vc-annotate functionality (CVS only).
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2309 (defvar vc-annotate-mode-map nil
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2310 "Local keymap used for VC-Annotate mode.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2311
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2312 (defvar vc-annotate-mode-menu nil
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2313 "Local keymap used for VC-Annotate mode's menu bar menu.")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2314
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2315 ;; Syntax Table
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2316 (defvar vc-annotate-mode-syntax-table nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2317 "Syntax table used in VC-Annotate mode buffers.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2318
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2319 ;; Declare globally instead of additional parameter to
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2320 ;; temp-buffer-show-function (not possible to pass more than one
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2321 ;; parameter).
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2322 (defvar vc-annotate-ratio nil)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2323
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2324 (defun vc-annotate-mode-variables ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2325 (if (not vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2326 (progn (setq vc-annotate-mode-syntax-table (make-syntax-table))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2327 (set-syntax-table vc-annotate-mode-syntax-table)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2328 (if (not vc-annotate-mode-map)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2329 (setq vc-annotate-mode-map (make-sparse-keymap)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2330 (setq vc-annotate-mode-menu (make-sparse-keymap "Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2331 (define-key vc-annotate-mode-map [menu-bar]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2332 (make-sparse-keymap "VC-Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2333 (define-key vc-annotate-mode-map [menu-bar vc-annotate-mode]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2334 (cons "VC-Annotate" vc-annotate-mode-menu)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2335
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2336 (defun vc-annotate-mode ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2337 "Major mode for buffers displaying output from the CVS `annotate' command.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2338
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2339 You can use the mode-specific menu to alter the time-span of the used
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2340 colors. See variable `vc-annotate-menu-elements' for customizing the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2341 menu items."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2342 (interactive)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2343 (kill-all-local-variables) ; Recommended by RMS.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2344 (vc-annotate-mode-variables) ; This defines various variables.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2345 (use-local-map vc-annotate-mode-map) ; This provides the local keymap.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2346 (set-syntax-table vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2347 (setq major-mode 'vc-annotate-mode) ; This is how `describe-mode'
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2348 ; finds out what to describe.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2349 (setq mode-name "Annotate") ; This goes into the mode line.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2350 (run-hooks 'vc-annotate-mode-hook)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2351 (vc-annotate-add-menu))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2352
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2353 (defun vc-annotate-display-default (&optional event)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2354 "Use the default color spectrum for VC Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2355 (interactive)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2356 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2357 (vc-annotate-display (get-buffer (buffer-name)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2358 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2359
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2360 (defun vc-annotate-add-menu ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2361 "Adds the menu 'Annotate' to the menu bar in VC-Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2362 (define-key vc-annotate-mode-menu [default]
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2363 '("Default" . vc-annotate-display-default))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2364 (let ((menu-elements vc-annotate-menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2365 (while menu-elements
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2366 (let* ((element (car menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2367 (days (round (* element
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2368 (vc-annotate-car-last-cons vc-annotate-color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2369 0.7585))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2370 (setq menu-elements (cdr menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2371 (define-key vc-annotate-mode-menu
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2372 (vector days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2373 (cons (format "Span %d days"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2374 days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2375 `(lambda ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2376 ,(format "Use colors spanning %d days" days)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2377 (interactive)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2378 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2379 (vc-annotate-display
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2380 (get-buffer (buffer-name))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2381 (vc-annotate-time-span vc-annotate-color-map ,element))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2382 (message "Redisplaying annotation...done"))))))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2383
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2384 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2385 (defun vc-annotate (ratio)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2386 "Display the result of the CVS `annotate' command using colors.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2387 New lines are displayed in red, old in blue.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2388 A prefix argument specifies a factor for stretching the time scale.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2389
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2390 `vc-annotate-menu-elements' customizes the menu elements of the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2391 mode-specific menu. `vc-annotate-color-map' and
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2392 `vc-annotate-very-old-color' defines the mapping of time to
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2393 colors. `vc-annotate-background' specifies the background color."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2394 (interactive "p")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2395 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2396 (if (not (eq (vc-backend (buffer-file-name)) 'CVS))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2397 (error "Sorry, vc-annotate is only implemented for CVS"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2398 (message "Annotating...")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2399 (let ((temp-buffer-name (concat "*cvs annotate " (buffer-name) "*"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2400 (temp-buffer-show-function 'vc-annotate-display)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2401 (vc-annotate-ratio ratio))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2402 (with-output-to-temp-buffer temp-buffer-name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2403 (call-process "cvs" nil (get-buffer temp-buffer-name) nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2404 "annotate" (file-name-nondirectory (buffer-file-name)))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2405 (message "Annotating... done"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2406
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2407 (defun vc-annotate-car-last-cons (a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2408 "Return car of last cons in association list A-LIST."
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2409 (if (not (eq nil (cdr a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2410 (vc-annotate-car-last-cons (cdr a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2411 (car (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2412
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2413 (defun vc-annotate-time-span (a-list span &optional quantize)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2414 "Return an association list with factor SPAN applied to the time-span
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2415 of association list A-LIST. Optionaly quantize to the factor of
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2416 QUANTIZE."
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2417 ;; Apply span to each car of every cons
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2418 (if (not (eq nil a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2419 (append (list (cons (* (car (car a-list)) span)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2420 (cdr (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2421 (vc-annotate-time-span (nthcdr (cond (quantize) ; optional
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2422 (1)) ; Default to cdr
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2423 a-list) span quantize))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2424
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2425 (defun vc-annotate-compcar (threshold a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2426 "Test successive cons cells of association list A-LIST against
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2427 THRESHOLD. Return the first cons cell which car is not less than
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2428 THRESHOLD, nil otherwise"
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2429 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2430 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2431 (while (and tmp-cons (< (car tmp-cons) threshold))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2432 (setq tmp-cons (car (nthcdr i a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2433 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2434 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2435
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2436
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2437 (defun vc-annotate-display (buffer &optional color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2438 "Do the VC-Annotate display in BUFFER using COLOR-MAP."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2439
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2440 ;; Handle the case of the global variable vc-annotate-ratio being
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2441 ;; set. This variable is used to pass information from function
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2442 ;; vc-annotate since it is not possible to use another parameter
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2443 ;; (see temp-buffer-show-function).
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2444 (if (and (not color-map) vc-annotate-ratio)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2445 ;; This will only be true if called from vc-annotate with ratio
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2446 ;; being non-nil.
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2447 (setq color-map (vc-annotate-time-span vc-annotate-color-map
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2448 vc-annotate-ratio)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2449
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2450 ;; We need a list of months and their corresponding numbers.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2451 (let* ((local-month-numbers
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2452 '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2453 ("May" . 5) ("Jun" . 6) ("Jul" . 7) ("Aug" . 8)
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2454 ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) ("Dec" . 12))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2455 (set-buffer buffer)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2456 (display-buffer buffer)
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2457 (or (eq major-mode 'vc-annotate-mode) ; Turn on vc-annotate-mode if not done
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2458 (vc-annotate-mode))
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2459 ;; Delete old overlays
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2460 (mapcar
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2461 (lambda (overlay)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2462 (if (overlay-get overlay 'vc-annotation)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2463 (delete-overlay overlay)))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2464 (overlays-in (point-min) (point-max)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2465 (goto-char (point-min)) ; Position at the top of the buffer.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2466 (while (re-search-forward
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2467 "^\\S-+\\s-+\\S-+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2468 ;; "^[0-9]+\\(\.[0-9]+\\)*\\s-+(\\sw+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2469 nil t)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2470
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2471 (let* (;; Unfortunately, order is important. match-string will
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2472 ;; be corrupted by extent functions in XEmacs. Access
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2473 ;; string-matches first.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2474 (day (string-to-number (match-string 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2475 (month (cdr (assoc (match-string 2) local-month-numbers)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2476 (year-tmp (string-to-number (match-string 3)))
25553
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2477 ;; Years 0..69 are 2000..2069.
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2478 ;; Years 70..99 are 1970..1999.
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2479 (year (+ (cond ((> 70 year-tmp) 2000)
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2480 ((> 100 year-tmp) 1900)
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2481 (t 0))
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2482 year-tmp))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2483 (high (- (car (current-time))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2484 (car (encode-time 0 0 0 day month year))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2485 (color (cond ((vc-annotate-compcar high (cond (color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2486 (vc-annotate-color-map))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2487 ((cons nil vc-annotate-very-old-color))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2488 ;; substring from index 1 to remove any leading `#' in the name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2489 (face-name (concat "vc-annotate-face-" (substring (cdr color) 1)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2490 ;; Make the face if not done.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2491 (face (cond ((intern-soft face-name))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2492 ((let ((tmp-face (make-face (intern face-name))))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2493 (set-face-foreground tmp-face (cdr color))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2494 (if vc-annotate-background
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2495 (set-face-background tmp-face vc-annotate-background))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2496 tmp-face)))) ; Return the face
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2497 (point (point))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2498 overlay)
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2499
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2500 (forward-line 1)
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2501 (setq overlay (make-overlay point (point)))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2502 (overlay-put overlay 'face face)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2503 (overlay-put overlay 'vc-annotation t)))))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2504
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2505
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2506 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2507
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2508 (defun vc-backend-admin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2509 ;; Register a file into the version-control system
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2510 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2511 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2512 ;; it deletes the workfile.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2513 (vc-file-clearprops file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2514 (or vc-default-back-end
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2515 (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
2516 (message "Registering %s..." file)
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2517 (let* ((switches
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2518 (if (stringp vc-register-switches)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2519 (list vc-register-switches)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2520 vc-register-switches))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2521 (project-dir)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2522 (backend
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2523 (cond
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2524 ((file-exists-p (vc-backend-subdirectory-name)) vc-default-back-end)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2525 ((file-exists-p "RCS") 'RCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2526 ((file-exists-p "CVS") 'CVS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2527 ((file-exists-p "SCCS") 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2528 ((setq project-dir (vc-sccs-project-dir)) 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2529 (t vc-default-back-end))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2530 (cond ((eq backend 'SCCS)
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2531 (let ((vc-name
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2532 (if project-dir (concat project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2533 "s." (file-name-nondirectory file))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2534 (format
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2535 (car (rassq 'SCCS vc-master-templates))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2536 (or (file-name-directory file) "")
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2537 (file-name-nondirectory file)))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2538 (apply 'vc-do-command nil 0 "admin" nil nil ;; SCCS
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2539 (and rev (concat "-r" rev))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2540 "-fb"
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2541 (concat "-i" file)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2542 (and comment (concat "-y" comment))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2543 vc-name
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2544 switches))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2545 (delete-file file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2546 (if vc-keep-workfiles
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2547 (vc-do-command nil 0 "get" file 'MASTER)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2548 ((eq backend 'RCS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2549 (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
2550 ;; if available, use the secure registering option
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2551 (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
2552 (concat (if vc-keep-workfiles "-u" "-r") rev)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2553 (and comment (concat "-t-" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2554 switches))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2555 ((eq backend 'CVS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2556 (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
2557 "add"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2558 (and comment (string-match "[^\t\n ]" comment)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2559 (concat "-m" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2560 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2561 )))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2562 (message "Registering %s...done" file)
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
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2565 (defun vc-backend-checkout (file &optional writable rev workfile)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2566 ;; 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
2567 (let ((filename (or workfile file))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2568 (file-buffer (get-file-buffer file))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2569 switches)
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2570 (message "Checking out %s..." filename)
10046
4c632e091d88 (vc-backend-checkout): Finish last change.
Roland McGrath <roland@gnu.org>
parents: 10045
diff changeset
2571 (save-excursion
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2572 ;; 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
2573 (if file-buffer (set-buffer file-buffer))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2574 (setq switches (if (stringp vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2575 (list vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2576 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
2577 ;; 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
2578 ;; 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
2579 ;; 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
2580 (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
2581 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2582 ;; 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
2583 ;; 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
2584 (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
2585 (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
2586 (progn ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2587 (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
2588 (if workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2589 ;; 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
2590 ;; 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
2591 ;; 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
2592 ;; ala RCS.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2593 (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
2594 (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
2595 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2596 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2597 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2598 (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
2599 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
2600 ;; 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
2601 ;; 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
2602 ;; 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
2603 ;; 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
2604 (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
2605 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
2606 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
2607 (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
2608 (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
2609 "" ; 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
2610 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2611 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2612 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2613 (and rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2614 (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
2615 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2616 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2617 (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
2618 (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2619 (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
2620 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2621 (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
2622 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2623 (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
2624 (if workfile ;; RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2625 ;; 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
2626 ;; 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
2627 (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
2628 (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
2629 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2630 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2631 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2632 (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
2633 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
2634 ;; 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
2635 ;; if-statement.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2636 (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
2637 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
2638 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
2639 (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
2640 (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
2641 "" ; 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
2642 filename
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2643 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2644 (concat "-p" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2645 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2646 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2647 (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
2648 (let (new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2649 ;; 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
2650 ;; 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
2651 (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
2652 (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
2653 ;; 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
2654 (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
2655 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
2656 ;; 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
2657 ;; the writable workfile.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2658 (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
2659 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2660 (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
2661 ;; 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
2662 ;; 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
2663 (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
2664 (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
2665 nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2666 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2667 ;; 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
2668 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2669 (set-buffer "*vc*")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2670 (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
2671 (setq new-version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2672 (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
2673 (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
2674 (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
2675 ;; 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
2676 (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
2677 (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
2678 (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
2679 (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
2680 (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
2681 new-version))))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2682 (if workfile ;; CVS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2683 ;; 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
2684 (let ((failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2685 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2686 (progn
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2687 (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
2688 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
2689 "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
2690 "" ; 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
2691 workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2692 (concat "-r" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2693 "-p"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2694 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2695 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2696 (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
2697 ;; 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
2698 ;; 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
2699 (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
2700 (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
2701 ;; 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
2702 (if rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2703 (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
2704 (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
2705 "update"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2706 (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
2707 (concat "-r" rev))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2708 switches)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2709 ;; If no revision was specified, call "cvs edit" to make
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2710 ;; the file writeable.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2711 (and writable (eq (vc-checkout-model file) 'manual)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2712 (vc-do-command nil 0 "cvs" file 'WORKFILE "edit")))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2713 (if rev (vc-file-setprop file 'vc-workfile-version nil))))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2714 (cond
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2715 ((not workfile)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2716 (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
2717 (if writable
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2718 (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
2719 (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
2720 '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
2721 (message "Checking out %s...done" filename))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2722
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2723 (defun vc-backend-logentry-check (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2724 (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
2725 (if (>= (buffer-size) 512) ;; SCCS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2726 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2727 (goto-char 512)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2728 (error
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2729 "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
2730 nil ;; RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2731 nil) ;; CVS
904
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
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2734 (defun vc-backend-checkin (file rev comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2735 ;; Register changes to FILE as level REV with explanatory COMMENT.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2736 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2737 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2738 ;; it deletes the workfile.
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2739 ;; 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
2740 ;; 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
2741 ;; accordingly.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2742 (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
2743 ;; "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
2744 ;; 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
2745 (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
2746 (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
2747 (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
2748 ;; 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
2749 (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
2750 (let ((switches
13890
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2751 (if (stringp vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2752 (list vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2753 vc-checkin-switches)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2754 ;; 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
2755 ;; 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
2756 ;; re-computed before the next try.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2757 (vc-file-clear-masterprops file)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2758 (vc-backend-dispatch file
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2759 ;; SCCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2760 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2761 (apply 'vc-do-command nil 0 "delta" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2762 (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2763 (concat "-y" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2764 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2765 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2766 (vc-file-setprop file 'vc-workfile-version nil)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2767 (if vc-keep-workfiles
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2768 (vc-do-command nil 0 "get" file 'MASTER))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2769 )
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2770 ;; RCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2771 (let ((old-version (vc-workfile-version file)) new-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2772 (apply 'vc-do-command nil 0 "ci" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2773 ;; if available, use the secure check-in option
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2774 (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
2775 (concat (if vc-keep-workfiles "-u" "-r") rev)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2776 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2777 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2778 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2779 (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
2780
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2781 ;; determine the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2782 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2783 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2784 (if (or (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2785 "new revision: \\([0-9.]+\\);" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2786 (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2787 "reverting to previous revision \\([0-9.]+\\)" nil t))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2788 (progn (setq new-version (buffer-substring (match-beginning 1)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2789 (match-end 1)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2790 (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
2791
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2792 ;; 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
2793 ;; branch accordingly
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2794 (cond
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2795 ((and old-version new-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2796 (not (string= (vc-branch-part old-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2797 (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2798 (vc-do-command nil 0 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2799 (if (vc-trunk-p new-version) "-b"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2800 (concat "-b" (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2801 ;; 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
2802 ;; to remove a remaining lock.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2803 (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
2804 ;; exit status of 1 is also accepted.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2805 ;; It means that the lock was removed before.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2806 (vc-do-command nil 1 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2807 (concat "-u" old-version))))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2808 ;; CVS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2809 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2810 ;; explicit check-in to the trunk requires a
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2811 ;; double check-in (first unexplicit) (CVS-1.3)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2812 (condition-case nil
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2813 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2814 (if (and rev (vc-trunk-p rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2815 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2816 "ci" "-m" "intermediate"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2817 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2818 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2819 "ci" (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2820 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2821 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2822 (error (if (eq (vc-cvs-status file) 'needs-merge)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2823 ;; 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
2824 (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
2825 (error "Check-in failed"))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2826 ;; determine and store the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2827 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2828 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2829 (if (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2830 "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2831 (vc-file-setprop file 'vc-workfile-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2832 (buffer-substring (match-beginning 2)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2833 (match-end 2)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2834 (vc-file-setprop file 'vc-workfile-version nil))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2835 ;; 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
2836 (if rev
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2837 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2838 ;; Forget the checkout model, because we might have assumed
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2839 ;; a wrong one when we found the file. After commit, we can
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2840 ;; tell it from the permissions of the file
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2841 ;; (see vc-checkout-model).
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2842 (vc-file-setprop file 'vc-checkout-model nil)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2843 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2844 (vc-file-setprop file 'vc-checkout-time
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2845 (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
2846 (message "Checking in %s...done" file))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2847
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2848 (defun vc-backend-revert (file)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2849 ;; Revert file to the version it was based on.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2850 (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
2851 (vc-file-clear-masterprops file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2852 (vc-backend-dispatch
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2853 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2854 ;; SCCS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2855 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2856 (vc-do-command nil 0 "unget" file 'MASTER nil)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2857 (vc-do-command nil 0 "get" file 'MASTER nil)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2858 ;; Checking out explicit versions is not supported under SCCS, yet.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2859 ;; We always "revert" to the latest version; therefore
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2860 ;; vc-workfile-version is cleared here so that it gets recomputed.
21559
275fad04745d (vc-backend-revert): Fix missing argument for
Andreas Schwab <schwab@suse.de>
parents: 21517
diff changeset
2861 (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
2862 ;; RCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2863 (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
2864 "-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
2865 ;; CVS
24595
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2866 (progn
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2867 ;; Check out via standard output (caused by the final argument
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2868 ;; FILE below), so that no sticky tag is set.
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2869 (vc-backend-checkout file nil (vc-workfile-version file) file)
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2870 ;; If "cvs edit" was used to make the file writeable,
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2871 ;; call "cvs unedit" now to undo that.
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2872 (if (eq (vc-checkout-model file) 'manual)
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2873 (vc-do-command nil 0 "cvs" file 'WORKFILE "unedit"))))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2874 (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
2875 (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
2876 (message "Reverting %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2877 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2878
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2879 (defun vc-backend-steal (file &optional rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2880 ;; 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
2881 (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
2882 (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
2883 (progn ;SCCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2884 (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
2885 (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
2886 )
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2887 (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
2888 "-M" (concat "-u" rev) (concat "-l" rev))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2889 (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
2890 )
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2891 (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
2892 (message "Stealing lock on %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2893 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2894
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2895 (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
2896 ;; Undo the latest checkin.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2897 (message "Removing last change from %s..." file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2898 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2899 (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
2900 (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
2901 nil ;; this is never reached under CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2902 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2903 (message "Removing last change from %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2904 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2905
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2906 (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
2907 ;; 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
2908 (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
2909 file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2910 (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
2911 (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
2912 (vc-do-command nil 0 "cvs" file 'WORKFILE "log")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2913
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2914 (defun vc-backend-assign-name (file name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2915 ;; Assign to a FILE's latest version a given NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2916 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2917 (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
2918 (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
2919 (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
2920 )
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2921 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2922
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2923 (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
2924 ;; 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
2925 ;; Get only a brief comparison report if CMP, a difference report otherwise.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2926 (let ((backend (vc-backend file)) options status
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2927 (diff-switches-list (if (listp diff-switches)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2928 diff-switches
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2929 (list diff-switches))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2930 (cond
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2931 ((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
2932 (setq oldvers (vc-lookup-triple file oldvers))
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2933 (setq newvers (vc-lookup-triple file newvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2934 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2935 (and oldvers (concat "-r" oldvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2936 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2937 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2938 (apply 'vc-do-command "*vc-diff*" 1 "vcdiff" file 'MASTER options))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2939 ((eq backend 'RCS)
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2940 (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
2941 ;; If we know that --brief is not supported, don't try it.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2942 (setq cmp (and cmp (not (eq vc-rcsdiff-knows-brief 'no))))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2943 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2944 (concat "-r" oldvers)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2945 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2946 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2947 (setq status (apply 'vc-do-command "*vc-diff*" 2
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2948 "rcsdiff" file 'WORKFILE options))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2949 ;; If --brief didn't work, do a double-take and remember it
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2950 ;; for the future.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2951 (if (eq status 2)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2952 (prog1
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2953 (apply 'vc-do-command "*vc-diff*" 1 "rcsdiff" file 'WORKFILE
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2954 (if cmp (cdr options) options))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2955 (if cmp (setq vc-rcsdiff-knows-brief 'no)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2956 ;; If --brief DID work, remember that, too.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2957 (and cmp (not vc-rcsdiff-knows-brief)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2958 (setq vc-rcsdiff-knows-brief 'yes))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2959 status))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2960 ;; 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
2961 ((eq backend 'CVS)
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2962 (if (string= (vc-workfile-version file) "0")
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2963 ;; 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
2964 (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
2965 (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
2966 (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
2967 ;; 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
2968 ;; 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
2969 (apply 'vc-do-command
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2970 "*vc-diff*" 1 "diff" file 'WORKFILE
23980
9caafbfd8130 (vc-backend-diff): Use `diff-switches-list' throughout.
Richard M. Stallman <rms@gnu.org>
parents: 23832
diff changeset
2971 (append diff-switches-list '("/dev/null")))))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2972 ;; 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
2973 (apply 'vc-do-command
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2974 "*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
2975 (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
2976 (and newvers (concat "-r" newvers))
23980
9caafbfd8130 (vc-backend-diff): Use `diff-switches-list' throughout.
Richard M. Stallman <rms@gnu.org>
parents: 23832
diff changeset
2977 diff-switches-list))))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2978
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2979 (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
2980 ;; 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
2981 (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
2982 (prog1
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2983 (vc-backend-dispatch
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2984 file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2985 (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
2986 (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
2987 (save-excursion ; CVS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2988 (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
2989 (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
2990 (vc-file-setprop file 'vc-locking-user nil)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2991 (vc-file-setprop file 'vc-checkout-time nil)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2992 (vc-do-command nil 0 "cvs" file 'WORKFILE "update")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2993 ;; Analyze the merge result reported by CVS, and set
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2994 ;; file properties accordingly.
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2995 (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
2996 (goto-char (point-min))
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2997 ;; get new workfile version
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2998 (if (re-search-forward (concat "^Merging differences between "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2999 "[01234567890.]* and "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3000 "\\([01234567890.]*\\) into")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3001 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3002 (vc-file-setprop file 'vc-workfile-version (match-string 1)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3003 ;; get file status
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3004 (if (re-search-forward
25406
9ade71ed0686 (vc-backend-merge-news): Fix regexp to also match P marker
Andreas Schwab <schwab@suse.de>
parents: 24903
diff changeset
3005 (concat "^\\(\\([CMUP]\\) \\)?"
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3006 (regexp-quote (file-name-nondirectory file))
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3007 "\\( already contains the differences between \\)?")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3008 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3009 (cond
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3010 ;; Merge successful, we are in sync with repository now
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3011 ((or (string= (match-string 2) "U")
23592
43a9efaf1ee2 (vc-backend-merge-news): Check for "P" output.
Dave Love <fx@gnu.org>
parents: 23235
diff changeset
3012 (string= (match-string 2) "P")
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3013 ;; Special case: file contents in sync with
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3014 ;; repository anyhow:
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3015 (match-string 3))
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3016 (vc-file-setprop file 'vc-locking-user 'none)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3017 (vc-file-setprop file 'vc-checkout-time
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3018 (nth 5 (file-attributes file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3019 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3020 ;; Merge successful, but our own changes are still in the file
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3021 ((string= (match-string 2) "M")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3022 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3023 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3024 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3025 ;; Conflicts detected!
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3026 ((string= (match-string 2) "C")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3027 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3028 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3029 1) ;; signal the error to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3030 )
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3031 (pop-to-buffer "*vc*")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3032 (error "Couldn't analyze cvs update result"))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
3033 (message "Merging changes into %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3034
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3035 (defun vc-backend-merge (file first-version &optional second-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3036 ;; Merge the changes between FIRST-VERSION and SECOND-VERSION into
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3037 ;; the current working copy of FILE. It is assumed that FILE is
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3038 ;; locked and writable (vc-merge ensures this).
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3039 (vc-backend-dispatch file
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3040 ;; SCCS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3041 (error "Sorry, merging is not implemented for SCCS")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3042 ;; RCS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3043 (vc-do-command nil 1 "rcsmerge" file 'MASTER
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3044 "-kk" ;; ignore keyword conflicts
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3045 (concat "-r" first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3046 (if second-version (concat "-r" second-version)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3047 ;; CVS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3048 (progn
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3049 (vc-do-command nil 0 "cvs" file 'WORKFILE
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3050 "update" "-kk"
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3051 (concat "-j" first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3052 (concat "-j" second-version))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3053 (save-excursion
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3054 (set-buffer (get-buffer "*vc*"))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3055 (goto-char (point-min))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3056 (if (re-search-forward "conflicts during merge" nil t)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3057 1 ;; signal error
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3058 0 ;; signal success
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3059 )))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3060
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3061 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3062 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3063 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3064 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3065 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3066 (vc-backend-dispatch buffer-file-name
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3067 (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" nil t) ;; SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3068 (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
3069 'RCS ;; CVS works like RCS in this regard.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3070 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3071 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3072
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3073 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3074
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3075 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3076
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
3077 (defun vc-log-mode (&optional file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3078 "Minor mode for driving version-control tools.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3079 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
3080 \\[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
3081 \\[vc-register] register current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3082 \\[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
3083 \\[vc-insert-headers] insert version-control headers in current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3084 \\[vc-print-log] display change history of current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3085 \\[vc-revert-buffer] revert buffer to latest version
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3086 \\[vc-cancel-version] undo latest checkin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3087 \\[vc-diff] show diffs between file versions
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
3088 \\[vc-version-other-window] visit old version in another window
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3089 \\[vc-directory] show all files locked by any user in or below .
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3090 \\[vc-annotate] colorful display of the cvs annotate command
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3091 \\[vc-update-change-log] add change log entry from recent checkins
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3092
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3093 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
3094 additional bindings will be in effect.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3095
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3096 \\[vc-finish-logentry] proceed with check in, ending log message entry
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3097
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3098 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
3099 saved comments. These can be recalled as follows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3100
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3101 \\[vc-next-comment] replace region with next message in comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3102 \\[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
3103 \\[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
3104 \\[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
3105
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3106 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
3107 the value of vc-log-mode-hook.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3108
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3109 Global user options:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3110 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
3111 comment upon first checkin of the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3112
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3113 vc-keep-workfiles Non-nil value prevents workfiles from being
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3114 deleted when changes are checked in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3115
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3116 vc-suppress-confirm Suppresses some confirmation prompts,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3117 notably for reversions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3118
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
3119 vc-header-alist Which keywords to insert when adding headers
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3120 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
3121 '(\"\%\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
3122 RCS and CVS.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3123
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3124 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
3125 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
3126 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
3127 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
3128 this by setting this variable to nil, or change
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3129 the header template by changing it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3130
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3131 vc-command-messages if non-nil, display run messages from the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3132 actual version-control utilities (this is
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3133 intended primarily for people hacking vc
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3134 itself).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3135 "
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3136 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3137 (set-syntax-table text-mode-syntax-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3138 (use-local-map vc-log-entry-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3139 (setq local-abbrev-table text-mode-abbrev-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3140 (setq major-mode 'vc-log-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3141 (setq mode-name "VC-Log")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3142 (make-local-variable 'vc-log-file)
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
3143 (setq vc-log-file file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3144 (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
3145 (make-local-variable 'vc-comment-ring-index)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3146 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3147 (setq buffer-file-name nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3148 (run-hooks 'text-mode-hook 'vc-log-mode-hook)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3149 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3150
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3151 ;; Initialization code, to be done just once at load-time
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3152 (if vc-log-entry-mode
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3153 nil
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3154 (setq vc-log-entry-mode (make-sparse-keymap))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3155 (define-key vc-log-entry-mode "\M-n" 'vc-next-comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3156 (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
3157 (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
3158 (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
3159 (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
3160 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3161
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3162 ;;; These things should probably be generally available
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3163
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3164 (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
3165 "Walk recursively through DIRNAME.
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
3166 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
3167 (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
3168 (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
3169
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3170 (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
3171 (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
3172 (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
3173 (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
3174 (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
3175 (mapcar
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3176 (function
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3177 (lambda (f) (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3178 (string-equal f ".")
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3179 (string-equal f "..")
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
3180 (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
3181 (let ((dirf (concat dir f)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3182 (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3183 (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
3184 (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
3185 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3186
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3187 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3188
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3189 ;;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3190 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3191 ;;; 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
3192 ;;; (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
3193 ;;; 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
3194 ;;; and RCS keyword lookup. AS, 1995/03/24)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3195 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3196 ;;; 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
3197 ;;; 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
3198 ;;; 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
3199 ;;; 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
3200 ;;; of the master during it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3201 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3202 ;;; 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
3203 ;;; to avoid them as much as possible.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3204 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3205 ;;; ANALYSIS:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3206 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3207 ;;; The performance problem, it turns out, simplifies in practice to the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3208 ;;; 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
3209 ;;; 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
3210 ;;; 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
3211 ;;; master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3212 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3213 ;;; 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
3214 ;;; 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
3215 ;;; 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
3216 ;;;
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
3217 ;;; 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
3218 ;;; 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
3219 ;;; 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
3220 ;;; off to do something else, simply forgets about it?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3221 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3222 ;;; 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
3223 ;;; 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
3224 ;;; unlocked state and its current owner from its permissions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3225 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3226 ;;; 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
3227 ;;; permissions; also if developers are munging the workfile in several
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3228 ;;; directories, with symlinks to a master (in this latter case, the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3229 ;;; permissions shortcut will fail to detect a lock asserted from another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3230 ;;; directory).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3231 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3232 ;;; 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
3233 ;;; 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
3234 ;;; vc-next-action.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3235 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3236 ;;; 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
3237 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3238 ;;; A. Unregistered. There is a workfile, there is no master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3239 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3240 ;;; B. Registered and not locked by anyone.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3241 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3242 ;;; C. Locked by calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3243 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3244 ;;; D. Locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3245 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3246 ;;; E. Locked by someone other than the calling user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3247 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3248 ;;; 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
3249 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3250 ;;; VC's idea of state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3251 ;;; |
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3252 ;;; V Actual state RCS action SCCS action Effect
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3253 ;;; A B C D E
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3254 ;;; 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
3255 ;;; B 5 . 6 7 8 co -l get -e checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3256 ;;; C 9 10 . 11 12 co -u unget; get revert
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3257 ;;; 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
3258 ;;; 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
3259 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3260 ;;; 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
3261 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3262 ;;; 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
3263 ;;; which VC operations are being attempted simultaneously by two or more
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3264 ;;; Emacsen running under the same username.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3265 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3266 ;;; The vc-next-action code has the following windows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3267 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3268 ;;; Window P:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3269 ;;; 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
3270 ;;; 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
3271 ;;; never close if the initial-comment feature is on.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3272 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3273 ;;; Window Q:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3274 ;;; 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
3275 ;;; following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3276 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3277 ;;; Window R:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3278 ;;; 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
3279 ;;; checkin (apparent state D). This window may never close.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3280 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3281 ;;; Window S:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3282 ;;; Between the unlock and the immediately following checkout during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3283 ;;; revert operation (apparent state C). Included in window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3284 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3285 ;;; Window T:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3286 ;;; Between vc-locking-user and the following checkout (apparent state B).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3287 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3288 ;;; Window U:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3289 ;;; Between vc-locking-user and the following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3290 ;;; Includes windows Q and S.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3291 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3292 ;;; Window V:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3293 ;;; Between vc-locking-user and the following checkin (apparent state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3294 ;;; 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
3295 ;;; checkin message. Includes window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3296 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3297 ;;; Window W:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3298 ;;; 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
3299 ;;; 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
3300 ;;; the steal-lock message. Includes window X.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3301 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3302 ;;; Window X:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3303 ;;; Between the unlock and the immediately following re-lock during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3304 ;;; steal-lock operation (apparent state E). This window may never cloce
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3305 ;;; if the user fails to complete the steal-lock message.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3306 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3307 ;;; Errors:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3308 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3309 ;;; Apparent state A ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3310 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3311 ;;; 1. File looked unregistered but is actually registered and not locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3312 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3313 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3314 ;;; caller's admin happening before their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3315 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3316 ;;; 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
3317 ;;; "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
3318 ;;; 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
3319 ;;; SCCS: admin will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3320 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3321 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3322 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3323 ;;; 2. File looked unregistered but is actually locked by caller, unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3324 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3325 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3326 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3327 ;;; 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
3328 ;;; 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
3329 ;;; ci -i option, failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3330 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3331 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3332 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3333 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3334 ;;; 3. File looked unregistered but is actually locked by caller, changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3335 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3336 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3337 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3338 ;;; 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
3339 ;;; 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
3340 ;;; 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
3341 ;;; failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3342 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3343 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3344 ;;; 4. File looked unregistered but is locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3345 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3346 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3347 ;;; caller's admin happening *after* their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3348 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3349 ;;; 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
3350 ;;; "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
3351 ;;; 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
3352 ;;; "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3353 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3354 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3355 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3356 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3357 ;;; Apparent state B ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3358 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3359 ;;; 5. File looked registered and not locked, but is actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3360 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3361 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3362 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3363 ;;; RCS: will fail with "RCS/<file>: No such file or directory"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3364 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3365 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3366 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3367 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3368 ;;; 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
3369 ;;; calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3370 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3371 ;;; Potential cause: self-race during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3372 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3373 ;;; 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
3374 ;;; with "co error: writable foo exists; checkout aborted". In any other
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3375 ;;; directory, checkout will succeed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3376 ;;; SCCS: will fail with ge17.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3377 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3378 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3379 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3380 ;;; 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
3381 ;;; calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3382 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3383 ;;; As case 6.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3384 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3385 ;;; 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
3386 ;;; user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3387 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3388 ;;; Potential cause: someone else checks it out during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3389 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3390 ;;; RCS: co error: revision 1.3 already locked by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3391 ;;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3392 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3393 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3394 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3395 ;;; Apparent state C ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3396 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3397 ;;; 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
3398 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3399 ;;; As case 5.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3400 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3401 ;;; 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
3402 ;;; locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3403 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3404 ;;; 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
3405 ;;; 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
3406 ;;; of another user's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3407 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3408 ;;; RCS: succeeds, refreshing the file from the identical version in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3409 ;;; the master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3410 ;;; SCCS: fails with error ut4 (p file nonexistent).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3411 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3412 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3413 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3414 ;;; 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
3415 ;;; changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3416 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3417 ;;; 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
3418 ;;; during window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3419 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3420 ;;; The revert will succeed, removing whatever changes came with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3421 ;;; the touch. It is theoretically possible that work could be lost.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3422 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3423 ;;; 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
3424 ;;; it's actually locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3425 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3426 ;;; Potential cause: a steal-lock in window V.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3427 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3428 ;;; 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
3429 ;;; SCCS: fails with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3430 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3431 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3432 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3433 ;;; Apparent state D ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3434 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3435 ;;; 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
3436 ;;; actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3437 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3438 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3439 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3440 ;;; 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
3441 ;;; 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
3442 ;;; option, failing with message "no such file or directory".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3443 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3444 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3445 ;;; 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
3446 ;;; 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
3447 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3448 ;;; 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
3449 ;;; actually unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3450 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3451 ;;; Potential cause: self-race in window V, or the checkin happening
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3452 ;;; 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
3453 ;;; someone else's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3454 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3455 ;;; RCS: ci will fail with "no lock set by <user>".
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3456 ;;; SCCS: delta will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3457 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3458 ;;; 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
3459 ;;; actually locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3460 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3461 ;;; Potential cause: another self-race --- a whole checkin/checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3462 ;;; 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
3463 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3464 ;;; 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
3465 ;;; 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
3466 ;;; the file unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3467 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3468 ;;; It is theoretically possible that work could be lost under RCS.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3469 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3470 ;;; 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
3471 ;;; actually locked by a different user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3472 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3473 ;;; RCS: ci error: no lock set by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3474 ;;; SCCS: unget will fail with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3475 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3476 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3477 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3478 ;;; Apparent state E ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3479 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3480 ;;; 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
3481 ;;; unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3482 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3483 ;;; As case 13.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3484 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3485 ;;; 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
3486 ;;; unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3487 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3488 ;;; Potential cause: someone released a lock during window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3489 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3490 ;;; RCS: The calling user will get the lock on the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3491 ;;; SCCS: unget -n will fail with cm4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3492 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3493 ;;; Either of these consequences will be OK.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3494 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3495 ;;; 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
3496 ;;; locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3497 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3498 ;;; Potential cause: the other user relinquishing a lock followed by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3499 ;;; a self-race, both in window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3500 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3501 ;;; 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
3502 ;;; the sequence a no-op.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3503 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3504 ;;; 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
3505 ;;; locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3506 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3507 ;;; As case 19.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3508 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3509 ;;; PROBLEM CASES:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3510 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3511 ;;; In order of decreasing severity:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3512 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3513 ;;; 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
3514 ;;; They would require a self-race for this to happen.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3515 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3516 ;;; Case 13 in RCS loses information about previous deltas, retaining
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3517 ;;; only the information in the current workfile. This can only happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3518 ;;; if the master file gets nuked in window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3519 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3520 ;;; 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
3521 ;;; 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
3522 ;;; window P or R respectively.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3523 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3524 ;;; 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
3525 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3526 ;;; 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
3527 ;;; 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
3528 ;;; a race condition has occurred.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3529 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3530 ;;; 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
3531 ;;; trigger command errors which the user will see.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3532 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3533 ;;; Thus, there is no explicit recovery code.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3534
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3535 ;;; vc.el ends here