annotate lisp/vc.el @ 108953:a3dbf4fcc917

Fix ChangeLog attribution. This is on the assumption that the change from http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00196.html is actually based on the change from http://lists.gnu.org/archive/html/emacs-devel/2009-02/msg00606.html http://debbugs.gnu.org/cgi/bugreport.cgi?bug=2404 The fact that this wasn't pointed out at the time explains the recent confusion with the latest emacs23 -> trunk merge.
author Glenn Morris <rgm@gnu.org>
date Wed, 09 Jun 2010 22:17:21 -0700
parents 6e9243fe4510
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33564
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1 ;;; vc.el --- drive a version-control system from within Emacs
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106472
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
87893
160807cd63a7 (vc-diff-sentinel): Do not write a footer if there were differences.
Glenn Morris <rgm@gnu.org>
parents: 87879
diff changeset
5 ;; Free Software Foundation, Inc.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
7 ;; Author: FSF (see below for full credits)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
8 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 39000
diff changeset
9 ;; Keywords: tools
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
16 ;; (at your option) any later version.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; 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
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
26 ;;; Credits:
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
27
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
28 ;; VC was initially designed and implemented by Eric S. Raymond
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
29 ;; <esr@thyrsus.com> in 1992. Over the years, many other people have
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
30 ;; contributed substantial amounts of work to VC. These include:
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
31 ;;
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
32 ;; Per Cederqvist <ceder@lysator.liu.se>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
33 ;; Paul Eggert <eggert@twinsun.com>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
34 ;; Sebastian Kremer <sk@thp.uni-koeln.de>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
35 ;; Martin Lorentzson <martinl@gnu.org>
32910
3a5e5c74d3bb fix my email
Dave Love <fx@gnu.org>
parents: 32888
diff changeset
36 ;; Dave Love <fx@gnu.org>
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
37 ;; Stefan Monnier <monnier@cs.yale.edu>
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
38 ;; Thien-Thi Nguyen <ttn@gnu.org>
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
39 ;; Dan Nicolaescu <dann@ics.uci.edu>
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
40 ;; J.D. Smith <jdsmith@alum.mit.edu>
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
41 ;; Andre Spiegel <spiegel@gnu.org>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
42 ;; Richard Stallman <rms@gnu.org>
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
43 ;;
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
44 ;; In July 2007 ESR returned and redesigned the mode to cope better
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
45 ;; with modern version-control systems that do commits by fileset
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
46 ;; rather than per individual file.
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
47 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
48 ;; If you maintain a client of the mode or customize it in your .emacs,
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
49 ;; note that some backend functions which formerly took single file arguments
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
50 ;; now take a list of files. These include: register, checkin, print-log,
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
51 ;; rollback, and diff.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
52
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
55 ;; 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
56 ;;
78875
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
57 ;; Supported version-control systems presently include CVS, RCS, GNU
94806
eedf64b515f0 Remove wash-log from the VC backend API.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94805
diff changeset
58 ;; Arch, Subversion, Bzr, Git, Mercurial, Monotone and SCCS
78875
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
59 ;; (or its free replacement, CSSC).
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
60 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
61 ;; If your site uses the ChangeLog convention supported by Emacs, the
86908
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
62 ;; function `log-edit-comment-to-change-log' could prove a useful checkin hook,
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
63 ;; although you might prefer to use C-c C-a (i.e. `log-edit-insert-changelog')
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
64 ;; from the commit buffer instead or to set `log-edit-setup-invert'.
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
65 ;;
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
66 ;; When using SCCS, RCS, CVS: be careful not to do repo surgery, or
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
67 ;; operations like registrations and deletions and renames, outside VC
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
68 ;; while VC is running. The support for these systems was designed
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
69 ;; when disks were much slower, and the code maintains a lot of
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
70 ;; internal state in order to reduce expensive operations to a
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
71 ;; minimum. Thus, if you mess with the repo while VC's back is turned,
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
72 ;; VC may get seriously confused.
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
73 ;;
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
74 ;; When using Subversion or a later system, anything you do outside VC
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
75 ;; *through the VCS tools* should safely interlock with VC
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
76 ;; operations. Under these VC does little state caching, because local
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
77 ;; operations are assumed to be fast. The dividing line is
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
78 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
79 ;; ADDING SUPPORT FOR OTHER BACKENDS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
80 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
81 ;; VC can use arbitrary version control systems as a backend. To add
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
82 ;; support for a new backend named SYS, write a library vc-sys.el that
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
83 ;; contains functions of the form `vc-sys-...' (note that SYS is in lower
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
84 ;; case for the function and library names). VC will use that library if
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
85 ;; you put the symbol SYS somewhere into the list of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
86 ;; `vc-handled-backends'. Then, for example, if `vc-sys-registered'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
87 ;; returns non-nil for a file, all SYS-specific versions of VC commands
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
88 ;; will be available for that file.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
89 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
90 ;; VC keeps some per-file information in the form of properties (see
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
91 ;; vc-file-set/getprop in vc-hooks.el). The backend-specific functions
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
92 ;; do not generally need to be aware of these properties. For example,
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
93 ;; `vc-sys-working-revision' should compute the working revision and
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
94 ;; return it; it should not look it up in the property, and it needn't
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
95 ;; store it there either. However, if a backend-specific function does
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
96 ;; store a value in a property, that value takes precedence over any
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
97 ;; value that the generic code might want to set (check for uses of
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
98 ;; the macro `with-vc-properties' in vc.el).
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
99 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
100 ;; In the list of functions below, each identifier needs to be prepended
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
101 ;; with `vc-sys-'. Some of the functions are mandatory (marked with a
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
102 ;; `*'), others are optional (`-').
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
103 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
104 ;; BACKEND PROPERTIES
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
105 ;;
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
106 ;; * revision-granularity
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
107 ;;
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
108 ;; Takes no arguments. Returns either 'file or 'repository. Backends
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
109 ;; that return 'file have per-file revision numbering; backends
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
110 ;; that return 'repository have per-repository revision numbering,
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
111 ;; so a revision level implicitly identifies a changeset
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
112 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
113 ;; STATE-QUERYING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
114 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
115 ;; * registered (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
116 ;;
78085
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
117 ;; Return non-nil if FILE is registered in this backend. Both this
78158
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
118 ;; function as well as `state' should be careful to fail gracefully
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
119 ;; in the event that the backend executable is absent. It is
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
120 ;; preferable that this function's body is autoloaded, that way only
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
121 ;; calling vc-registered does not cause the backend to be loaded
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
122 ;; (all the vc-FOO-registered functions are called to try to find
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
123 ;; the controlling backend for FILE.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
124 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
125 ;; * state (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
126 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
127 ;; Return the current version control state of FILE. For a list of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
128 ;; possible values, see `vc-state'. This function should do a full and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
129 ;; reliable state computation; it is usually called immediately after
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
130 ;; C-x v v. If you want to use a faster heuristic when visiting a
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
131 ;; file, put that into `state-heuristic' below. Note that under most
94729
bf91c987049c Remove VC-Dired and backend dir-state methods.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94722
diff changeset
132 ;; VCSes this won't be called at all, dir-status is used instead.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
133 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
134 ;; - state-heuristic (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
135 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
136 ;; If provided, this function is used to estimate the version control
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
137 ;; state of FILE at visiting time. It should be considerably faster
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
138 ;; than the implementation of `state'. For a list of possible values,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
139 ;; see the doc string of `vc-state'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
140 ;;
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
141 ;; - dir-status (dir update-function)
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
142 ;;
93461
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
143 ;; Produce RESULT: a list of lists of the form (FILE VC-STATE EXTRA)
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
144 ;; for the files in DIR.
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
145 ;; EXTRA can be used for backend specific information about FILE.
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
146 ;; If a command needs to be run to compute this list, it should be
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
147 ;; run asynchronously using (current-buffer) as the buffer for the
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
148 ;; command. When RESULT is computed, it should be passed back by
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
149 ;; doing: (funcall UPDATE-FUNCTION RESULT nil).
94173
f062aad7dc37 (vc-dir-menu-map, vc-dir-mode-map, vc-dir-tool-bar-map):
Sam Steingold <sds@gnu.org>
parents: 94113
diff changeset
150 ;; If the backend uses a process filter, hence it produces partial results,
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
151 ;; they can be passed back by doing:
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
152 ;; (funcall UPDATE-FUNCTION RESULT t)
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
153 ;; and then do a (funcall UPDATE-FUNCTION RESULT nil)
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
154 ;; when all the results have been computed.
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
155 ;; To provide more backend specific functionality for `vc-dir'
99159
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
156 ;; the following functions might be needed: `dir-extra-headers',
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
157 ;; `dir-printer', `extra-dir-menu' and `dir-status-files'.
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
158 ;;
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
159 ;; - dir-status-files (dir files default-state update-function)
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
160 ;;
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
161 ;; This function is identical to dir-status except that it should
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
162 ;; only report status for the specified FILES. Also it needs to
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
163 ;; report on all requested files, including up-to-date or ignored
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
164 ;; files. If not provided, the default is to consider that the files
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
165 ;; are in DEFAULT-STATE.
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
166 ;;
99159
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
167 ;; - dir-extra-headers (dir)
93382
8e46096e0cb3 * vc.el (vc-status-menu-map, vc-status-mode-map): Bind vc-revert.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93367
diff changeset
168 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
169 ;; Return a string that will be added to the *vc-dir* buffer header.
93333
53eee5c271f4 * vc.el: Add new backend function 'status-extra-headers.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93273
diff changeset
170 ;;
99159
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
171 ;; - dir-printer (fileinfo)
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
172 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
173 ;; Pretty print the `vc-dir-fileinfo' FILEINFO.
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
174 ;; If a backend needs to show more information than the default FILE
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
175 ;; and STATE in the vc-dir listing, it can store that extra
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
176 ;; information in `vc-dir-fileinfo->extra'. This function can be
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
177 ;; used to display that extra information in the *vc-dir* buffer.
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
178 ;;
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
179 ;; - status-fileinfo-extra (file)
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
180 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
181 ;; Compute `vc-dir-fileinfo->extra' for FILE.
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
182 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
183 ;; * working-revision (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
184 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
185 ;; Return the working revision of FILE. This is the revision fetched
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
186 ;; by the last checkout or upate, not necessarily the same thing as the
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
187 ;; head or tip revision. Should return "0" for a file added but not yet
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
188 ;; committed.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
189 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
190 ;; - latest-on-branch-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
191 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
192 ;; Return non-nil if the working revision of FILE is the latest revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
193 ;; on its branch (many VCSes call this the 'tip' or 'head' revision).
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
194 ;; The default implementation always returns t, which means that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
195 ;; working with non-current revisions is not supported by default.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
196 ;;
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
197 ;; * checkout-model (files)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
198 ;;
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
199 ;; Indicate whether FILES need to be "checked out" before they can be
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
200 ;; edited. See `vc-checkout-model' for a list of possible values.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
201 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
202 ;; - workfile-unchanged-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
203 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
204 ;; Return non-nil if FILE is unchanged from the working revision.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
205 ;; This function should do a brief comparison of FILE's contents
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
206 ;; with those of the repository copy of the working revision. If
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
207 ;; the backend does not have such a brief-comparison feature, the
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
208 ;; default implementation of this function can be used, which
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
209 ;; delegates to a full vc-BACKEND-diff. (Note that vc-BACKEND-diff
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
210 ;; must not run asynchronously in this case, see variable
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
211 ;; `vc-disable-async-diff'.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
212 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
213 ;; - mode-line-string (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
214 ;;
82027
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
215 ;; If provided, this function should return the VC-specific mode
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
216 ;; line string for FILE. The returned string should have a
82027
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
217 ;; `help-echo' property which is the text to be displayed as a
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
218 ;; tooltip when the mouse hovers over the VC entry on the mode-line.
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
219 ;; The default implementation deals well with all states that
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
220 ;; `vc-state' can return.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
221 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
222 ;; STATE-CHANGING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
223 ;;
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
224 ;; * create-repo (backend)
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
225 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
226 ;; Create an empty repository in the current directory and initialize
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
227 ;; it so VC mode can add files to it. For file-oriented systems, this
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
228 ;; need do no more than create a subdirectory with the right name.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
229 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
230 ;; * register (files &optional rev comment)
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
231 ;;
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
232 ;; Register FILES in this backend. Optionally, an initial revision REV
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
233 ;; and an initial description of the file, COMMENT, may be specified,
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
234 ;; but it is not guaranteed that the backend will do anything with this.
40440
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
235 ;; The implementation should pass the value of vc-register-switches
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
236 ;; to the backend command. (Note: in older versions of VC, this
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
237 ;; command took a single file argument and not a list.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
238 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
239 ;; - init-revision (file)
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
240 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
241 ;; The initial revision to use when registering FILE if one is not
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
242 ;; specified by the user. If not provided, the variable
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
243 ;; vc-default-init-revision is used instead.
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
244 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
245 ;; - responsible-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
246 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
247 ;; Return non-nil if this backend considers itself "responsible" for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
248 ;; FILE, which can also be a directory. This function is used to find
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
249 ;; out what backend to use for registration of new files and for things
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
250 ;; like change log generation. The default implementation always
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
251 ;; returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
252 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
253 ;; - could-register (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
254 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
255 ;; Return non-nil if FILE could be registered under this backend. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
256 ;; default implementation always returns t.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
257 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
258 ;; - receive-file (file rev)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
259 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
260 ;; Let this backend "receive" a file that is already registered under
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
261 ;; another backend. The default implementation simply calls `register'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
262 ;; for FILE, but it can be overridden to do something more specific,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
263 ;; e.g. keep revision numbers consistent or choose editing modes for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
264 ;; FILE that resemble those of the other backend.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
265 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
266 ;; - unregister (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
267 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
268 ;; Unregister FILE from this backend. This is only needed if this
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
269 ;; backend may be used as a "more local" backend for temporary editing.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
270 ;;
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
271 ;; * checkin (files rev comment)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
272 ;;
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
273 ;; Commit changes in FILES to this backend. REV is a historical artifact
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
274 ;; and should be ignored. COMMENT is used as a check-in comment.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
275 ;; The implementation should pass the value of vc-checkin-switches to
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
276 ;; the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
277 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
278 ;; * find-revision (file rev buffer)
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
279 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
280 ;; Fetch revision REV of file FILE and put it into BUFFER.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
281 ;; If REV is the empty string, fetch the head of the trunk.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
282 ;; The implementation should pass the value of vc-checkout-switches
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
283 ;; to the backend command.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
284 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
285 ;; * checkout (file &optional editable rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
286 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
287 ;; Check out revision REV of FILE into the working area. If EDITABLE
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
288 ;; is non-nil, FILE should be writable by the user and if locking is
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
289 ;; used for FILE, a lock should also be set. If REV is non-nil, that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
290 ;; is the revision to check out (default is the working revision).
48964
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
291 ;; If REV is t, that means to check out the head of the current branch;
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
292 ;; if it is the empty string, check out the head of the trunk.
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
293 ;; The implementation should pass the value of vc-checkout-switches
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
294 ;; to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
295 ;;
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
296 ;; * revert (file &optional contents-done)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
297 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
298 ;; Revert FILE back to the working revision. If optional
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
299 ;; arg CONTENTS-DONE is non-nil, then the contents of FILE have
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
300 ;; already been reverted from a version backup, and this function
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
301 ;; only needs to update the status of FILE within the backend.
104614
92965f3f01f0 Document the desired behavior for reverted files in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104597
diff changeset
302 ;; If FILE is in the `added' state it should be returned to the
92965f3f01f0 Document the desired behavior for reverted files in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104597
diff changeset
303 ;; `unregistered' state.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
304 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
305 ;; - rollback (files)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
306 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
307 ;; Remove the tip revision of each of FILES from the repository. If
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
308 ;; this function is not provided, trying to cancel a revision is
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
309 ;; caught as an error. (Most backends don't provide it.) (Also
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
310 ;; note that older versions of this backend command were called
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
311 ;; 'cancel-version' and took a single file arg, not a list of
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
312 ;; files.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
313 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
314 ;; - merge (file rev1 rev2)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
315 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
316 ;; Merge the changes between REV1 and REV2 into the current working file.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
317 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
318 ;; - merge-news (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
319 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
320 ;; Merge recent changes from the current branch into FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
321 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
322 ;; - steal-lock (file &optional revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
323 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
324 ;; Steal any lock on the working revision of FILE, or on REVISION if
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
325 ;; that is provided. This function is only needed if locking is
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
326 ;; used for files under this backend, and if files can indeed be
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
327 ;; locked by other users.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
328 ;;
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
329 ;; - modify-change-comment (files rev comment)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
330 ;;
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
331 ;; Modify the change comments associated with the files at the
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
332 ;; given revision. This is optional, many backends do not support it.
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
333 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
334 ;; - mark-resolved (files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
335 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
336 ;; Mark conflicts as resolved. Some VC systems need to run a
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
337 ;; command to mark conflicts as resolved.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
338 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
339 ;; HISTORY FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
340 ;;
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
341 ;; * print-log (files buffer &optional shortlog start-revision limit)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
342 ;;
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
343 ;; Insert the revision log for FILES into BUFFER.
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
344 ;; If SHORTLOG is true insert a short version of the log.
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
345 ;; If LIMIT is true insert only insert LIMIT log entries. If the
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
346 ;; backend does not support limiting the number of entries to show
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
347 ;; it should return `limit-unsupported'.
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
348 ;; If START-REVISION is given, then show the log starting from the
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
349 ;; revision. At this point START-REVISION is only required to work
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
350 ;; in conjunction with LIMIT = 1.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
351 ;;
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
352 ;; * log-outgoing (backend remote-location)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
353 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
354 ;; Insert in BUFFER the revision log for the changes that will be
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
355 ;; sent when performing a push operation to REMOTE-LOCATION.
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
356 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
357 ;; * log-incoming (backend remote-location)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
358 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
359 ;; Insert in BUFFER the revision log for the changes that will be
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
360 ;; received when performing a pull operation from REMOTE-LOCATION.
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
361 ;;
78085
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
362 ;; - log-view-mode ()
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
363 ;;
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
364 ;; Mode to use for the output of print-log. This defaults to
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
365 ;; `log-view-mode' and is expected to be changed (if at all) to a derived
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
366 ;; mode of `log-view-mode'.
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
367 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
368 ;; - show-log-entry (revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
369 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
370 ;; If provided, search the log entry for REVISION in the current buffer,
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
371 ;; and make sure it is displayed in the buffer's window. The default
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
372 ;; implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
373 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
374 ;; - comment-history (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
375 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
376 ;; Return a string containing all log entries that were made for FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
377 ;; This is used for transferring a file from one backend to another,
95587
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
378 ;; retaining comment information.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
379 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
380 ;; - update-changelog (files)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
381 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
382 ;; Using recent log entries, create ChangeLog entries for FILES, or for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
383 ;; all files at or below the default-directory if FILES is nil. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
384 ;; default implementation runs rcs2log, which handles RCS- and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
385 ;; CVS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
386 ;;
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
387 ;; * diff (files &optional rev1 rev2 buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
388 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
389 ;; Insert the diff for FILE into BUFFER, or the *vc-diff* buffer if
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
390 ;; BUFFER is nil. If REV1 and REV2 are non-nil, report differences
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
391 ;; from REV1 to REV2. If REV1 is nil, use the working revision (as
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
392 ;; found in the repository) as the older revision; if REV2 is nil,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
393 ;; use the current working-copy contents as the newer revision. This
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
394 ;; function should pass the value of (vc-switches BACKEND 'diff) to
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
395 ;; the backend command. It should return a status of either 0 (no
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
396 ;; differences found), or 1 (either non-empty diff or the diff is
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
397 ;; run asynchronously).
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
398 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
399 ;; - revision-completion-table (files)
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
400 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
401 ;; Return a completion table for existing revisions of FILES.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
402 ;; The default is to not use any completion table.
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
403 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
404 ;; - annotate-command (file buf &optional rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
405 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
406 ;; If this function is provided, it should produce an annotated display
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
407 ;; of FILE in BUF, relative to revision REV. Annotation means each line
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
408 ;; of FILE displayed is prefixed with version information associated with
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
409 ;; its addition (deleted lines leave no history) and that the text of the
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
410 ;; file is fontified according to age.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
411 ;;
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
412 ;; - annotate-time ()
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
413 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
414 ;; Only required if `annotate-command' is defined for the backend.
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
415 ;; Return the time of the next line of annotation at or after point,
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
416 ;; as a floating point fractional number of days. The helper
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
417 ;; function `vc-annotate-convert-time' may be useful for converting
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
418 ;; multi-part times as returned by `current-time' and `encode-time'
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41561
diff changeset
419 ;; to this format. Return nil if no more lines of annotation appear
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
420 ;; in the buffer. You can safely assume that point is placed at the
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
421 ;; beginning of each line, starting at `point-min'. The buffer that
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
422 ;; point is placed in is the Annotate output, as defined by the
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
423 ;; relevant backend. This function also affects how much of the line
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
424 ;; is fontified; where it leaves point is where fontification begins.
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
425 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
426 ;; - annotate-current-time ()
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
427 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
428 ;; Only required if `annotate-command' is defined for the backend,
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
429 ;; AND you'd like the current time considered to be anything besides
82232
58ac5a791dfa * vc.el: Document new VC operation `extra-menu'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82213
diff changeset
430 ;; (vc-annotate-convert-time (current-time)) -- i.e. the current
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
431 ;; time with hours, minutes, and seconds included. Probably safe to
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
432 ;; ignore. Return the current-time, in units of fractional days.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
433 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
434 ;; - annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
435 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
436 ;; Only required if `annotate-command' is defined for the backend.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
437 ;; Invoked from a buffer in vc-annotate-mode, return the revision
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
438 ;; corresponding to the current line, or nil if there is no revision
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
439 ;; corresponding to the current line.
105670
6f463ea7a91a Make vc-annotate work through copies and renames.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105591
diff changeset
440 ;; If the backend supports annotating through copies and renames,
6f463ea7a91a Make vc-annotate work through copies and renames.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105591
diff changeset
441 ;; and displays a file name and a revision, then return a cons
6f463ea7a91a Make vc-annotate work through copies and renames.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105591
diff changeset
442 ;; (REVISION . FILENAME).
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
443 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
444 ;; TAG SYSTEM
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
445 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
446 ;; - create-tag (dir name branchp)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
447 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
448 ;; Attach the tag NAME to the state of the working copy. This
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
449 ;; should make sure that files are up-to-date before proceeding with
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
450 ;; the action. DIR can also be a file and if BRANCHP is specified,
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
451 ;; NAME should be created as a branch and DIR should be checked out
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
452 ;; under this new branch. The default implementation does not
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
453 ;; support branches but does a sanity check, a tree traversal and
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
454 ;; assigns the tag to each file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
455 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
456 ;; - retrieve-tag (dir name update)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
457 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
458 ;; Retrieve the version tagged by NAME of all registered files at or below DIR.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
459 ;; If UPDATE is non-nil, then update buffers of any files in the
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
460 ;; tag that are currently visited. The default implementation
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
461 ;; does a sanity check whether there aren't any uncommitted changes at
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
462 ;; or below DIR, and then performs a tree walk, using the `checkout'
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
463 ;; function to retrieve the corresponding revisions.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
464 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
465 ;; MISCELLANEOUS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
466 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
467 ;; - make-version-backups-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
468 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
469 ;; Return non-nil if unmodified repository revisions of FILE should be
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
470 ;; backed up locally. If this is done, VC can perform `diff' and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
471 ;; `revert' operations itself, without calling the backend system. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
472 ;; default implementation always returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
473 ;;
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
474 ;; - root (file)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
475 ;; Return the root of the VC controlled hierarchy for file.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
476 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
477 ;; - repository-hostname (dirname)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
478 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
479 ;; Return the hostname that the backend will have to contact
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
480 ;; in order to operate on a file in DIRNAME. If the return value
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
481 ;; is nil, it means that the repository is local.
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
482 ;; This function is used in `vc-stay-local-p' which backends can use
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
483 ;; for their convenience.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
484 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
485 ;; - previous-revision (file rev)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
486 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
487 ;; Return the revision number that precedes REV for FILE, or nil if no such
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
488 ;; revision exists.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
489 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
490 ;; - next-revision (file rev)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
491 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
492 ;; Return the revision number that follows REV for FILE, or nil if no such
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
493 ;; revision exists.
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
494 ;;
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
495 ;; - log-edit-mode ()
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
496 ;;
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
497 ;; Turn on the mode used for editing the check in log. This
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
498 ;; defaults to `log-edit-mode'. If changed, it should use a mode
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
499 ;; derived from`log-edit-mode'.
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
500 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
501 ;; - check-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
502 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
503 ;; Return non-nil if the current buffer contains any version headers.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
504 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
505 ;; - clear-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
506 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
507 ;; In the current buffer, reset all version headers to their unexpanded
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
508 ;; form. This function should be provided if the state-querying code
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
509 ;; for this backend uses the version headers to determine the state of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
510 ;; a file. This function will then be called whenever VC changes the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
511 ;; version control state in such a way that the headers would give
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
512 ;; wrong information.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
513 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
514 ;; - delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
515 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
516 ;; Delete FILE and mark it as deleted in the repository. If this
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
517 ;; function is not provided, the command `vc-delete-file' will
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
518 ;; signal an error.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
519 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
520 ;; - rename-file (old new)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
521 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
522 ;; Rename file OLD to NEW, both in the working area and in the
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
523 ;; repository. If this function is not provided, the renaming
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
524 ;; will be done by (vc-delete-file old) and (vc-register new).
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
525 ;;
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
526 ;; - find-file-hook ()
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
527 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
528 ;; Operation called in current buffer when opening a file. This can
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
529 ;; be used by the backend to setup some local variables it might need.
82232
58ac5a791dfa * vc.el: Document new VC operation `extra-menu'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82213
diff changeset
530 ;;
78822
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
531 ;; - extra-menu ()
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
532 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
533 ;; Return a menu keymap, the items in the keymap will appear at the
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
534 ;; end of the Version Control menu. The goal is to allow backends
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
535 ;; to specify extra menu items that appear in the VC menu. This way
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
536 ;; you can provide menu entries for functionality that is specific
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
537 ;; to your backend and which does not map to any of the VC generic
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
538 ;; concepts.
91951
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
539 ;;
99159
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
540 ;; - extra-dir-menu ()
91951
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
541 ;;
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
542 ;; Return a menu keymap, the items in the keymap will appear at the
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
543 ;; end of the VC Status menu. The goal is to allow backends to
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
544 ;; specify extra menu items that appear in the VC Status menu. This
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
545 ;; makes it possible to provide menu entries for functionality that
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
546 ;; is specific to a backend and which does not map to any of the VC
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
547 ;; generic concepts.
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
548 ;;
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
549 ;; - conflicted-files (dir)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
550 ;;
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
551 ;; Return the list of files where conflict resolution is needed in
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
552 ;; the project that contains DIR.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
553 ;; FIXME: what should it do with non-text conflicts?
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
554
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
555 ;;; Todo:
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
556
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
557 ;; - Get rid of the "master file" terminology.
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
558
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
559 ;; - Add key-binding for vc-delete-file.
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
560
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
561 ;;;; New Primitives:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
562 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
563 ;; - deal with push/pull operations.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
564 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
565 ;; - add a mechanism for editing the underlying VCS's list of files
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
566 ;; to be ignored, when that's possible.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
567 ;;
94883
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
568 ;;;; Primitives that need changing:
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
569 ;;
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
570 ;; - vc-update/vc-merge should deal with VC systems that don't
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
571 ;; update/merge on a file basis, but on a whole repository basis.
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
572 ;; vc-update and vc-merge assume the arguments are always files,
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
573 ;; they don't deal with directories. Make sure the *vc-dir* buffer
95587
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
574 ;; is updated after these operations.
94883
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
575 ;; At least bzr, git and hg should benefit from this.
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
576 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
577 ;;;; Improved branch and tag handling:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
578 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
579 ;; - add a generic mechanism for remembering the current branch names,
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
580 ;; display the branch name in the mode-line. Replace
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
581 ;; vc-cvs-sticky-tag with that.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
582 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
583 ;;;; Internal cleanups:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
584 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
585 ;; - backends that care about vc-stay-local should try to take it into
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
586 ;; account for vc-dir. Is this likely to be useful??? YES!
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
587 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
588 ;; - vc-expand-dirs should take a backend parameter and only look for
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
589 ;; files managed by that backend.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
590 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
591 ;; - Another important thing: merge all the status-like backend operations.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
592 ;; We should remove dir-status, state, and dir-status-files, and
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
593 ;; replace them with just `status' which takes a fileset and a continuation
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
594 ;; (like dir-status) and returns a buffer in which the process(es) are run
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
595 ;; (or nil if it worked synchronously). Hopefully we can define the old
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
596 ;; 4 operations in term of this one.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
597 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
598 ;;;; Other
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
599 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
600 ;; - when a file is in `conflict' state, turn on smerge-mode.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
601 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
602 ;; - figure out what to do with conflicts that are not caused by the
94569
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
603 ;; file contents, but by metadata or other causes. Example: File A
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
604 ;; gets renamed to B in one branch and to C in another and you merge
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
605 ;; the two branches. Or you locally add file FOO and then pull a
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
606 ;; change that also adds a new file FOO, ...
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
607 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
608 ;; - make it easier to write logs. Maybe C-x 4 a should add to the log
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
609 ;; buffer, if one is present, instead of adding to the ChangeLog.
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
610 ;;
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
611 ;; - When vc-next-action calls vc-checkin it could pre-fill the
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
612 ;; *VC-log* buffer with some obvious items: the list of files that
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
613 ;; were added, the list of files that were removed. If the diff is
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
614 ;; available, maybe it could even call something like
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
615 ;; `diff-add-change-log-entries-other-window' to create a detailed
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
616 ;; skeleton for the log...
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
617 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
618 ;; - most vc-dir backends need more work. They might need to
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
619 ;; provide custom headers, use the `extra' field and deal with all
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
620 ;; possible VC states.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
621 ;;
94836
3cb546529dde Update todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94822
diff changeset
622 ;; - add a function that calls vc-dir to `find-directory-functions'.
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
623 ;;
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
624 ;; - vc-diff, vc-annotate, etc. need to deal better with unregistered
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
625 ;; files. Now that unregistered and ignored files are shown in
94729
bf91c987049c Remove VC-Dired and backend dir-state methods.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94722
diff changeset
626 ;; vc-dir, it is possible that these commands are called
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
627 ;; for unregistered/ignored files.
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
628 ;;
96215
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
629 ;; - vc-next-action needs work in order to work with multiple
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
630 ;; backends: `vc-state' returns the state for the default backend,
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
631 ;; not for the backend in the current *vc-dir* buffer.
94518
7bd70b5b8bda Add items to TODO list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94510
diff changeset
632 ;;
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
633 ;; - vc-dir-kill-dir-status-process should not be specific to dir-status,
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
634 ;; it should work for other async commands done through vc-do-command
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
635 ;; as well,
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
636 ;;
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
637 ;; - vc-dir toolbar needs more icons.
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
638 ;;
96886
3b7098612be6 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96390
diff changeset
639 ;; - The backends should avoid using `vc-file-setprop' and `vc-file-getprop'.
3b7098612be6 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96390
diff changeset
640 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
641 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
642
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
643 (require 'vc-hooks)
94571
61cca370b8f5 vc-dispatcher layer separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94570
diff changeset
644 (require 'vc-dispatcher)
92523
5da8fdae3248 (vc-status-tool-bar-map, vc-status-toggle-mark-file)
Jan Djärv <jan.h.d@swipnet.se>
parents: 92347
diff changeset
645
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
646 (eval-when-compile
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
647 (require 'cl)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
648 (require 'dired))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
649
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
650 (unless (assoc 'vc-parent-buffer minor-mode-alist)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
651 (setq minor-mode-alist
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
652 (cons '(vc-parent-buffer vc-parent-buffer-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
653 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
654
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
655 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
656
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
657 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
658 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
659 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
660
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
661 (defcustom vc-initial-comment nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
662 "If non-nil, prompt for initial comment when a file is registered."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
663 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
664 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
665
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
666 (defcustom vc-default-init-revision "1.1"
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
667 "A string used as the default revision number when a new file is registered.
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
668 This can be overridden by giving a prefix argument to \\[vc-register]. This
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
669 can also be overridden by a particular VC backend."
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
670 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
671 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
672 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
673
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
674 (defcustom vc-checkin-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
675 "A string or list of strings specifying extra switches for checkin.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
676 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
677 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
678 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
679 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
680 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
681 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
682 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
683
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
684 (defcustom vc-checkout-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
685 "A string or list of strings specifying extra switches for checkout.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
686 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
687 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
688 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
689 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
690 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
691 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
692 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
693
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
694 (defcustom vc-register-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
695 "A string or list of strings; extra switches for registering a file.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
696 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
697 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
698 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
699 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
700 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
701 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
702 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
703
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
704 (defcustom vc-diff-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
705 "A string or list of strings specifying switches for diff under VC.
100187
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
706 When running diff under a given BACKEND, VC uses the first
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
707 non-nil value of `vc-BACKEND-diff-switches', `vc-diff-switches',
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
708 and `diff-switches', in that order. Since nil means to check the
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
709 next variable in the sequence, either of the first two may use
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
710 the value t to mean no switches at all. `vc-diff-switches'
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
711 should contain switches that are specific to version control, but
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
712 not specific to any particular backend."
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
713 :type '(choice (const :tag "Unspecified" nil)
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
714 (const :tag "None" t)
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
715 (string :tag "Argument String")
100187
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
716 (repeat :tag "Argument List" :value ("") string))
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
717 :group 'vc
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
718 :version "21.1")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
719
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
720 (defcustom vc-diff-knows-L nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
721 "Indicates whether diff understands the -L option.
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
722 The value is either `yes', `no', or nil. If it is nil, VC tries
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
723 to use -L and sets this variable to remember whether it worked."
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
724 :type '(choice (const :tag "Work out" nil) (const yes) (const no))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
725 :group 'vc)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
726
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
727 (defcustom vc-log-show-limit 2000
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
728 "Limit the number of items shown by the VC log commands.
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
729 Zero means unlimited.
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
730 Not all VC backends are able to support this feature."
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
731 :type 'integer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
732 :group 'vc)
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
733
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
734 (defcustom vc-allow-async-revert nil
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
735 "Specifies whether the diff during \\[vc-revert] may be asynchronous.
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
736 Enabling this option means that you can confirm a revert operation even
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
737 if the local changes in the file have not been found and displayed yet."
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
738 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
739 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
740 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
741 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
742
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
743 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
744 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
745 "Normal hook (list of functions) run after checking out a file.
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
746 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
747 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
748 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
749 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
750
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
751 ;;;###autoload
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
752 (defcustom vc-checkin-hook nil
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
753 "Normal hook (list of functions) run after commit or file checkin.
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
754 See also `log-edit-done-hook'."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
755 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
756 :options '(log-edit-comment-to-change-log)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
757 :group 'vc)
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
758
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
759 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
760 (defcustom vc-before-checkin-hook nil
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
761 "Normal hook (list of functions) run before a commit or a file checkin.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
762 See `run-hooks'."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
763 :type 'hook
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
764 :group 'vc)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
765
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
766 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
767
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
768 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
769 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
770 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
771 "Associate static header string templates with file types.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
772 A \%s in the template is replaced with the first string associated with
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
773 the file's version control type in `vc-header-alist'."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
774 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
775 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
776 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
777 :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
778
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
779 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
780 '((nroff-mode ".\\\"" ""))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
781 "Special comment delimiters for generating VC headers.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
782 Add an entry in this list if you need to override the normal `comment-start'
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
783 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
784 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
785 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
786 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
787 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
788 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
789 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
790
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
791 (defcustom vc-checkout-carefully (= (user-uid) 0)
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
792 "Non-nil means be extra-careful in checkout.
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
793 Verify that the file really is not locked
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
794 and that its contents match what the repository version says."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
795 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
796 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
797 (make-obsolete-variable 'vc-checkout-carefully
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
798 "the corresponding checks are always done now."
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
799 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
800
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
801
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
802 ;; Variables users don't need to see
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
803
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
804 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
805 "VC sets this to t locally to disable some async diff operations.
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
806 Backends that offer asynchronous diffs should respect this variable
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
807 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
808
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
809 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
810
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
811 (defun vc-clear-context ()
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
812 "Clear all cached file properties."
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
813 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
814 (fillarray vc-file-prop-obarray 0))
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
815
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
816 (defmacro with-vc-properties (files form settings)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
817 "Execute FORM, then maybe set per-file properties for FILES.
106888
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
818 If any of FILES is actually a directory, then do the same for all
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
819 buffers for files in that directory.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
820 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
821 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
822 been updated to their corresponding values."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
823 (declare (debug t))
106888
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
824 `(let ((vc-touched-properties (list t))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
825 (flist nil))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
826 (dolist (file ,files)
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
827 (if (file-directory-p file)
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
828 (dolist (buffer (buffer-list))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
829 (let ((fname (buffer-file-name buffer)))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
830 (when (and fname (vc-string-prefix-p file fname))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
831 (push fname flist))))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
832 (push file flist)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
833 ,form
106888
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
834 (dolist (file flist)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
835 (dolist (setting ,settings)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
836 (let ((property (car setting)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
837 (unless (memq property vc-touched-properties)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
838 (put (intern file vc-file-prop-obarray)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
839 property (cdr setting))))))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
840
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
841 ;;; Code for deducing what fileset and backend to assume
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
842
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
843 (defun vc-backend-for-registration (file)
105730
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
844 "Return a backend that can be used for registering FILE.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
845
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
846 If no backend declares itself responsible for FILE, then FILE
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
847 must not be in a version controlled directory, so try to create a
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
848 repository, prompting for the directory and the VC backend to
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
849 use."
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
850 (catch 'found
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
851 ;; First try: find a responsible backend, it must be a backend
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
852 ;; under which FILE is not yet registered.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
853 (dolist (backend vc-handled-backends)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
854 (and (not (vc-call-backend backend 'registered file))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
855 (vc-call-backend backend 'responsible-p file)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
856 (throw 'found backend)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
857 ;; no responsible backend
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
858 (let* ((possible-backends
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
859 (let (pos)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
860 (dolist (crt vc-handled-backends)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
861 (when (vc-find-backend-function crt 'create-repo)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
862 (push crt pos)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
863 pos))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
864 (bk
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
865 (intern
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
866 ;; Read the VC backend from the user, only
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
867 ;; complete with the backends that have the
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
868 ;; 'create-repo method.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
869 (completing-read
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
870 (format "%s is not in a version controlled directory.\nUse VC backend: " file)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
871 (mapcar 'symbol-name possible-backends) nil t)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
872 (repo-dir
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
873 (let ((def-dir (file-name-directory file)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
874 ;; read the directory where to create the
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
875 ;; repository, make sure it's a parent of
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
876 ;; file.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
877 (read-file-name
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
878 (format "create %s repository in: " bk)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
879 default-directory def-dir t nil
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
880 (lambda (arg)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
881 (message "arg %s" arg)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
882 (and (file-directory-p arg)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
883 (vc-string-prefix-p (expand-file-name arg) def-dir)))))))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
884 (let ((default-directory repo-dir))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
885 (vc-call-backend bk 'create-repo))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
886 (throw 'found bk))))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
887
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
888 (defun vc-responsible-backend (file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
889 "Return the name of a backend system that is responsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
890
105730
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
891 If FILE is already registered, return the
105591
6e1befdc92ef (vc-responsible-backend): When a directory is passed for
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105590
diff changeset
892 backend of FILE. If FILE is not registered, then the
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
893 first backend in `vc-handled-backends' that declares itself
105730
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
894 responsible for FILE is returned."
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
895 (or (and (not (file-directory-p file)) (vc-backend file))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
896 (catch 'found
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
897 ;; First try: find a responsible backend. If this is for registration,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
898 ;; it must be a backend under which FILE is not yet registered.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
899 (dolist (backend vc-handled-backends)
105730
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
900 (and (vc-call-backend backend 'responsible-p file)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
901 (throw 'found backend))))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
902 (error "No VC backend is responsible for %s" file)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
903
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
904 (defun vc-expand-dirs (file-or-dir-list)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
905 "Expands directories in a file list specification.
94886
9e19bca35d7f Tell (vc-expand-dirs) not to throw out explicitly specified files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94883
diff changeset
906 Within directories, only files already under version control are noticed."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
907 (let ((flattened '()))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
908 (dolist (node file-or-dir-list)
95322
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
909 (when (file-directory-p node)
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
910 (vc-file-tree-walk
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
911 node (lambda (f) (when (vc-backend f) (push f flattened)))))
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
912 (unless (file-directory-p node) (push node flattened)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
913 (nreverse flattened)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
914
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
915 (defvar vc-dir-backend)
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
916
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
917 (declare-function vc-dir-current-file "vc-dir" ())
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
918 (declare-function vc-dir-deduce-fileset "vc-dir" (&optional state-model-only-files))
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
919
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
920 (defun vc-deduce-fileset (&optional observer allow-unregistered
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
921 state-model-only-files)
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
922 "Deduce a set of files and a backend to which to apply an operation.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
923
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
924 Return (BACKEND FILESET FILESET-ONLY-FILES STATE CHECKOUT-MODEL).
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
925 If we're in VC-dir mode, the fileset is the list of marked files.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
926 Otherwise, if we're looking at a buffer visiting a version-controlled file,
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
927 the fileset is a singleton containing this file.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
928 If none of these conditions is met, but ALLOW_UNREGISTERED is on and the
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
929 visited file is not registered, return a singleton fileset containing it.
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
930 Otherwise, throw an error.
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
931
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
932 STATE-MODEL-ONLY-FILES if non-nil, means that the caller needs
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
933 the FILESET-ONLY-FILES STATE and MODEL info. Otherwise, that
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
934 part may be skipped.
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
935 BEWARE: this function may change the
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
936 current buffer."
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
937 ;; FIXME: OBSERVER is unused. The name is not intuitive and is not
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
938 ;; documented. It's set to t when called from diff and print-log.
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
939 (let (backend)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
940 (cond
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
941 ((derived-mode-p 'vc-dir-mode)
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
942 (vc-dir-deduce-fileset state-model-only-files))
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
943 ((derived-mode-p 'dired-mode)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
944 (if observer
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
945 (vc-dired-deduce-fileset)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
946 (error "State changing VC operations not supported in `dired-mode'")))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
947 ((setq backend (vc-backend buffer-file-name))
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
948 (if state-model-only-files
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
949 (list backend (list buffer-file-name)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
950 (list buffer-file-name)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
951 (vc-state buffer-file-name)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
952 (vc-checkout-model backend buffer-file-name))
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
953 (list backend (list buffer-file-name))))
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
954 ((and (buffer-live-p vc-parent-buffer)
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
955 ;; FIXME: Why this test? --Stef
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
956 (or (buffer-file-name vc-parent-buffer)
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
957 (with-current-buffer vc-parent-buffer
103553
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
958 (derived-mode-p 'vc-dir-mode))))
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
959 (progn ;FIXME: Why not `with-current-buffer'? --Stef.
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
960 (set-buffer vc-parent-buffer)
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
961 (vc-deduce-fileset observer allow-unregistered state-model-only-files)))
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
962 ((not buffer-file-name)
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
963 (error "Buffer %s is not associated with a file" (buffer-name)))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
964 ((and allow-unregistered (not (vc-registered buffer-file-name)))
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
965 (if state-model-only-files
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
966 (list (vc-backend-for-registration (buffer-file-name))
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
967 (list buffer-file-name)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
968 (list buffer-file-name)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
969 (when state-model-only-files 'unregistered)
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
970 nil)
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
971 (list (vc-backend-for-registration (buffer-file-name))
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
972 (list buffer-file-name))))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
973 (t (error "No fileset is available here")))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
974
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
975 (defun vc-dired-deduce-fileset ()
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
976 (let ((backend (vc-responsible-backend default-directory)))
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
977 (unless backend (error "Directory not under VC"))
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
978 (list backend
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
979 (dired-map-over-marks (dired-get-filename nil t) nil))))
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
980
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
981 (defun vc-ensure-vc-buffer ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
982 "Make sure that the current buffer visits a version-controlled file."
87675
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
983 (cond
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
984 ((derived-mode-p 'vc-dir-mode)
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
985 (set-buffer (find-file-noselect (vc-dir-current-file))))
87675
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
986 (t
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
987 (while (and vc-parent-buffer
87601
2425b933f90a (vc-ensure-vc-buffer): Check liveness of vc-parent-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87599
diff changeset
988 (buffer-live-p vc-parent-buffer)
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
989 ;; Avoid infinite looping when vc-parent-buffer and
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
990 ;; current buffer are the same buffer.
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
991 (not (eq vc-parent-buffer (current-buffer))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
992 (set-buffer vc-parent-buffer))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
993 (if (not buffer-file-name)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
994 (error "Buffer %s is not associated with a file" (buffer-name))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
995 (unless (vc-backend buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
996 (error "File %s is not under version control" buffer-file-name))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
997
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
998 ;;; Support for the C-x v v command.
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
999 ;; This is where all the single-file-oriented code from before the fileset
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1000 ;; rewrite lives.
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1001
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1002 (defsubst vc-editable-p (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1003 "Return non-nil if FILE can be edited."
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1004 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1005 (and backend
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1006 (or (eq (vc-checkout-model backend (list file)) 'implicit)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1007 (memq (vc-state file) '(edited needs-merge conflict))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1008
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1009 (defun vc-compatible-state (p q)
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1010 "Controls which states can be in the same commit."
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1011 (or
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1012 (eq p q)
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1013 (and (member p '(edited added removed)) (member q '(edited added removed)))))
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1014
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1015 ;; Here's the major entry point.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1016
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1017 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1018 (defun vc-next-action (verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1019 "Do the next logical version control operation on the current fileset.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1020 This requires that all files in the fileset be in the same state.
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1021
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1022 For locking systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1023 If every file is not already registered, this registers each for version
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1024 control.
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1025 If every file is registered and not locked by anyone, this checks out
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1026 a writable and locked file of each ready for editing.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1027 If every file is checked out and locked by the calling user, this
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1028 first checks to see if each file has changed since checkout. If not,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1029 it performs a revert on that file.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1030 If every file has been changed, this pops up a buffer for entry
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1031 of a log message; when the message has been entered, it checks in the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1032 resulting changes along with the log message as change commentary. If
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1033 the variable `vc-keep-workfiles' is non-nil (which is its default), a
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1034 read-only copy of each changed file is left in place afterwards.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1035 If the affected file is registered and locked by someone else, you are
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1036 given the option to steal the lock(s).
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1037
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1038 For merging systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1039 If every file is not already registered, this registers each one for version
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1040 control. This does an add, but not a commit.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1041 If every file is added but not committed, each one is committed.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1042 If every working file is changed, but the corresponding repository file is
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1043 unchanged, this pops up a buffer for entry of a log message; when the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1044 message has been entered, it checks in the resulting changes along
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1045 with the logmessage as change commentary. A writable file is retained.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1046 If the repository file is changed, you are asked if you want to
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1047 merge in the changes into your working copy."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1048 (interactive "P")
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
1049 (let* ((vc-fileset (vc-deduce-fileset nil t 'state-model-only-files))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1050 (backend (car vc-fileset))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1051 (files (nth 1 vc-fileset))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1052 (fileset-only-files (nth 2 vc-fileset))
94878
112212c5e23c Comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94861
diff changeset
1053 ;; FIXME: We used to call `vc-recompute-state' here.
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
1054 (state (nth 3 vc-fileset))
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1055 ;; The backend should check that the checkout-model is consistent
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1056 ;; among all the `files'.
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1057 (model (nth 4 vc-fileset)))
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1058
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1059 ;; Do the right thing
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1060 (cond
94538
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1061 ((eq state 'missing)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1062 (error "Fileset files are missing, so cannot be operated on"))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1063 ((eq state 'ignored)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1064 (error "Fileset files are ignored by the version-control system"))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1065 ((or (null state) (eq state 'unregistered))
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1066 (vc-register nil vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1067 ;; Files are up-to-date, or need a merge and user specified a revision
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1068 ((or (eq state 'up-to-date) (and verbose (eq state 'needs-update)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1069 (cond
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1070 (verbose
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1071 ;; go to a different revision
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1072 (let* ((revision
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1073 (read-string "Branch, revision, or backend to move to: "))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1074 (revision-downcase (downcase revision)))
102577
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1075 (if (member
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1076 revision-downcase
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1077 (mapcar (lambda (arg) (downcase (symbol-name arg)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1078 vc-handled-backends))
102577
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1079 (let ((vsym (intern-soft revision-downcase)))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1080 (dolist (file files) (vc-transfer-file file vsym)))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1081 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1082 (vc-checkout file (eq model 'implicit) revision)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1083 ((not (eq model 'implicit))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1084 ;; check the files out
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1085 (dolist (file files) (vc-checkout file t)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1086 (t
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1087 ;; do nothing
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1088 (message "Fileset is up-to-date"))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1089 ;; Files have local changes
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1090 ((vc-compatible-state state 'edited)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1091 (let ((ready-for-commit files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1092 ;; If files are edited but read-only, give user a chance to correct
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1093 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1094 (unless (file-writable-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1095 ;; Make the file+buffer read-write.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1096 (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue?" file))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1097 (error "Aborted"))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1098 (set-file-modes file (logior (file-modes file) 128))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1099 (let ((visited (get-file-buffer file)))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1100 (when visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1101 (with-current-buffer visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1102 (toggle-read-only -1))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1103 ;; Allow user to revert files with no changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1104 (save-excursion
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1105 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1106 (let ((visited (get-file-buffer file)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1107 ;; For files with locking, if the file does not contain
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1108 ;; any changes, just let go of the lock, i.e. revert.
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1109 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1110 (vc-workfile-unchanged-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1111 ;; If buffer is modified, that means the user just
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1112 ;; said no to saving it; in that case, don't revert,
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1113 ;; because the user might intend to save after
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1114 ;; finishing the log entry and committing.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1115 (not (and visited (buffer-modified-p))))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1116 (vc-revert-file file)
97245
855f5155ed05 (vc-next-action): Update list var correctly after delete.
Chong Yidong <cyd@stupidchicken.com>
parents: 96886
diff changeset
1117 (setq ready-for-commit (delete file ready-for-commit))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1118 ;; Remaining files need to be committed
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1119 (if (not ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1120 (message "No files remain to be committed")
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1121 (if (not verbose)
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1122 (vc-checkin ready-for-commit backend)
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1123 (let* ((revision (read-string "New revision or backend: "))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1124 (revision-downcase (downcase revision)))
102577
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1125 (if (member
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1126 revision-downcase
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1127 (mapcar (lambda (arg) (downcase (symbol-name arg)))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1128 vc-handled-backends))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1129 (let ((vsym (intern revision-downcase)))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1130 (dolist (file files) (vc-transfer-file file vsym)))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1131 (vc-checkin ready-for-commit backend revision)))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1132 ;; locked by somebody else (locking VCSes only)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1133 ((stringp state)
87938
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1134 ;; In the old days, we computed the revision once and used it on
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1135 ;; the single file. Then, for the 2007-2008 fileset rewrite, we
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1136 ;; computed the revision once (incorrectly, using a free var) and
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1137 ;; used it on all files. To fix the free var bug, we can either
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1138 ;; use `(car files)' or do what we do here: distribute the
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1139 ;; revision computation among `files'. Although this may be
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1140 ;; tedious for those backends where a "revision" is a trans-file
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1141 ;; concept, it is nonetheless correct for both those and (more
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1142 ;; importantly) for those where "revision" is a per-file concept.
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1143 ;; If the intersection of the former group and "locking VCSes" is
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1144 ;; non-empty [I vaguely doubt it --ttn], we can reinstate the
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1145 ;; pre-computation approach of yore.
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1146 (dolist (file files)
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1147 (vc-steal-lock
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1148 file (if verbose
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1149 (read-string (format "%s revision to steal: " file))
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1150 (vc-working-revision file))
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1151 state)))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1152 ;; conflict
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1153 ((eq state 'conflict)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1154 ;; FIXME: Is it really the UI we want to provide?
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1155 ;; In my experience, the conflicted files should be marked as resolved
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1156 ;; one-by-one when saving the file after resolving the conflicts.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1157 ;; I.e. stating explicitly that the conflicts are resolved is done
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1158 ;; very rarely.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1159 (vc-mark-resolved backend files))
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1160 ;; needs-update
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1161 ((eq state 'needs-update)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1162 (dolist (file files)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1163 (if (yes-or-no-p (format
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1164 "%s is not up-to-date. Get latest revision? "
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1165 (file-name-nondirectory file)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1166 (vc-checkout file (eq model 'implicit) t)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1167 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1168 (yes-or-no-p "Lock this revision? "))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1169 (vc-checkout file t)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1170 ;; needs-merge
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1171 ((eq state 'needs-merge)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1172 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1173 (when (yes-or-no-p (format
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1174 "%s is not up-to-date. Merge in changes now? "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1175 (file-name-nondirectory file)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1176 (vc-maybe-resolve-conflicts
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1177 file (vc-call-backend backend 'merge-news file)))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1178
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1179 ;; unlocked-changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1180 ((eq state 'unlocked-changes)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1181 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1182 (when (not (equal buffer-file-name file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1183 (find-file-other-window file))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1184 (if (save-window-excursion
95587
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
1185 (vc-diff-internal nil
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1186 (cons (car vc-fileset) (cons (cadr vc-fileset) (list file)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1187 (vc-working-revision file) nil)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1188 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1189 (let ((inhibit-read-only t))
41561
cfae9c0a0035 (vc-next-action-on-file): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41556
diff changeset
1190 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1191 (format "Changes to %s since last lock:\n\n" file)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1192 (not (beep))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1193 (yes-or-no-p (concat "File has unlocked changes. "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1194 "Claim lock retaining changes? ")))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1195 (progn (vc-call-backend backend 'steal-lock file)
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1196 (clear-visited-file-modtime)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1197 ;; Must clear any headers here because they wouldn't
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1198 ;; show that the file is locked now.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1199 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1200 (write-file buffer-file-name)
103553
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1201 (vc-mode-line file backend))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1202 (if (not (yes-or-no-p
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1203 "Revert to checked-in revision, instead? "))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1204 (error "Checkout aborted")
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1205 (vc-revert-buffer-internal t t)
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1206 (vc-checkout file t)))))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1207 ;; Unknown fileset state
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1208 (t
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1209 (error "Fileset is in an unknown state %s" state)))))
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
1210
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1211 (defun vc-create-repo (backend)
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1212 "Create an empty repository in the current directory."
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1213 (interactive
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1214 (list
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1215 (intern
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1216 (upcase
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1217 (completing-read
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1218 "Create repository for: "
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1219 (mapcar (lambda (b) (list (downcase (symbol-name b)))) vc-handled-backends)
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1220 nil t)))))
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1221 (vc-call-backend backend 'create-repo))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1222
104042
47d49939ab41 (vc-dir-move-to-goal-column): Declare.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104041
diff changeset
1223 (declare-function vc-dir-move-to-goal-column "vc-dir" ())
47d49939ab41 (vc-dir-move-to-goal-column): Declare.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104041
diff changeset
1224
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1225 ;;;###autoload
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1226 (defun vc-register (&optional set-revision vc-fileset comment)
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1227 "Register into a version control system.
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1228 If VC-FILESET is given, register the files in that fileset.
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1229 Otherwise register the current file.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1230 With prefix argument SET-REVISION, allow user to specify initial revision
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1231 level. If COMMENT is present, use that as an initial comment.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1232
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1233 The version control system to use is found by cycling through the list
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1234 `vc-handled-backends'. The first backend in that list which declares
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1235 itself responsible for the file (usually because other files in that
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1236 directory are already registered under that backend) will be used to
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1237 register the file. If no backend declares itself responsible, the
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1238 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1239 (interactive "P")
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1240 (let* ((fileset-arg (or vc-fileset (vc-deduce-fileset nil t)))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1241 (backend (car fileset-arg))
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1242 (files (nth 1 fileset-arg)))
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1243 ;; We used to operate on `only-files', but VC wants to provide the
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1244 ;; possibility to register directories rather than files only, since
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1245 ;; many VCS allow that as well.
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1246 (dolist (fname files)
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1247 (let ((bname (get-file-buffer fname)))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1248 (unless fname (setq fname buffer-file-name))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1249 (when (vc-backend fname)
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1250 (if (vc-registered fname)
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1251 (error "This file is already registered")
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1252 (unless (y-or-n-p "Previous master file has vanished. Make a new one? ")
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1253 (error "Aborted"))))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1254 ;; Watch out for new buffers of size 0: the corresponding file
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1255 ;; does not exist yet, even though buffer-modified-p is nil.
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1256 (when bname
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1257 (with-current-buffer bname
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1258 (when (and (not (buffer-modified-p))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1259 (zerop (buffer-size))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1260 (not (file-exists-p buffer-file-name)))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1261 (set-buffer-modified-p t))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1262 (vc-buffer-sync)))))
103553
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1263 (message "Registering %s... " files)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1264 (mapc 'vc-file-clearprops files)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1265 (vc-call-backend backend 'register files
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1266 (if set-revision
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1267 (read-string (format "Initial revision level for %s: " files))
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1268 (vc-call-backend backend 'init-revision))
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1269 comment)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1270 (mapc
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1271 (lambda (file)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1272 (vc-file-setprop file 'vc-backend backend)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1273 ;; FIXME: This is wrong: it should set `backup-inhibited' in all
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1274 ;; the buffers visiting files affected by this `vc-register', not
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1275 ;; in the current-buffer.
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1276 ;; (unless vc-make-backup-files
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1277 ;; (make-local-variable 'backup-inhibited)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1278 ;; (setq backup-inhibited t))
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1279
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1280 (vc-resynch-buffer file vc-keep-workfiles t))
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1281 files)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1282 (when (derived-mode-p 'vc-dir-mode)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1283 (vc-dir-move-to-goal-column))
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1284 (message "Registering %s... done" files)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1285
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1286 (defun vc-register-with (backend)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1287 "Register the current file with a specified back end."
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1288 (interactive "SBackend: ")
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1289 (when (not (member backend vc-handled-backends))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1290 (error "Unknown back end"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1291 (let ((vc-handled-backends (list backend)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1292 (call-interactively 'vc-register)))
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1293
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1294 (defun vc-checkout (file &optional writable rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1295 "Retrieve a copy of the revision REV of FILE.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1296 If WRITABLE is non-nil, make sure the retrieved file is writable.
38608
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1297 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1298
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1299 After check-out, runs the normal hook `vc-checkout-hook'."
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1300 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1301 (not rev)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1302 (vc-call make-version-backups-p file)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1303 (vc-up-to-date-p file)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1304 (vc-make-version-backup file))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1305 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1306 (with-vc-properties (list file)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1307 (condition-case err
94495
027a58c5f305 (vc-checkout): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94488
diff changeset
1308 (vc-call-backend backend 'checkout file writable rev)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1309 (file-error
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1310 ;; Maybe the backend is not installed ;-(
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1311 (when writable
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1312 (let ((buf (get-file-buffer file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1313 (when buf (with-current-buffer buf (toggle-read-only -1)))))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1314 (signal (car err) (cdr err))))
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1315 `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1316 (not writable))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1317 (if (vc-call-backend backend 'latest-on-branch-p file)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1318 'up-to-date
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1319 'needs-update)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1320 'edited))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1321 (vc-checkout-time . ,(nth 5 (file-attributes file))))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1322 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1323 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1324
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1325 (defun vc-mark-resolved (backend files)
98337
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1326 (prog1 (with-vc-properties
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1327 files
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1328 (vc-call-backend backend 'mark-resolved files)
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1329 ;; FIXME: Is this TRTD? Might not be.
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1330 `((vc-state . edited)))
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1331 (message
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1332 (substitute-command-keys
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1333 "Conflicts have been resolved in %s. \
98336
26ff192a882a (vc-mark-resolved): Move message here from vc-default-mark-resolved.
Chong Yidong <cyd@stupidchicken.com>
parents: 98326
diff changeset
1334 Type \\[vc-next-action] to check in changes.")
98337
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1335 (if (> (length files) 1)
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1336 (format "%d files" (length files))
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1337 "this file"))))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1338
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1339 (defun vc-steal-lock (file rev owner)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1340 "Steal the lock on FILE."
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1341 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1342 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1343 (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
1344 (setq file-description file))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1345 (when (not (yes-or-no-p (format "Steal the lock on %s from %s? "
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1346 file-description owner)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1347 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1348 (message "Stealing lock on %s..." file)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1349 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1350 (list file)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1351 (vc-call steal-lock file rev)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1352 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1353 (vc-resynch-buffer file t t)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1354 (message "Stealing lock on %s...done" file)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1355 ;; Write mail after actually stealing, because if the stealing
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1356 ;; goes wrong, we don't want to send any mail.
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1357 (compose-mail owner (format "Stolen lock on %s" file-description))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1358 (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
1359 (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
1360 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1361 (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
1362 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1363 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1364 (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
1365
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1366 (defun vc-checkin (files backend &optional rev comment initial-contents)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1367 "Check in FILES.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1368 The optional argument REV may be a string specifying the new revision
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1369 level (strongly deprecated). COMMENT is a comment
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1370 string; if omitted, a buffer is popped up to accept a comment. If
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1371 INITIAL-CONTENTS is non-nil, then COMMENT is used as the initial contents
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1372 of the log entry buffer.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1373
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1374 If `vc-keep-workfiles' is nil, FILE is deleted afterwards, provided
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1375 that the version control system supports this mode of operation.
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1376
94579
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1377 Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1378 (when vc-before-checkin-hook
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1379 (run-hooks 'vc-before-checkin-hook))
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1380 (lexical-let
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1381 ((backend backend))
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1382 (vc-start-logentry
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1383 files comment initial-contents
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1384 "Enter a change comment."
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1385 "*VC-log*"
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
1386 (lambda ()
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
1387 (vc-call-backend backend 'log-edit-mode))
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1388 (lexical-let ((rev rev))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1389 (lambda (files comment)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1390 (message "Checking in %s..." (vc-delistify files))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1391 ;; "This log message intentionally left almost blank".
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1392 ;; RCS 5.7 gripes about white-space-only comments too.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1393 (or (and comment (string-match "[^\t\n ]" comment))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1394 (setq comment "*** empty log message ***"))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1395 (with-vc-properties
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1396 files
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1397 ;; We used to change buffers to get local value of
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1398 ;; vc-checkin-switches, but 'the' local buffer is
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1399 ;; not a well-defined concept for filesets.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1400 (progn
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1401 (vc-call-backend backend 'checkin files rev comment)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1402 (mapc 'vc-delete-automatic-version-backups files))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1403 `((vc-state . up-to-date)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1404 (vc-checkout-time . ,(nth 5 (file-attributes file)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1405 (vc-working-revision . nil)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1406 (message "Checking in %s...done" (vc-delistify files))))
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1407 'vc-checkin-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1408
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1409 ;;; Additional entry points for examining version histories
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1410
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1411 ;; (defun vc-default-diff-tree (backend dir rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1412 ;; "List differences for all registered files at and below DIR.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1413 ;; The meaning of REV1 and REV2 is the same as for `vc-revision-diff'."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1414 ;; ;; This implementation does an explicit tree walk, and calls
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1415 ;; ;; vc-BACKEND-diff directly for each file. An optimization
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1416 ;; ;; would be to use `vc-diff-internal', so that diffs can be local,
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1417 ;; ;; and to call it only for files that are actually changed.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1418 ;; ;; However, this is expensive for some backends, and so it is left
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1419 ;; ;; to backend-specific implementations.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1420 ;; (setq default-directory dir)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1421 ;; (vc-file-tree-walk
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1422 ;; default-directory
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1423 ;; (lambda (f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1424 ;; (vc-exec-after
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1425 ;; `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1426 ;; (message "Looking at %s" ',f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1427 ;; (vc-call-backend ',(vc-backend f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1428 ;; 'diff (list ',f) ',rev1 ',rev2))))))
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1429
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1430 (defun vc-coding-system-for-diff (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1431 "Return the coding system for reading diff output for FILE."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1432 (or coding-system-for-read
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1433 ;; if we already have this file open,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1434 ;; use the buffer's coding system
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1435 (let ((buf (find-buffer-visiting file)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1436 (when buf (with-current-buffer buf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1437 buffer-file-coding-system)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1438 ;; otherwise, try to find one based on the file name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1439 (car (find-operation-coding-system 'insert-file-contents file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1440 ;; and a final fallback
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1441 'undecided))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1442
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1443 (defun vc-switches (backend op)
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1444 "Return a list of vc-BACKEND switches for operation OP.
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1445 BACKEND is a symbol such as `CVS', which will be downcased.
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1446 OP is a symbol such as `diff'.
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1447
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
1448 In decreasing order of preference, return the value of:
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1449 vc-BACKEND-OP-switches (e.g. `vc-cvs-diff-switches');
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1450 vc-OP-switches (e.g. `vc-diff-switches'); or, in the case of
98388
a0d0310a78a7 Fix previous change.
Glenn Morris <rgm@gnu.org>
parents: 98386
diff changeset
1451 diff only, `diff-switches'.
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1452
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
1453 If the chosen value is not a string or a list, return nil.
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1454 This is so that you may set, e.g. `vc-svn-diff-switches' to t in order
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1455 to override the value of `vc-diff-switches' and `diff-switches'."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1456 (let ((switches
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1457 (or (when backend
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1458 (let ((sym (vc-make-backend-sym
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1459 backend (intern (concat (symbol-name op)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1460 "-switches")))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1461 (when (boundp sym) (symbol-value sym))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1462 (let ((sym (intern (format "vc-%s-switches" (symbol-name op)))))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1463 (when (boundp sym) (symbol-value sym)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1464 (cond
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1465 ((eq op 'diff) diff-switches)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1466 (if (stringp switches) (list switches)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1467 ;; If not a list, return nil.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1468 ;; This is so we can set vc-diff-switches to t to override
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1469 ;; any switches in diff-switches.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1470 (when (listp switches) switches))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1471
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1472 ;; Old def for compatibility with Emacs-21.[123].
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1473 (defmacro vc-diff-switches-list (backend) `(vc-switches ',backend 'diff))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1474 (make-obsolete 'vc-diff-switches-list 'vc-switches "22.1")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1475
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1476 (defun vc-diff-finish (buffer messages)
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1477 ;; The empty sync output case has already been handled, so the only
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1478 ;; possibility of an empty output is for an async process.
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1479 (when (buffer-live-p buffer)
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1480 (let ((window (get-buffer-window buffer t))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1481 (emptyp (zerop (buffer-size buffer))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1482 (with-current-buffer buffer
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1483 (and messages emptyp
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1484 (let ((inhibit-read-only t))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1485 (insert (cdr messages) ".\n")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1486 (message "%s" (cdr messages))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1487 (goto-char (point-min))
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1488 (when window
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1489 (shrink-window-if-larger-than-buffer window)))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1490 (when (and messages (not emptyp))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1491 (message "%sdone" (car messages))))))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1492
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1493 (defvar vc-diff-added-files nil
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1494 "If non-nil, diff added files by comparing them to /dev/null.")
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1495
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1496 (defun vc-diff-internal (async vc-fileset rev1 rev2 &optional verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1497 "Report diffs between two revisions of a fileset.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1498 Diff output goes to the *vc-diff* buffer. The function
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1499 returns t if the buffer had changes, nil otherwise."
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
1500 (let* ((files (cadr vc-fileset))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1501 (messages (cons (format "Finding changes in %s..."
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1502 (vc-delistify files))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1503 (format "No changes between %s and %s"
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1504 (or rev1 "working revision")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1505 (or rev2 "workfile"))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1506 ;; Set coding system based on the first file. It's a kluge,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1507 ;; but the only way to set it for each file included would
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1508 ;; be to call the back end separately for each file.
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1509 (coding-system-for-read
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1510 (if files (vc-coding-system-for-diff (car files)) 'undecided)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1511 (vc-setup-buffer "*vc-diff*")
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1512 (message "%s" (car messages))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1513 ;; Many backends don't handle well the case of a file that has been
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1514 ;; added but not yet committed to the repo (notably CVS and Subversion).
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1515 ;; Do that work here so the backends don't have to futz with it. --ESR
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1516 ;;
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1517 ;; Actually most backends (including CVS) have options to control the
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1518 ;; behavior since which one is better depends on the user and on the
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1519 ;; situation). Worse yet: this code does not handle the case where
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1520 ;; `file' is a directory which contains added files.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1521 ;; I made it conditional on vc-diff-added-files but it should probably
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1522 ;; just be removed (or copied/moved to specific backends). --Stef.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1523 (when vc-diff-added-files
104597
d3ef713449d3 * vc.el (vc-diff-internal): Let-bind `process-file-side-effects' with nil.
Michael Albinus <michael.albinus@gmx.de>
parents: 104042
diff changeset
1524 (let ((filtered '())
d3ef713449d3 * vc.el (vc-diff-internal): Let-bind `process-file-side-effects' with nil.
Michael Albinus <michael.albinus@gmx.de>
parents: 104042
diff changeset
1525 process-file-side-effects)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1526 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1527 (if (or (file-directory-p file)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1528 (not (string= (vc-working-revision file) "0")))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1529 (push file filtered)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1530 ;; This file is added but not yet committed;
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
1531 ;; there is no repository version to diff against.
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1532 (if (or rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1533 (error "No revisions of %s exist" file)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1534 ;; We regard this as "changed".
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1535 ;; Diff it against /dev/null.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1536 (apply 'vc-do-command "*vc-diff*"
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1537 1 "diff" file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1538 (append (vc-switches nil 'diff) '("/dev/null"))))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1539 (setq files (nreverse filtered))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1540 (let ((vc-disable-async-diff (not async)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1541 (vc-call-backend (car vc-fileset) 'diff files rev1 rev2 "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1542 (set-buffer "*vc-diff*")
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1543 (if (and (zerop (buffer-size))
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1544 (not (get-buffer-process (current-buffer))))
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1545 ;; Treat this case specially so as not to pop the buffer.
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1546 (progn
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1547 (message "%s" (cdr messages))
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1548 nil)
85972
51aa47312c4b * ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85794
diff changeset
1549 (diff-mode)
86002
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1550 ;; Make the *vc-diff* buffer read only, the diff-mode key
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1551 ;; bindings are nicer for read only buffers. pcl-cvs does the
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1552 ;; same thing.
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1553 (setq buffer-read-only t)
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1554 (vc-exec-after `(vc-diff-finish ,(current-buffer) ',(when verbose
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1555 messages)))
86100
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1556 ;; Display the buffer, but at the end because it can change point.
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1557 (pop-to-buffer (current-buffer))
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1558 ;; In the async case, we return t even if there are no differences
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1559 ;; because we don't know that yet.
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1560 t)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1561
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1562 (defun vc-read-revision (prompt &optional files backend default initial-input)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1563 (cond
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1564 ((null files)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1565 (let ((vc-fileset (vc-deduce-fileset t))) ;FIXME: why t? --Stef
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1566 (setq files (cadr vc-fileset))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1567 (setq backend (car vc-fileset))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1568 ((null backend) (setq backend (vc-backend (car files)))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1569 (let ((completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1570 (vc-call-backend backend 'revision-completion-table files)))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1571 (if completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1572 (completing-read prompt completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1573 nil nil initial-input nil default)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1574 (read-string prompt initial-input nil default))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1575
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1576 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1577 (defun vc-version-diff (files rev1 rev2)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1578 "Report diffs between revisions of the fileset in the repository history."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1579 (interactive
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1580 (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: why t? --Stef
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
1581 (files (cadr vc-fileset))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1582 (backend (car vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1583 (first (car files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1584 (rev1-default nil)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1585 (rev2-default nil))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1586 (cond
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1587 ;; someday we may be able to do revision completion on non-singleton
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1588 ;; filesets, but not yet.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1589 ((/= (length files) 1)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1590 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1591 ;; if it's a directory, don't supply any revision default
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1592 ((file-directory-p first)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1593 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1594 ;; if the file is not up-to-date, use working revision as older revision
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1595 ((not (vc-up-to-date-p first))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1596 (setq rev1-default (vc-working-revision first)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1597 ;; if the file is not locked, use last and previous revisions as defaults
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1598 (t
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1599 (setq rev1-default (vc-call-backend backend 'previous-revision first
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1600 (vc-working-revision first)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1601 (when (string= rev1-default "") (setq rev1-default nil))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1602 (setq rev2-default (vc-working-revision first))))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1603 ;; construct argument list
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1604 (let* ((rev1-prompt (if rev1-default
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1605 (concat "Older revision (default "
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1606 rev1-default "): ")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1607 "Older revision: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1608 (rev2-prompt (concat "Newer revision (default "
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1609 (or rev2-default "current source") "): "))
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1610 (rev1 (vc-read-revision rev1-prompt files backend rev1-default))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1611 (rev2 (vc-read-revision rev2-prompt files backend rev2-default)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1612 (when (string= rev1 "") (setq rev1 nil))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1613 (when (string= rev2 "") (setq rev2 nil))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1614 (list files rev1 rev2))))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1615 ;; All that was just so we could do argument completion!
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1616 (when (and (not rev1) rev2)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1617 (error "Not a valid revision range"))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1618 ;; Yes, it's painful to call (vc-deduce-fileset) again. Alas, the
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1619 ;; placement rules for (interactive) don't actually leave us a choice.
105405
6d5195c8d57a Remove commented out code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105372
diff changeset
1620 (vc-diff-internal t (vc-deduce-fileset t) rev1 rev2
105372
bd2966850aac Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents: 105170
diff changeset
1621 (called-interactively-p 'interactive)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1622
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1623 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1624 (defun vc-diff (historic &optional not-urgent)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1625 "Display diffs between file revisions.
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1626 Normally this compares the currently selected fileset with their
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1627 working revisions. With a prefix argument HISTORIC, it reads two revision
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1628 designators specifying which revisions to compare.
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1629
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1630 The optional argument NOT-URGENT non-nil means it is ok to say no to
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1631 saving the buffer."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1632 (interactive (list current-prefix-arg t))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1633 (if historic
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1634 (call-interactively 'vc-version-diff)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1635 (when buffer-file-name (vc-buffer-sync not-urgent))
105405
6d5195c8d57a Remove commented out code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105372
diff changeset
1636 (vc-diff-internal t (vc-deduce-fileset t) nil nil
105372
bd2966850aac Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents: 105170
diff changeset
1637 (called-interactively-p 'interactive))))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1638
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1639 ;;;###autoload
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1640 (defun vc-root-diff (historic &optional not-urgent)
107679
e542aa3511d0 * vc.el (vc-root-diff): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 107677
diff changeset
1641 "Display diffs between VC-controlled whole tree revisions.
e542aa3511d0 * vc.el (vc-root-diff): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 107677
diff changeset
1642 Normally, this compares the tree corresponding to the current
e542aa3511d0 * vc.el (vc-root-diff): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 107677
diff changeset
1643 fileset with the working revision.
e542aa3511d0 * vc.el (vc-root-diff): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 107677
diff changeset
1644 With a prefix argument HISTORIC, prompt for two revision
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1645 designators specifying which revisions to compare.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1646
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1647 The optional argument NOT-URGENT non-nil means it is ok to say no to
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1648 saving the buffer."
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1649 (interactive (list current-prefix-arg t))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1650 (if historic
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1651 ;; FIXME: this does not work right, `vc-version-diff' ends up
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1652 ;; calling `vc-deduce-fileset' to find the files to diff, and
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1653 ;; that's not what we want here, we want the diff for the VC root dir.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1654 (call-interactively 'vc-version-diff)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1655 (when buffer-file-name (vc-buffer-sync not-urgent))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1656 (let ((backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1657 (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
1658 ((derived-mode-p 'dired-mode) (vc-responsible-backend default-directory))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1659 (vc-mode (vc-backend buffer-file-name))))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1660 rootdir working-revision)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1661 (unless backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1662 (error "Buffer is not version controlled"))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1663 (setq rootdir (vc-call-backend backend 'root default-directory))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1664 (setq working-revision (vc-working-revision rootdir))
107794
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1665 ;; VC diff for the root directory produces output that is
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1666 ;; relative to it. Bind default-directory to the root directory
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1667 ;; here, this way the *vc-diff* buffer is setup correctly, so
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1668 ;; relative file names work.
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1669 (let ((default-directory rootdir))
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1670 (vc-diff-internal
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1671 t (list backend (list rootdir) working-revision) nil nil
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1672 (called-interactively-p 'interactive))))))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1673
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1674 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1675 (defun vc-revision-other-window (rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1676 "Visit revision REV of the current file in another window.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1677 If the current file is named `F', the revision is named `F.~REV~'.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1678 If `F.~REV~' already exists, use it instead of checking it out again."
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1679 (interactive
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1680 (save-current-buffer
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1681 (vc-ensure-vc-buffer)
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1682 (list
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1683 (vc-read-revision "Revision to visit (default is working revision): "
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1684 (list buffer-file-name)))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1685 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1686 (let* ((file buffer-file-name)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1687 (revision (if (string-equal rev "")
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1688 (vc-working-revision file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1689 rev)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1690 (switch-to-buffer-other-window (vc-find-revision file revision))))
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1691
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1692 (defun vc-find-revision (file revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1693 "Read REVISION of FILE into a buffer and return the buffer."
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1694 (let ((automatic-backup (vc-version-backup-file-name file revision))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1695 (filebuf (or (get-file-buffer file) (current-buffer)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1696 (filename (vc-version-backup-file-name file revision 'manual)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1697 (unless (file-exists-p filename)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1698 (if (file-exists-p automatic-backup)
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1699 (rename-file automatic-backup filename nil)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1700 (message "Checking out %s..." filename)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1701 (with-current-buffer filebuf
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1702 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1703 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1704 (let ((coding-system-for-read 'no-conversion)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1705 (coding-system-for-write 'no-conversion))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1706 (with-temp-file filename
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1707 (let ((outbuf (current-buffer)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1708 ;; Change buffer to get local value of
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1709 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1710 (with-current-buffer filebuf
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1711 (vc-call find-revision file revision outbuf))))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1712 (setq failed nil))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1713 (when (and failed (file-exists-p filename))
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1714 (delete-file filename))))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1715 (vc-mode-line file))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1716 (message "Checking out %s...done" filename)))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1717 (let ((result-buf (find-file-noselect filename)))
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1718 (with-current-buffer result-buf
86410
bca8808972f0 Delete eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86370
diff changeset
1719 ;; Set the parent buffer so that things like
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1720 ;; C-x v g, C-x v l, ... etc work.
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
1721 (set (make-local-variable 'vc-parent-buffer) filebuf))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1722 result-buf)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1723
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1724 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1725
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1726 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1727 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1728 "Insert headers into a file for use with a version control system.
23235
7f3fdbb83988 (vc-insert-headers): Doc fix.
Dave Love <fx@gnu.org>
parents: 22905
diff changeset
1729 Headers desired are inserted at point, and are pulled from
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1730 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1731 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1732 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1733 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1734 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1735 (widen)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1736 (when (or (not (vc-check-headers))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1737 (y-or-n-p "Version headers already exist. Insert another set? "))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1738 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1739 (comment-start-vc (or (car delims) comment-start "#"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1740 (comment-end-vc (or (car (cdr delims)) comment-end ""))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1741 (hdsym (vc-make-backend-sym (vc-backend buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1742 'header))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1743 (hdstrings (and (boundp hdsym) (symbol-value hdsym))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1744 (dolist (s hdstrings)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1745 (insert comment-start-vc "\t" s "\t"
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1746 comment-end-vc "\n"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1747 (when vc-static-header-alist
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1748 (dolist (f vc-static-header-alist)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1749 (when (string-match (car f) buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1750 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1751
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1752 (defun vc-clear-headers (&optional file)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1753 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1754 The headers are reset to their non-expanded form."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1755 (let* ((filename (or file buffer-file-name))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1756 (visited (find-buffer-visiting filename))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1757 (backend (vc-backend filename)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1758 (when (vc-find-backend-function backend 'clear-headers)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1759 (if visited
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1760 (let ((context (vc-buffer-context)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1761 ;; save-excursion may be able to relocate point and mark
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1762 ;; properly. If it fails, vc-restore-buffer-context
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1763 ;; will give it a second try.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1764 (save-excursion
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1765 (vc-call-backend backend 'clear-headers))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1766 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1767 (set-buffer (find-file-noselect filename))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1768 (vc-call-backend backend 'clear-headers)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1769 (kill-buffer filename)))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1770
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1771 (defun vc-modify-change-comment (files rev oldcomment)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1772 "Edit the comment associated with the given files and revision."
107485
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1773 ;; Less of a kluge than it looks like; log-view mode only passes
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1774 ;; this function a singleton list. Arguments left in this form in
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1775 ;; case the more general operation ever becomes meaningful.
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1776 (let ((backend (vc-responsible-backend (car files))))
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1777 (vc-start-logentry
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1778 files oldcomment t
107485
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1779 "Enter a replacement change comment."
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1780 "*VC-log*"
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1781 (lambda () (vc-call-backend backend 'log-edit-mode))
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1782 (lexical-let ((rev rev))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1783 (lambda (files comment)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1784 (vc-call-backend backend
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1785 'modify-change-comment files rev comment))))))
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1786
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1787 ;;;###autoload
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1788 (defun vc-merge ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1789 "Merge changes between two revisions into the current buffer's file.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1790 This asks for two revisions to merge from in the minibuffer. If the
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1791 first revision is a branch number, then merge all changes from that
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1792 branch. If the first revision is empty, merge news, i.e. recent changes
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1793 from the current branch.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1794
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1795 See Info node `Merging'."
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1796 (interactive)
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1797 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1798 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1799 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1800 (backend (vc-backend file))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1801 (state (vc-state file))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1802 first-revision second-revision status)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1803 (cond
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1804 ((stringp state) ;; Locking VCses only
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1805 (error "File is locked by %s" state))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1806 ((not (vc-editable-p file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1807 (if (y-or-n-p
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1808 "File must be checked out for merging. Check out now? ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1809 (vc-checkout file t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1810 (error "Merge aborted"))))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1811 (setq first-revision
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1812 (vc-read-revision
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1813 (concat "Branch or revision to merge from "
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1814 "(default news on current branch): ")
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1815 (list file)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1816 backend))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1817 (if (string= first-revision "")
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1818 (setq status (vc-call-backend backend 'merge-news file))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1819 (if (not (vc-find-backend-function backend 'merge))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1820 (error "Sorry, merging is not implemented for %s" backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1821 (if (not (vc-branch-p first-revision))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1822 (setq second-revision
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1823 (vc-read-revision
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1824 "Second revision: "
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1825 (list file) backend nil
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1826 ;; FIXME: This is CVS/RCS/SCCS specific.
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1827 (concat (vc-branch-part first-revision) ".")))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1828 ;; We want to merge an entire branch. Set revisions
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1829 ;; accordingly, so that vc-BACKEND-merge understands us.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1830 (setq second-revision first-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1831 ;; first-revision must be the starting point of the branch
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1832 (setq first-revision (vc-branch-part first-revision)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1833 (setq status (vc-call-backend backend 'merge file
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1834 first-revision second-revision))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1835 (vc-maybe-resolve-conflicts file status "WORKFILE" "MERGE SOURCE")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1836
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1837 (defun vc-maybe-resolve-conflicts (file status &optional name-A name-B)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1838 (vc-resynch-buffer file t (not (buffer-modified-p)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1839 (if (zerop status) (message "Merge successful")
87785
8f1628da223f * smerge-mode.el (smerge-start-session): Rename from smerge-auto.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87743
diff changeset
1840 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
1841 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1842
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1843 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
1844 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1845
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1846 ;; TODO: This is OK but maybe we could integrate it better.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1847 ;; E.g. it could be run semi-automatically (via a prompt?) when saving a file
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1848 ;; that was conflicted (i.e. upon mark-resolved).
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1849 ;; FIXME: should we add an "other-window" version? Or maybe we should
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1850 ;; hook it inside find-file so it automatically works for
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1851 ;; find-file-other-window as well. E.g. find-file could use a new
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1852 ;; `default-next-file' variable for its default file (M-n), and
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1853 ;; we could then set it upon mark-resolve, so C-x C-s C-x C-f M-n would
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1854 ;; automatically offer the next conflicted file.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1855 (defun vc-find-conflicted-file ()
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1856 "Visit the next conflicted file in the current project."
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1857 (interactive)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1858 (let* ((backend (or (if buffer-file-name (vc-backend buffer-file-name))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1859 (vc-responsible-backend default-directory)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1860 (error "No VC backend")))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1861 (files (vc-call-backend backend
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1862 'conflicted-files default-directory)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1863 ;; Don't try and visit the current file.
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1864 (if (equal (car files) buffer-file-name) (pop files))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1865 (if (null files)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1866 (message "No more conflicted files")
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1867 (find-file (pop files))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1868 (message "%s more conflicted files after this one"
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1869 (if files (length files) "No")))))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1870
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1871 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1872
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1873 (defun vc-tag-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1874 "Scan the tree below DIR, looking for files not up-to-date.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1875 If any file is not up-to-date, return the name of the first such file.
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1876 \(This means, neither tag creation nor retrieval is allowed.\)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1877 If one or more of the files are currently visited, return `visited'.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1878 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1879 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1880 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1881 (vc-file-tree-walk
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1882 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1883 (lambda (f)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1884 (if (not (vc-up-to-date-p f)) (throw 'vc-locked-example f)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1885 (when (get-file-buffer f) (setq status 'visited)))))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1886 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1887
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1888 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1889 (defun vc-create-tag (dir name branchp)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1890 "Descending recursively from DIR, make a tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1891 For each registered file, the working revision becomes part of
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1892 the named configuration. If the prefix argument BRANCHP is
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1893 given, the tag is made as a new branch and the files are
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1894 checked out in that new branch."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1895 (interactive
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1896 (let ((granularity
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1897 (vc-call-backend (vc-responsible-backend default-directory)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1898 'revision-granularity)))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1899 (list
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1900 (if (eq granularity 'repository)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1901 ;; For VC's that do not work at file level, it's pointless
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1902 ;; to ask for a directory, branches are created at repository level.
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1903 default-directory
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1904 (read-file-name "Directory: " default-directory default-directory t))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1905 (read-string (if current-prefix-arg "New branch name: " "New tag name: "))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1906 current-prefix-arg)))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1907 (message "Making %s... " (if branchp "branch" "tag"))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1908 (when (file-directory-p dir) (setq dir (file-name-as-directory dir)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1909 (vc-call-backend (vc-responsible-backend dir)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1910 'create-tag dir name branchp)
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1911 (vc-resynch-buffer dir t t t)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1912 (message "Making %s... done" (if branchp "branch" "tag")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1913
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1914 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1915 (defun vc-retrieve-tag (dir name)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1916 "Descending recursively from DIR, retrieve the tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1917 If NAME is empty, it refers to the latest revisions.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1918 If locking is used for the files in DIR, then there must not be any
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1919 locked files at or below DIR (but if NAME is empty, locked files are
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1920 allowed and simply skipped)."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1921 (interactive
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1922 (let ((granularity
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1923 (vc-call-backend (vc-responsible-backend default-directory)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1924 'revision-granularity)))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1925 (list
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1926 (if (eq granularity 'repository)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1927 ;; For VC's that do not work at file level, it's pointless
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1928 ;; to ask for a directory, branches are created at repository level.
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1929 default-directory
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1930 (read-file-name "Directory: " default-directory default-directory t))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1931 (read-string "Tag name to retrieve (default latest revisions): "))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1932 (let ((update (yes-or-no-p "Update any affected buffers? "))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1933 (msg (if (or (not name) (string= name ""))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1934 (format "Updating %s... " (abbreviate-file-name dir))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1935 (format "Retrieving tag into %s... "
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1936 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
1937 (message "%s" msg)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1938 (vc-call-backend (vc-responsible-backend dir)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1939 'retrieve-tag dir name update)
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1940 (vc-resynch-buffer dir t t t)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
1941 (message "%s" (concat msg "done"))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1942
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1943
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1944 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1945
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1946 ;; FIXME: this should be a defcustom
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1947 ;; FIXME: maybe add another choice:
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1948 ;; `root-directory' (or somesuch), which would mean show a short log
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1949 ;; for the root directory.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1950 (defvar vc-log-short-style '(directory)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1951 "Whether or not to show a short log.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1952 If it contains `directory' then if the fileset contains a directory show a short log.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1953 If it contains `file' then show short logs for files.
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1954 Not all VC backends support short logs!")
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1955
106383
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
1956 (defvar log-view-vc-backend)
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
1957 (defvar log-view-vc-fileset)
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
1958
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1959 (defun vc-print-log-setup-buttons (working-revision is-start-revision limit pl-return)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1960 (when (and limit (not (eq 'limit-unsupported pl-return))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1961 (not is-start-revision))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1962 (goto-char (point-max))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1963 (lexical-let ((working-revision working-revision)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1964 (limit limit))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1965 (widget-create 'push-button
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1966 :notify (lambda (&rest ignore)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1967 (vc-print-log-internal
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1968 log-view-vc-backend log-view-vc-fileset
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1969 working-revision nil (* 2 limit)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1970 :help-echo "Show the log again, and double the number of log entries shown"
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1971 "Show 2X entries")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1972 (widget-insert " ")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1973 (widget-create 'push-button
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1974 :notify (lambda (&rest ignore)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1975 (vc-print-log-internal
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1976 log-view-vc-backend log-view-vc-fileset
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1977 working-revision nil nil))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1978 :help-echo "Show the log again, showing all entries"
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1979 "Show unlimited entries"))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1980 (widget-setup)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1981
106230
eb5b55788509 (vc-print-log-internal): Make `limit' optional for better
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106159
diff changeset
1982 (defun vc-print-log-internal (backend files working-revision
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
1983 &optional is-start-revision limit)
104041
f2d3a9b75762 (vc-print-log-internal): New function, split out from ...
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103596
diff changeset
1984 ;; Don't switch to the output buffer before running the command,
f2d3a9b75762 (vc-print-log-internal): New function, split out from ...
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103596
diff changeset
1985 ;; so that any buffer-local settings in the vc-controlled
f2d3a9b75762 (vc-print-log-internal): New function, split out from ...
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103596
diff changeset
1986 ;; buffer can be accessed by the command.
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1987 (let ((dir-present nil)
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
1988 (vc-short-log nil)
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1989 (buffer-name "*vc-change-log*")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1990 type
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
1991 pl-return)
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1992 (dolist (file files)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1993 (when (file-directory-p file)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1994 (setq dir-present t)))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1995 (setq vc-short-log
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1996 (not (null (if dir-present
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1997 (memq 'directory vc-log-short-style)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1998 (memq 'file vc-log-short-style)))))
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
1999 (setq type (if vc-short-log 'short 'long))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2000 (lexical-let
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2001 ((working-revision working-revision)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2002 (limit limit)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2003 (shortlog vc-short-log)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2004 (is-start-revision is-start-revision))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2005 (vc-log-internal-common
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2006 backend buffer-name files type
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2007 (lambda (bk buf type-arg files-arg)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2008 (vc-call-backend bk 'print-log files-arg buf
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2009 shortlog (when is-start-revision working-revision) limit))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2010 (lambda (bk files-arg ret)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2011 (vc-print-log-setup-buttons working-revision
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2012 is-start-revision limit ret))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2013 (lambda (bk)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2014 (vc-call-backend bk 'show-log-entry working-revision))))))
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
2015
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2016 (defvar vc-log-view-type nil
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2017 "Set this to differentiate the different types of logs.")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2018 (put 'vc-log-view-type 'permanent-local t)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2019
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2020 (defun vc-log-internal-common (backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2021 buffer-name
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2022 files
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2023 type
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2024 backend-func
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2025 setup-buttons-func
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2026 goto-location-func)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2027 (let (retval)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2028 (with-current-buffer (get-buffer-create buffer-name)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2029 (set (make-local-variable 'vc-log-view-type) type))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2030 (setq retval (funcall backend-func backend buffer-name type files))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2031 (pop-to-buffer buffer-name)
106361
2e9a20121a4f (vc-print-log-internal): Don't wait for the prcess to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106230
diff changeset
2032 (let ((inhibit-read-only t))
2e9a20121a4f (vc-print-log-internal): Don't wait for the prcess to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106230
diff changeset
2033 ;; log-view-mode used to be called with inhibit-read-only bound
2e9a20121a4f (vc-print-log-internal): Don't wait for the prcess to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106230
diff changeset
2034 ;; to t, so let's keep doing it, just in case.
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2035 (vc-call-backend backend 'log-view-mode)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2036 (set (make-local-variable 'log-view-vc-backend) backend)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2037 (set (make-local-variable 'log-view-vc-fileset) files))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2038 (vc-exec-after
106361
2e9a20121a4f (vc-print-log-internal): Don't wait for the prcess to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106230
diff changeset
2039 `(let ((inhibit-read-only t))
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2040 (funcall ',setup-buttons-func ',backend ',files ',retval)
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2041 (shrink-window-if-larger-than-buffer)
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2042 (funcall ',goto-location-func ',backend)
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2043 (setq vc-sentinel-movepoint (point))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2044 (set-buffer-modified-p nil)))))
104041
f2d3a9b75762 (vc-print-log-internal): New function, split out from ...
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103596
diff changeset
2045
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2046 (defun vc-incoming-outgoing-internal (backend remote-location buffer-name type)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2047 (vc-log-internal-common
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2048 backend buffer-name nil type
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2049 (lexical-let
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2050 ((remote-location remote-location))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2051 (lambda (bk buf type-arg files)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2052 (vc-call-backend bk type-arg buf remote-location)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2053 (lambda (bk files-arg ret))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2054 (lambda (bk)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2055 (goto-char (point-min)))))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2056
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2057 ;;;###autoload
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2058 (defun vc-print-log (&optional working-revision limit)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2059 "List the change log of the current fileset in a window.
107677
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2060 If WORKING-REVISION is non-nil, leave point at that revision.
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2061 If LIMIT is non-nil, it should be a number specifying the maximum
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2062 number of revisions to show; the default is `vc-log-show-limit'.
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2063
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2064 When called interactively with a prefix argument, prompt for
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2065 WORKING-REVISION and LIMIT."
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2066 (interactive
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2067 (cond
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2068 (current-prefix-arg
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2069 (let ((rev (read-from-minibuffer "Log from revision (default: last revision): " nil
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2070 nil nil nil))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2071 (lim (string-to-number
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2072 (read-from-minibuffer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2073 "Limit display (unlimited: 0): "
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2074 (format "%s" vc-log-show-limit)
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2075 nil nil nil))))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2076 (when (string= rev "") (setq rev nil))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2077 (when (<= lim 0) (setq lim nil))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2078 (list rev lim)))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2079 (t
106399
065925e07677 Limit the number of log entries displayed by default.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106383
diff changeset
2080 (list nil (when (> vc-log-show-limit 0) vc-log-show-limit)))))
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
2081 (let* ((vc-fileset (vc-deduce-fileset t)) ;FIXME: Why t? --Stef
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2082 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2083 (files (cadr vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2084 (working-revision (or working-revision (vc-working-revision (car files)))))
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
2085 (vc-print-log-internal backend files working-revision nil limit)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2086
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2087 ;;;###autoload
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2088 (defun vc-print-root-log (&optional limit)
107677
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2089 "List the change log for the current VC controlled tree in a window.
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2090 If LIMIT is non-nil, it should be a number specifying the maximum
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2091 number of revisions to show; the default is `vc-log-show-limit'.
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2092 When called interactively with a prefix argument, prompt for LIMIT."
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2093 (interactive
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2094 (cond
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2095 (current-prefix-arg
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2096 (let ((lim (string-to-number
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2097 (read-from-minibuffer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2098 "Limit display (unlimited: 0): "
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2099 (format "%s" vc-log-show-limit)
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2100 nil nil nil))))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2101 (when (<= lim 0) (setq lim nil))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2102 (list lim)))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2103 (t
106399
065925e07677 Limit the number of log entries displayed by default.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106383
diff changeset
2104 (list (when (> vc-log-show-limit 0) vc-log-show-limit)))))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2105 (let ((backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2106 (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
2107 ((derived-mode-p 'dired-mode) (vc-responsible-backend default-directory))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2108 (vc-mode (vc-backend buffer-file-name))))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2109 rootdir working-revision)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2110 (unless backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2111 (error "Buffer is not version controlled"))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2112 (setq rootdir (vc-call-backend backend 'root default-directory))
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2113 (setq working-revision (vc-working-revision rootdir))
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
2114 (vc-print-log-internal backend (list rootdir) working-revision nil limit)))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2115
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2116 ;;;###autoload
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2117 (defun vc-log-incoming (&optional remote-location)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2118 "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION."
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2119 (interactive "sRemote location (empty for default): ")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2120 (let ((backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2121 (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2122 ((derived-mode-p 'dired-mode) (vc-responsible-backend default-directory))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2123 (vc-mode (vc-backend buffer-file-name))))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2124 rootdir working-revision)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2125 (unless backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2126 (error "Buffer is not version controlled"))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2127 (vc-incoming-outgoing-internal backend remote-location "*vc-incoming*" 'log-incoming)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2128
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2129 ;;;###autoload
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2130 (defun vc-log-outgoing (&optional remote-location)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2131 "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION."
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2132 (interactive "sRemote location (empty for default): ")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2133 (let ((backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2134 (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2135 ((derived-mode-p 'dired-mode) (vc-responsible-backend default-directory))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2136 (vc-mode (vc-backend buffer-file-name))))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2137 rootdir working-revision)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2138 (unless backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2139 (error "Buffer is not version controlled"))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2140 (vc-incoming-outgoing-internal backend remote-location "*vc-outgoing*" 'log-outgoing)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2141
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2142 ;;;###autoload
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
2143 (defun vc-revert ()
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2144 "Revert working copies of the selected fileset to their repository contents.
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
2145 This asks for confirmation if the buffer contents are not identical
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2146 to the working revision (except for keyword expansion)."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2147 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2148 (let* ((vc-fileset (vc-deduce-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2149 (files (cadr vc-fileset)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2150 ;; If any of the files is visited by the current buffer, make
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2151 ;; sure buffer is saved. If the user says `no', abort since
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2152 ;; we cannot show the changes and ask for confirmation to
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2153 ;; discard them.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2154 (when (or (not files) (memq (buffer-file-name) files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2155 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2156 (dolist (file files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2157 (let ((buf (get-file-buffer file)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2158 (when (and buf (buffer-modified-p buf))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2159 (error "Please kill or save all modified buffers before reverting")))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2160 (when (vc-up-to-date-p file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2161 (unless (yes-or-no-p (format "%s seems up-to-date. Revert anyway? " file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2162 (error "Revert canceled"))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2163 (when (vc-diff-internal vc-allow-async-revert vc-fileset nil nil)
99262
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2164 (unless (yes-or-no-p
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2165 (format "Discard changes in %s? "
106383
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2166 (let ((str (vc-delistify files))
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2167 (nfiles (length files)))
99262
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2168 (if (< (length str) 50)
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2169 str
106383
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2170 (format "%d file%s" nfiles
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2171 (if (= nfiles 1) "" "s"))))))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2172 (error "Revert canceled"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2173 (delete-windows-on "*vc-diff*")
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2174 (kill-buffer "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2175 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2176 (message "Reverting %s..." (vc-delistify files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2177 (vc-revert-file file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2178 (message "Reverting %s...done" (vc-delistify files)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2179
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2180 ;;;###autoload
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2181 (defun vc-rollback ()
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2182 "Roll back (remove) the most recent changeset committed to the repository.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2183 This may be either a file-level or a repository-level operation,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2184 depending on the underlying version-control system."
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2185 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2186 (let* ((vc-fileset (vc-deduce-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2187 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2188 (files (cadr vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2189 (granularity (vc-call-backend backend 'revision-granularity)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2190 (unless (vc-find-backend-function backend 'rollback)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2191 (error "Rollback is not supported in %s" backend))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2192 (when (and (not (eq granularity 'repository)) (/= (length files) 1))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2193 (error "Rollback requires a singleton fileset or repository versioning"))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2194 ;; FIXME: latest-on-branch-p should take the fileset.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2195 (when (not (vc-call-backend backend 'latest-on-branch-p (car files)))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2196 (error "Rollback is only possible at the tip revision"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2197 ;; If any of the files is visited by the current buffer, make
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2198 ;; sure buffer is saved. If the user says `no', abort since
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2199 ;; we cannot show the changes and ask for confirmation to
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2200 ;; discard them.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2201 (when (or (not files) (memq (buffer-file-name) files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2202 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2203 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2204 (when (buffer-modified-p (get-file-buffer file))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2205 (error "Please kill or save all modified buffers before rollback"))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2206 (when (not (vc-up-to-date-p file))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2207 (error "Please revert all modified workfiles before rollback")))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2208 ;; Accumulate changes associated with the fileset
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2209 (vc-setup-buffer "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2210 (not-modified)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2211 (message "Finding changes...")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2212 (let* ((tip (vc-working-revision (car files)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2213 ;; FIXME: `previous-revision' should take the fileset.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2214 (previous (vc-call-backend backend 'previous-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2215 (car files) tip)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2216 (vc-diff-internal nil vc-fileset previous tip))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2217 ;; Display changes
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2218 (unless (yes-or-no-p "Discard these revisions? ")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2219 (error "Rollback canceled"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2220 (delete-windows-on "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2221 (kill-buffer"*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2222 ;; Do the actual reversions
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2223 (message "Rolling back %s..." (vc-delistify files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2224 (with-vc-properties
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2225 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2226 (vc-call-backend backend 'rollback files)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2227 `((vc-state . ,'up-to-date)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2228 (vc-checkout-time . , (nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2229 (vc-working-revision . nil)))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2230 (dolist (f files) (vc-resynch-buffer f t t))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2231 (message "Rolling back %s...done" (vc-delistify files))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2232
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2233 ;;;###autoload
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2234 (define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2235
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2236 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2237 (defun vc-update ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2238 "Update the current fileset's files to their tip revisions.
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2239 For each one that contains no changes, and is not locked, then this simply
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2240 replaces the work file with the latest revision on its branch. If the file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2241 contains changes, and the backend supports merging news, then any recent
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2242 changes from the current branch are merged into the working file."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2243 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2244 (let* ((vc-fileset (vc-deduce-fileset))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
2245 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2246 (files (cadr vc-fileset)))
95587
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
2247 (save-some-buffers ; save buffers visiting files
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
2248 nil (lambda ()
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
2249 (and (buffer-modified-p)
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
2250 (let ((file (buffer-file-name)))
cb8fbc8ef1c5 (vc-update): Use `save-some-buffers' instead of signaling an error on modified buffers.
Sam Steingold <sds@gnu.org>
parents: 95327
diff changeset
2251 (and file (member file files))))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2252 (dolist (file files)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2253 (if (vc-up-to-date-p file)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2254 (vc-checkout file nil t)
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
2255 (if (eq (vc-checkout-model backend (list file)) 'locking)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2256 (if (eq (vc-state file) 'edited)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2257 (error "%s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2258 (substitute-command-keys
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2259 "File is locked--type \\[vc-revert] to discard changes"))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2260 (error "Unexpected file state (%s) -- type %s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2261 (vc-state file)
87147
e07baccc00fc Fix vc.el breakage.
Deepak Goel <deego@gnufans.org>
parents: 87145
diff changeset
2262 (substitute-command-keys
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2263 "\\[vc-next-action] to correct")))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2264 (vc-maybe-resolve-conflicts
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2265 file (vc-call-backend backend 'merge-news file)))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2266
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2267 (defun vc-version-backup-file (file &optional rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2268 "Return name of backup file for revision REV of FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2269 If version backups should be used for FILE, and there exists
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2270 such a backup for REV or the working revision of file, return
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
2271 its name; otherwise return nil."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2272 (when (vc-call make-version-backups-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2273 (let ((backup-file (vc-version-backup-file-name file rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2274 (if (file-exists-p backup-file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2275 backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2276 ;; there is no automatic backup, but maybe the user made one manually
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2277 (setq backup-file (vc-version-backup-file-name file rev 'manual))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2278 (when (file-exists-p backup-file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2279 backup-file)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2280
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2281 (defun vc-revert-file (file)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2282 "Revert FILE back to the repository working revision it was based on."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2283 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2284 (list file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2285 (let ((backup-file (vc-version-backup-file file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2286 (when backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2287 (copy-file backup-file file 'ok-if-already-exists 'keep-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2288 (vc-delete-automatic-version-backups file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2289 (vc-call revert file backup-file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2290 `((vc-state . up-to-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2291 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2292 (vc-resynch-buffer file t t))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2293
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2294 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2295 (defun vc-switch-backend (file backend)
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2296 "Make BACKEND the current version control system for FILE.
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2297 FILE must already be registered in BACKEND. The change is not
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2298 permanent, only for the current session. This function only changes
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2299 VC's perspective on FILE, it does not register or unregister it.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2300 By default, this command cycles through the registered backends.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2301 To get a prompt, use a prefix argument."
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2302 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2303 (list
66549
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2304 (or buffer-file-name
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2305 (error "There is no version-controlled file in this buffer"))
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2306 (let ((crt-bk (vc-backend buffer-file-name))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2307 (backends nil))
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2308 (unless crt-bk
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2309 (error "File %s is not under version control" buffer-file-name))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2310 ;; Find the registered backends.
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2311 (dolist (crt vc-handled-backends)
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2312 (when (and (vc-call-backend crt 'registered buffer-file-name)
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2313 (not (eq crt-bk crt)))
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2314 (push crt backends)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2315 ;; Find the next backend.
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2316 (let ((def (car backends))
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2317 (others backends))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2318 (cond
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2319 ((null others) (error "No other backend to switch to"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2320 (current-prefix-arg
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2321 (intern
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2322 (upcase
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2323 (completing-read
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2324 (format "Switch to backend [%s]: " def)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2325 (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2326 nil t nil nil (downcase (symbol-name def))))))
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2327 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2328 (unless (eq backend (vc-backend file))
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2329 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2330 (vc-file-setprop file 'vc-backend backend)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2331 ;; Force recomputation of the state
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2332 (unless (vc-call-backend backend 'registered file)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2333 (vc-file-clearprops file)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2334 (error "%s is not registered in %s" file backend))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2335 (vc-mode-line file)))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2336
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2337 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2338 (defun vc-transfer-file (file new-backend)
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2339 "Transfer FILE to another version control system NEW-BACKEND.
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2340 If NEW-BACKEND has a higher precedence than FILE's current backend
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2341 \(i.e. it comes earlier in `vc-handled-backends'), then register FILE in
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2342 NEW-BACKEND, using the revision number from the current backend as the
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2343 base level. If NEW-BACKEND has a lower precedence than the current
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2344 backend, then commit all changes that were made under the current
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2345 backend to NEW-BACKEND, and unregister FILE from the current backend.
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2346 \(If FILE is not yet registered under NEW-BACKEND, register it.)"
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2347 (let* ((old-backend (vc-backend file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2348 (edited (memq (vc-state file) '(edited needs-merge)))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2349 (registered (vc-call-backend new-backend 'registered file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2350 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2351 (and registered ; Never move if not registered in new-backend yet.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2352 ;; move if new-backend comes later in vc-handled-backends
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2353 (or (memq new-backend (memq old-backend vc-handled-backends))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2354 (y-or-n-p "Final transfer? "))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2355 (comment nil))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2356 (when (eq old-backend new-backend)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2357 (error "%s is the current backend of %s" new-backend file))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2358 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2359 (set-file-modes file (logior (file-modes file) 128))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2360 ;; `registered' might have switched under us.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2361 (vc-switch-backend file old-backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2362 (let* ((rev (vc-working-revision file))
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2363 (modified-file (and edited (make-temp-file file)))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2364 (unmodified-file (and modified-file (vc-version-backup-file file))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2365 ;; Go back to the base unmodified file.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2366 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2367 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2368 (when modified-file
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2369 (copy-file file modified-file 'ok-if-already-exists)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2370 ;; If we have a local copy of the unmodified file, handle that
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2371 ;; here and not in vc-revert-file because we don't want to
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2372 ;; delete that copy -- it is still useful for OLD-BACKEND.
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2373 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2374 (copy-file unmodified-file file
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2375 'ok-if-already-exists 'keep-date)
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
2376 (when (y-or-n-p "Get base revision from repository? ")
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2377 (vc-revert-file file))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2378 (vc-call-backend new-backend 'receive-file file rev))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2379 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2380 (vc-switch-backend file new-backend)
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
2381 (unless (eq (vc-checkout-model new-backend (list file)) 'implicit)
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2382 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2383 (rename-file modified-file file 'ok-if-already-exists)
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2384 (vc-file-setprop file 'vc-checkout-time nil)))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2385 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2386 (vc-switch-backend file old-backend)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2387 (setq comment (vc-call-backend old-backend 'comment-history file))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2388 (vc-call-backend old-backend 'unregister file))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2389 (vc-switch-backend file new-backend)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2390 (when (or move edited)
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2391 (vc-file-setprop file 'vc-state 'edited)
103553
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
2392 (vc-mode-line file new-backend)
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
2393 (vc-checkin file new-backend nil comment (stringp comment)))))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2394
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2395 (defun vc-rename-master (oldmaster newfile templates)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2396 "Rename OLDMASTER to be the master file for NEWFILE based on TEMPLATES."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2397 (let* ((dir (file-name-directory (expand-file-name oldmaster)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2398 (newdir (or (file-name-directory newfile) ""))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2399 (newbase (file-name-nondirectory newfile))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2400 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2401 ;; List of potential master files for `newfile'
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2402 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2403 (lambda (s) (vc-possible-master s newdir newbase))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2404 templates)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2405 (when (or (file-symlink-p oldmaster)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2406 (file-symlink-p (file-name-directory oldmaster)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2407 (error "This is unsafe in the presence of symbolic links"))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2408 (rename-file
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2409 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2410 (catch 'found
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2411 ;; If possible, keep the master file in the same directory.
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2412 (dolist (f masters)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2413 (when (and f (string= (file-name-directory (expand-file-name f)) dir))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2414 (throw 'found f)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2415 ;; If not, just use the first possible place.
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2416 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2417 (and f (or (not (setq dir (file-name-directory f)))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2418 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2419 (throw 'found f)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2420 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2421
103153
ce30850e6e3f (vc-delete-file): Add autoload cookie (bug#3209).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 102680
diff changeset
2422 ;;;###autoload
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2423 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2424 "Delete file and mark it as such in the version control system."
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2425 (interactive "fVC delete file: ")
93165
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2426 (setq file (expand-file-name file))
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2427 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2428 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2429 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2430 (error "File %s is not under version control"
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2431 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2432 (unless (vc-find-backend-function backend 'delete-file)
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2433 (error "Deleting files under %s is not supported in VC" backend))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2434 (when (and buf (buffer-modified-p buf))
94520
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2435 (error "Please save or undo your changes before deleting %s" file))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2436 (let ((state (vc-state file)))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2437 (when (eq state 'edited)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2438 (error "Please commit or undo your changes before deleting %s" file))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2439 (when (eq state 'conflict)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2440 (error "Please resolve the conflicts before deleting %s" file)))
65689
96187e7edd1b 2005-09-25 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 65680
diff changeset
2441 (unless (y-or-n-p (format "Really want to delete %s? "
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2442 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2443 (error "Abort!"))
94499
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2444 (unless (or (file-directory-p file) (null make-backup-files)
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2445 (not (file-exists-p file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2446 (with-current-buffer (or buf (find-file-noselect file))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2447 (let ((backup-inhibited nil))
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
2448 (backup-buffer))))
95895
2ab93a71b21a (vc-delete-file): Bound default-directory before calling
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95853
diff changeset
2449 ;; Bind `default-directory' so that the command that the backend
2ab93a71b21a (vc-delete-file): Bound default-directory before calling
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95853
diff changeset
2450 ;; runs to remove the file is invoked in the correct context.
2ab93a71b21a (vc-delete-file): Bound default-directory before calling
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95853
diff changeset
2451 (let ((default-directory (file-name-directory file)))
2ab93a71b21a (vc-delete-file): Bound default-directory before calling
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95853
diff changeset
2452 (vc-call-backend backend 'delete-file file))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2453 ;; If the backend hasn't deleted the file itself, let's do it for him.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2454 (when (file-exists-p file) (delete-file file))
93165
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2455 ;; Forget what VC knew about the file.
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2456 (vc-file-clearprops file)
95270
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2457 ;; Make sure the buffer is deleted and the *vc-dir* buffers are
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2458 ;; updated after this.
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2459 (vc-resynch-buffer file nil t)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2460
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2461 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2462 (defun vc-rename-file (old new)
107815
9c5ceea9a88b Get rid of several uses of the term 'master' in favor of equivalent verbiage
Eric S. Raymond <esr@thyrsus.com>
parents: 107795
diff changeset
2463 "Rename file OLD to NEW in both work area and repository."
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2464 (interactive "fVC rename file: \nFRename to: ")
95853
174293e3d9fc (vc-rename-file): DTRT when the destination is a directory name and the source is a file.
Sam Steingold <sds@gnu.org>
parents: 95587
diff changeset
2465 ;; in CL I would have said (setq new (merge-pathnames new old))
174293e3d9fc (vc-rename-file): DTRT when the destination is a directory name and the source is a file.
Sam Steingold <sds@gnu.org>
parents: 95587
diff changeset
2466 (let ((old-base (file-name-nondirectory old)))
174293e3d9fc (vc-rename-file): DTRT when the destination is a directory name and the source is a file.
Sam Steingold <sds@gnu.org>
parents: 95587
diff changeset
2467 (when (and (not (string= "" old-base))
174293e3d9fc (vc-rename-file): DTRT when the destination is a directory name and the source is a file.
Sam Steingold <sds@gnu.org>
parents: 95587
diff changeset
2468 (string= "" (file-name-nondirectory new)))
174293e3d9fc (vc-rename-file): DTRT when the destination is a directory name and the source is a file.
Sam Steingold <sds@gnu.org>
parents: 95587
diff changeset
2469 (setq new (concat new old-base))))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2470 (let ((oldbuf (get-file-buffer old)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2471 (when (and oldbuf (buffer-modified-p oldbuf))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2472 (error "Please save files before moving them"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2473 (when (get-file-buffer new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2474 (error "Already editing new file name"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2475 (when (file-exists-p new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2476 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2477 (let ((state (vc-state old)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2478 (unless (memq state '(up-to-date edited))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2479 (error "Please %s files before moving them"
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2480 (if (stringp state) "check in" "update"))))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2481 (vc-call rename-file old new)
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2482 (vc-file-clearprops old)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2483 ;; Move the actual file (unless the backend did it already)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2484 (when (file-exists-p old) (rename-file old new))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2485 ;; ?? Renaming a file might change its contents due to keyword expansion.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2486 ;; We should really check out a new copy if the old copy was precisely equal
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2487 ;; to some checked-in revision. However, testing for this is tricky....
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2488 (when oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2489 (with-current-buffer oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2490 (let ((buffer-read-only buffer-read-only))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2491 (set-visited-file-name new))
103553
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
2492 (vc-mode-line new (vc-backend new))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2493 (set-buffer-modified-p nil)))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2494
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2495 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2496 (defun vc-update-change-log (&rest args)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2497 "Find change log file and add entries from recent version control logs.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2498 Normally, find log entries for all registered files in the default
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2499 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2500
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2501 With prefix arg of \\[universal-argument], 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
2502
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2503 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
2504 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
2505 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
2506
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2507 From a program, any ARGS are assumed to be filenames for which
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2508 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2509 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2510 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2511 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2512 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2513 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2514 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2515 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2516 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2517 (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
2518 (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
2519 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2520 (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
2521 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2522 (t
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2523 ;; Don't supply any filenames to backend; this means
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2524 ;; it should find all relevant files relative to
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2525 ;; the default-directory.
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2526 nil)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2527 (vc-call-backend (vc-responsible-backend default-directory)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2528 'update-changelog args))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2529
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2530 ;; functions that operate on RCS revision numbers. This code should
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2531 ;; also be moved into the backends. It stays for now, however, since
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2532 ;; it is used in code below.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2533 (defun vc-branch-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2534 "Return t if REV is a branch revision."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2535 (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2536
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2537 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2538 (defun vc-branch-part (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2539 "Return the branch part of a revision number REV."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2540 (let ((index (string-match "\\.[0-9]+\\'" rev)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2541 (when index
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2542 (substring rev 0 index))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2543
97936
c2f756ba4557 (vc-default-previous-version): Move alias here from vc-hooks, and fix
Glenn Morris <rgm@gnu.org>
parents: 97245
diff changeset
2544 (define-obsolete-function-alias
c2f756ba4557 (vc-default-previous-version): Move alias here from vc-hooks, and fix
Glenn Morris <rgm@gnu.org>
parents: 97245
diff changeset
2545 'vc-default-previous-version 'vc-default-previous-revision "23.1")
c2f756ba4557 (vc-default-previous-version): Move alias here from vc-hooks, and fix
Glenn Morris <rgm@gnu.org>
parents: 97245
diff changeset
2546
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2547 (defun vc-default-responsible-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2548 "Indicate whether BACKEND is reponsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2549 The default is to return nil always."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2550 nil)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2551
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2552 (defun vc-default-could-register (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2553 "Return non-nil if BACKEND could be used to register FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2554 The default implementation returns t for all files."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2555 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2556
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2557 (defun vc-default-latest-on-branch-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2558 "Return non-nil if FILE is the latest on its branch.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2559 This default implementation always returns non-nil, which means that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2560 editing non-current revisions is not supported by default."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2561 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2562
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2563 (defun vc-default-init-revision (backend) vc-default-init-revision)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2564
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2565 (defun vc-default-find-revision (backend file rev buffer)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2566 "Provide the new `find-revision' op based on the old `checkout' op.
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2567 This is only for compatibility with old backends. They should be updated
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2568 to provide the `find-revision' operation instead."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2569 (let ((tmpfile (make-temp-file (expand-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2570 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2571 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2572 (vc-call-backend backend 'checkout file nil rev tmpfile)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2573 (with-current-buffer buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2574 (insert-file-contents-literally tmpfile)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2575 (delete-file tmpfile))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2576
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2577 (defun vc-default-rename-file (backend old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2578 (condition-case nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2579 (add-name-to-file old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2580 (error (rename-file old new)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2581 (vc-delete-file old)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2582 (with-current-buffer (find-file-noselect new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2583 (vc-register)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2584
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2585 (defalias 'vc-default-check-headers 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2586
107485
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
2587 (declare-function log-edit-mode "log-edit" ())
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
2588
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
2589 (defun vc-default-log-edit-mode (backend) (log-edit-mode))
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
2590
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2591 (defun vc-default-log-view-mode (backend) (log-view-mode))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2592
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2593 (defun vc-default-show-log-entry (backend rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2594 (with-no-warnings
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2595 (log-view-goto-rev rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2596
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2597 (defun vc-default-comment-history (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2598 "Return a string with all log entries stored in BACKEND for FILE."
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2599 (when (vc-find-backend-function backend 'print-log)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2600 (with-current-buffer "*vc*"
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2601 (vc-call-backend backend 'print-log (list file))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2602 (buffer-string))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2603
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2604 (defun vc-default-receive-file (backend file rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2605 "Let BACKEND receive FILE from another version control system."
102554
ac34b8fe4921 (vc-default-receive-file): The 'register method now
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100908
diff changeset
2606 (vc-call-backend backend 'register (list file) rev ""))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2607
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2608 (defun vc-default-retrieve-tag (backend dir name update)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2609 (if (string= name "")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2610 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2611 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2612 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2613 (lambda (f) (and
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2614 (vc-up-to-date-p f)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2615 (vc-error-occurred
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2616 (vc-call-backend backend 'checkout f nil "")
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2617 (when update (vc-resynch-buffer f t t)))))))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2618 (let ((result (vc-tag-precondition dir)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2619 (if (stringp result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2620 (error "File %s is locked" result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2621 (setq update (and (eq result 'visited) update))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2622 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2623 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2624 (lambda (f) (vc-error-occurred
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2625 (vc-call-backend backend 'checkout f nil name)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2626 (when update (vc-resynch-buffer f t t)))))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2627
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2628 (defun vc-default-revert (backend file contents-done)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2629 (unless contents-done
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2630 (let ((rev (vc-working-revision file))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2631 (file-buffer (or (get-file-buffer file) (current-buffer))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2632 (message "Checking out %s..." file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2633 (let ((failed t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2634 (backup-name (car (find-backup-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2635 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2636 (copy-file file backup-name 'ok-if-already-exists 'keep-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2637 (unless (file-writable-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2638 (set-file-modes file (logior (file-modes file) 128))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2639 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2640 (let ((coding-system-for-read 'no-conversion)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2641 (coding-system-for-write 'no-conversion))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2642 (with-temp-file file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2643 (let ((outbuf (current-buffer)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2644 ;; Change buffer to get local value of vc-checkout-switches.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2645 (with-current-buffer file-buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2646 (let ((default-directory (file-name-directory file)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2647 (vc-call-backend backend 'find-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2648 file rev outbuf)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2649 (setq failed nil))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2650 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2651 (if failed
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2652 (rename-file backup-name file 'ok-if-already-exists)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2653 (and (not vc-make-backup-files) (delete-file backup-name))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2654 (message "Checking out %s...done" file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2655
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2656 (defalias 'vc-default-revision-completion-table 'ignore)
98336
26ff192a882a (vc-mark-resolved): Move message here from vc-default-mark-resolved.
Chong Yidong <cyd@stupidchicken.com>
parents: 98326
diff changeset
2657 (defalias 'vc-default-mark-resolved 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2658
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2659 (defun vc-default-dir-status-files (backend dir files default-state update-function)
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2660 (funcall update-function
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2661 (mapcar (lambda (file) (list file default-state)) files)))
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2662
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2663 (defun vc-check-headers ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2664 "Check if the current file has any headers in it."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2665 (interactive)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2666 (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2667
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2668
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2669
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2670 ;; These things should probably be generally available
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2671
96390
02d657f45045 * vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96310
diff changeset
2672 (defun vc-string-prefix-p (prefix string)
02d657f45045 * vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96310
diff changeset
2673 (let ((lpref (length prefix)))
02d657f45045 * vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96310
diff changeset
2674 (and (>= (length string) lpref)
02d657f45045 * vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96310
diff changeset
2675 (eq t (compare-strings prefix nil nil string nil lpref)))))
02d657f45045 * vc-dir.el (vc-dir-hide-up-to-date): Also hide empty directories.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96310
diff changeset
2676
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2677 (defun vc-file-tree-walk (dirname func &rest args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2678 "Walk recursively through DIRNAME.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2679 Invoke FUNC f ARGS on each VC-managed file f underneath it."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2680 (vc-file-tree-walk-internal (expand-file-name dirname) func args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2681 (message "Traversing directory %s...done" dirname))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2682
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2683 (defun vc-file-tree-walk-internal (file func args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2684 (if (not (file-directory-p file))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2685 (when (vc-backend file) (apply func file args))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2686 (message "Traversing directory %s..." (abbreviate-file-name file))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2687 (let ((dir (file-name-as-directory file)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2688 (mapcar
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2689 (lambda (f) (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2690 (string-equal f ".")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2691 (string-equal f "..")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2692 (member f vc-directory-exclusion-list)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2693 (let ((dirf (expand-file-name f dir)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2694 (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2695 (file-symlink-p dirf) ;; Avoid possible loops.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2696 (vc-file-tree-walk-internal dirf func args)))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2697 (directory-files dir)))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2698
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2699 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2700
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
2701 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2702 ;;; vc.el ends here