annotate lisp/vc/vc.el @ 112228:417b1e4d63cd

Merge from emacs-23
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 14 Jan 2011 12:18:41 -0500
parents 411dce7ee068
children ef719132ddfa
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,
112228
417b1e4d63cd Merge from emacs-23
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 111685
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
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>
108971
d928a6a7c3f2 * lisp/finder.el (finder-known-keywords): Add keyword "vc"
Juri Linkov <juri@jurta.org>
parents: 108970
diff changeset
9 ;; Keywords: vc 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 (`-').
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
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
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
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 ;;
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
316 ;; Merge the changes between REV1 and REV2 into the current working file
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
317 ;; (for non-distributed VCS).
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
318 ;;
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
319 ;; - merge-branch ()
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
320 ;;
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
321 ;; Merge another branch into the current one, prompting for a
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
322 ;; location to merge from.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
323 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
324 ;; - merge-news (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
325 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
326 ;; Merge recent changes from the current branch into FILE.
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
327 ;; (for non-distributed VCS).
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
328 ;;
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
329 ;; - pull (prompt)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
330 ;;
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
331 ;; Pull "upstream" changes into the current branch (for distributed
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
332 ;; VCS). If PROMPT is non-nil, or if necessary, prompt for a
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
333 ;; location to pull from.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
334 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
335 ;; - steal-lock (file &optional revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
336 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
337 ;; 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
338 ;; 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
339 ;; 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
340 ;; locked by other users.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
341 ;;
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
342 ;; - 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
343 ;;
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
344 ;; 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
345 ;; 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
346 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
347 ;; - mark-resolved (files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
348 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
349 ;; 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
350 ;; command to mark conflicts as resolved.
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
351
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
352 ;; HISTORY FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
353 ;;
106472
6e0f1038bc44 Support showing a single log entry from vc-annotate.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106399
diff changeset
354 ;; * 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
355 ;;
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
356 ;; 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
357 ;; 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
358 ;; 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
359 ;; 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
360 ;; 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
361 ;; 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
362 ;; 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
363 ;; in conjunction with LIMIT = 1.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
364 ;;
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
365 ;; * 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
366 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
367 ;; 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
368 ;; 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
369 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
370 ;; * 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
371 ;;
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
372 ;; 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
373 ;; 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
374 ;;
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
375 ;; - 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
376 ;;
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
377 ;; 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
378 ;; `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
379 ;; 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
380 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
381 ;; - show-log-entry (revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
382 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
383 ;; 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
384 ;; 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
385 ;; implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
386 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
387 ;; - comment-history (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
388 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
389 ;; 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
390 ;; 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
391 ;; retaining comment information.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
392 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
393 ;; - update-changelog (files)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
394 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
395 ;; 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
396 ;; 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
397 ;; default implementation runs rcs2log, which handles RCS- and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
398 ;; CVS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
399 ;;
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
400 ;; * diff (files &optional rev1 rev2 buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
401 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
402 ;; 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
403 ;; 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
404 ;; 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
405 ;; 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
406 ;; 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
407 ;; 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
408 ;; 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
409 ;; 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
410 ;; run asynchronously).
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
411 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
412 ;; - 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
413 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
414 ;; 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
415 ;; 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
416 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
417 ;; - annotate-command (file buf &optional rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
418 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
419 ;; 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
420 ;; 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
421 ;; 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
422 ;; 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
423 ;; file is fontified according to age.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
424 ;;
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
425 ;; - annotate-time ()
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
426 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
427 ;; 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
428 ;; 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
429 ;; 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
430 ;; 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
431 ;; 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
432 ;; 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
433 ;; 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
434 ;; 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
435 ;; 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
436 ;; 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
437 ;; 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
438 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
439 ;; - annotate-current-time ()
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
440 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
441 ;; 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
442 ;; 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
443 ;; (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
444 ;; 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
445 ;; 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
446 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
447 ;; - annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
448 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
449 ;; 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
450 ;; 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
451 ;; 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
452 ;; 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
453 ;; 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
454 ;; 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
455 ;; (REVISION . FILENAME).
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
456
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
457 ;; TAG SYSTEM
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
458 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
459 ;; - create-tag (dir name branchp)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
460 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
461 ;; 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
462 ;; 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
463 ;; 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
464 ;; 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
465 ;; 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
466 ;; 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
467 ;; assigns the tag to each file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
468 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
469 ;; - retrieve-tag (dir name update)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
470 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
471 ;; 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
472 ;; 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
473 ;; tag that are currently visited. The default implementation
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
474 ;; 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
475 ;; 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
476 ;; function to retrieve the corresponding revisions.
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
477
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
478 ;; MISCELLANEOUS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
479 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
480 ;; - make-version-backups-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
481 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
482 ;; 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
483 ;; 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
484 ;; `revert' operations itself, without calling the backend system. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
485 ;; default implementation always returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
486 ;;
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
487 ;; - root (file)
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
488 ;; 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
489 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
490 ;; - repository-hostname (dirname)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
491 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
492 ;; 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
493 ;; 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
494 ;; 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
495 ;; 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
496 ;; for their convenience.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
497 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
498 ;; - previous-revision (file rev)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
499 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
500 ;; 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
501 ;; revision exists.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
502 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
503 ;; - next-revision (file rev)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
504 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
505 ;; 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
506 ;; revision exists.
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
507 ;;
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
508 ;; - log-edit-mode ()
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
509 ;;
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
510 ;; 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
511 ;; 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
512 ;; derived from`log-edit-mode'.
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
513 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
514 ;; - check-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
515 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
516 ;; 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
517 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
518 ;; - clear-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
519 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
520 ;; 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
521 ;; 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
522 ;; 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
523 ;; 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
524 ;; 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
525 ;; wrong information.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
526 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
527 ;; - delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
528 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
529 ;; 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
530 ;; 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
531 ;; signal an error.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
532 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
533 ;; - rename-file (old new)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
534 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
535 ;; 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
536 ;; 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
537 ;; 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
538 ;;
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
539 ;; - find-file-hook ()
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
540 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
541 ;; 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
542 ;; 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
543 ;;
78822
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
544 ;; - 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
545 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
546 ;; 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
547 ;; 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
548 ;; 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
549 ;; 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
550 ;; 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
551 ;; 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
552 ;;
99159
b0dce7f34dda * vc.el: Rename VC methods that were missed when vc-status was
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98388
diff changeset
553 ;; - 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
554 ;;
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
555 ;; 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
556 ;; 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
557 ;; 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
558 ;; 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
559 ;; 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
560 ;; generic concepts.
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
561 ;;
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
562 ;; - conflicted-files (dir)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
563 ;;
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
564 ;; 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
565 ;; 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
566 ;; FIXME: what should it do with non-text conflicts?
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
567
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
568 ;;; Todo:
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
569
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
570 ;; - 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
571
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
572 ;; - 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
573
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
574 ;;;; New Primitives:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
575 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
576 ;; - deal with push/pull operations.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
577 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
578 ;; - 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
579 ;; to be ignored, when that's possible.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
580 ;;
94883
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
581 ;;;; Primitives that need changing:
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
582 ;;
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
583 ;; - 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
584 ;; 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
585 ;; 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
586 ;; 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
587 ;; is updated after these operations.
94883
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
588 ;; 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
589 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
590 ;;;; Improved branch and tag handling:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
591 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
592 ;; - 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
593 ;; 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
594 ;; vc-cvs-sticky-tag with that.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
595 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
596 ;;;; Internal cleanups:
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 ;; - 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
599 ;; 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
600 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
601 ;; - 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
602 ;; files managed by that backend.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
603 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
604 ;; - 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
605 ;; 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
606 ;; 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
607 ;; (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
608 ;; (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
609 ;; 4 operations in term of this one.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
610 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
611 ;;;; Other
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
612 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
613 ;; - 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
614 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
615 ;; - 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
616 ;; 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
617 ;; 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
618 ;; 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
619 ;; 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
620 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
621 ;; - 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
622 ;; 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
623 ;;
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
624 ;; - 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
625 ;; *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
626 ;; 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
627 ;; 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
628 ;; `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
629 ;; skeleton for the log...
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
630 ;;
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
631 ;; - 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
632 ;; 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
633 ;; possible VC states.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
634 ;;
94836
3cb546529dde Update todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94822
diff changeset
635 ;; - 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
636 ;;
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
637 ;; - 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
638 ;; 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
639 ;; 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
640 ;; 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
641 ;;
96215
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
642 ;; - vc-next-action needs work in order to work with multiple
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
643 ;; backends: `vc-state' returns the state for the default backend,
ad9760e68890 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96203
diff changeset
644 ;; 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
645 ;;
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
646 ;; - 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
647 ;; 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
648 ;; as well,
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
649 ;;
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
650 ;; - vc-dir toolbar needs more icons.
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
651 ;;
96886
3b7098612be6 (Todo): Update.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96390
diff changeset
652 ;; - 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
653 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
654 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
655
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
656 (require 'vc-hooks)
94571
61cca370b8f5 vc-dispatcher layer separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94570
diff changeset
657 (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
658
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
659 (eval-when-compile
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
660 (require 'cl)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
661 (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
662
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
663 (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
664 (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
665 (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
666 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
667
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
668 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
669
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
670 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
671 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
672 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
673
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
674 (defcustom vc-initial-comment nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
675 "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
676 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
677 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
678
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
679 (defcustom vc-default-init-revision "1.1"
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
680 "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
681 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
682 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
683 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
684 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
685 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
686
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
687 (defcustom vc-checkin-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
688 "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
689 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
690 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
691 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
692 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
693 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
694 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
695 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
696
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
697 (defcustom vc-checkout-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
698 "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
699 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
700 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
701 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
702 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
703 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
704 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
705 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
706
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
707 (defcustom vc-register-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
708 "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
709 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
710 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
711 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
712 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
713 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
714 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
715 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
716
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
717 (defcustom vc-diff-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
718 "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
719 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
720 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
721 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
722 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
723 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
724 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
725 not specific to any particular backend."
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
726 :type '(choice (const :tag "Unspecified" nil)
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
727 (const :tag "None" t)
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
728 (string :tag "Argument String")
100187
e518f14b0bda (vc-diff-switches): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 100171
diff changeset
729 (repeat :tag "Argument List" :value ("") string))
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
730 :group 'vc
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
731 :version "21.1")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
732
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
733 (defcustom vc-diff-knows-L nil
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
734 "Indicates whether diff understands the -L option.
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
735 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
736 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
737 :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
738 :group 'vc)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
739
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
740 (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
741 "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
742 Zero means unlimited.
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
743 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
744 :type 'integer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
745 :group 'vc)
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
746
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
747 (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
748 "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
749 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
750 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
751 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
752 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
753 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
754 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
755
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
756 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
757 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
758 "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
759 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
760 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
761 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
762 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
763
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
764 ;;;###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
765 (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
766 "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
767 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
768 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
769 :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
770 :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
771
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 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
773 (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
774 "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
775 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
776 :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
777 :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
778
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
779 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
780
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
781 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
782 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
783 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
784 "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
785 A \%s in the template is replaced with the first string associated with
110741
d90a3bc6b730 Remove vc-header-alist, obsolete since 21.1.
Glenn Morris <rgm@gnu.org>
parents: 109445
diff changeset
786 the file's version control type in `vc-BACKEND-header'."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
787 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
788 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
789 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
790 :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
791
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
792 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
793 '((nroff-mode ".\\\"" ""))
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
794 "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
795 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
796 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
797 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
798 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
799 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
800 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
801 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
802 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
803
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
804 (defcustom vc-checkout-carefully (= (user-uid) 0)
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
805 "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
806 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
807 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
808 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
809 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
810 (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
811 "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
812 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
813
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
814
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
815 ;; Variables users don't need to see
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
816
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
817 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
818 "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
819 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
820 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
821
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
822 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
823
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
824 (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
825 "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
826 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
827 (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
828
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
829 (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
830 "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
831 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
832 buffers for files in that directory.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
833 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
834 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
835 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
836 (declare (debug t))
106888
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
837 `(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
838 (flist nil))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
839 (dolist (file ,files)
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
840 (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
841 (dolist (buffer (buffer-list))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
842 (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
843 (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
844 (push fname flist))))
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
845 (push file flist)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
846 ,form
106888
70822719735d (with-vc-properties): Deal with directory arguments. (Bug#5298)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106815
diff changeset
847 (dolist (file flist)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
848 (dolist (setting ,settings)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
849 (let ((property (car setting)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
850 (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
851 (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
852 property (cdr setting))))))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
853
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
854 ;;; 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
855
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
856 (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
857 "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
858
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
859 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
860 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
861 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
862 use."
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
863 (catch 'found
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
864 ;; 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
865 ;; 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
866 (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
867 (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
868 (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
869 (throw 'found backend)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
870 ;; no responsible backend
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
871 (let* ((possible-backends
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
872 (let (pos)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
873 (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
874 (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
875 (push crt pos)))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
876 pos))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
877 (bk
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
878 (intern
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
879 ;; 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
880 ;; 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
881 ;; 'create-repo method.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
882 (completing-read
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
883 (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
884 (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
885 (repo-dir
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
886 (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
887 ;; 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
888 ;; 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
889 ;; file.
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
890 (read-file-name
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
891 (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
892 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
893 (lambda (arg)
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
894 (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
895 (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
896 (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
897 (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
898 (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
899 (throw 'found bk))))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
900
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
901 (defun vc-responsible-backend (file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
902 "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
903
105730
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
904 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
905 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
906 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
907 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
908 (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
909 (catch 'found
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
910 ;; 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
911 ;; 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
912 (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
913 (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
914 (throw 'found backend))))
414178e8f10d (vc-responsible-backend): Throw an error if not backend is
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105695
diff changeset
915 (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
916
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
917 (defun vc-expand-dirs (file-or-dir-list)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
918 "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
919 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
920 (let ((flattened '()))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
921 (dolist (node file-or-dir-list)
95322
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
922 (when (file-directory-p node)
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
923 (vc-file-tree-walk
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
924 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
925 (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
926 (nreverse flattened)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
927
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
928 (defvar vc-dir-backend)
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
929 (defvar log-view-vc-backend)
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
930 (defvar diff-vc-backend)
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
931
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
932 (defun vc-deduce-backend ()
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
933 (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
934 ((derived-mode-p 'log-view-mode) log-view-vc-backend)
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
935 ((derived-mode-p 'diff-mode) diff-vc-backend)
111517
275f265c56c5 * lisp/vc/vc.el (vc-deduce-backend): Use default-directory in shell-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110748
diff changeset
936 ;; Maybe we could even use comint-mode rather than shell-mode?
275f265c56c5 * lisp/vc/vc.el (vc-deduce-backend): Use default-directory in shell-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110748
diff changeset
937 ((derived-mode-p 'dired-mode 'shell-mode 'compilation-mode)
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
938 (vc-responsible-backend default-directory))
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
939 (vc-mode (vc-backend buffer-file-name))))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
940
96203
30bbe1648bcf * vc.el:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96202
diff changeset
941 (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
942 (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
943
96256
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
944 (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
945 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
946 "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
947
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 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
949 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
950 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
951 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
952 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
953 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
954 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
955
a56e02fe83fc * vc-dir.el (vc-dir-marked-only-files-and-states): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96215
diff changeset
956 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
957 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
958 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
959 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
960 current buffer."
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
961 ;; 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
962 ;; 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
963 (let (backend)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
964 (cond
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
965 ((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
966 (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
967 ((derived-mode-p 'dired-mode)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
968 (if observer
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
969 (vc-dired-deduce-fileset)
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
970 (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
971 ((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
972 (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
973 (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
974 (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
975 (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
976 (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
977 (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
978 ((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
979 ;; FIXME: Why this test? --Stef
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
980 (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
981 (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
982 (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
983 (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
984 (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
985 (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
986 ((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
987 (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
988 ((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
989 (if state-model-only-files
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
990 (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
991 (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
992 (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
993 (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
994 nil)
105745
0a74e9b3065f (vc-backend-for-registration): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105730
diff changeset
995 (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
996 (list buffer-file-name))))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
997 (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
998
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
999 (defun vc-dired-deduce-fileset ()
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
1000 (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
1001 (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
1002 (list backend
111517
275f265c56c5 * lisp/vc/vc.el (vc-deduce-backend): Use default-directory in shell-mode
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110748
diff changeset
1003 (dired-map-over-marks (dired-get-filename nil t) nil))))
106159
f5e8e91b23bf (vc-deduce-fileset): Allow non-state changing operations
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106060
diff changeset
1004
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1005 (defun vc-ensure-vc-buffer ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1006 "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
1007 (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
1008 ((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
1009 (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
1010 (t
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1011 (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
1012 (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
1013 ;; 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
1014 ;; current buffer are the same buffer.
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1015 (not (eq vc-parent-buffer (current-buffer))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1016 (set-buffer vc-parent-buffer))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1017 (if (not buffer-file-name)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1018 (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
1019 (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
1020 (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
1021
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1022 ;;; 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
1023 ;; 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
1024 ;; 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
1025
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1026 (defsubst vc-editable-p (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1027 "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
1028 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1029 (and backend
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1030 (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
1031 (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
1032
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1033 (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
1034 "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
1035 (or
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1036 (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
1037 (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
1038
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1039 ;; Here's the major entry point.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1040
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1041 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1042 (defun vc-next-action (verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1043 "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
1044 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
1045
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1046 For locking systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1047 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
1048 control.
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1049 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
1050 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
1051 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
1052 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
1053 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
1054 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
1055 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
1056 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
1057 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
1058 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
1059 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
1060 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
1061
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1062 For merging systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1063 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
1064 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
1065 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
1066 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
1067 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
1068 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
1069 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
1070 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
1071 merge in the changes into your working copy."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1072 (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
1073 (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
1074 (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
1075 (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
1076 (fileset-only-files (nth 2 vc-fileset))
94878
112212c5e23c Comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94861
diff changeset
1077 ;; 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
1078 (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
1079 ;; 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
1080 ;; 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
1081 (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
1082
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1083 ;; Do the right thing
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1084 (cond
94538
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1085 ((eq state 'missing)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1086 (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
1087 ((eq state 'ignored)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1088 (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
1089 ((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
1090 (vc-register nil vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1091 ;; 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
1092 ((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
1093 (cond
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1094 (verbose
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1095 ;; 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
1096 (let* ((revision
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1097 (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
1098 (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
1099 (if (member
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1100 revision-downcase
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1101 (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
1102 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
1103 (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
1104 (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
1105 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1106 (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
1107 ((not (eq model 'implicit))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1108 ;; check the files out
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1109 (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
1110 (t
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1111 ;; do nothing
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1112 (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
1113 ;; 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
1114 ((vc-compatible-state state 'edited)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1115 (let ((ready-for-commit files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1116 ;; 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
1117 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1118 (unless (file-writable-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1119 ;; Make the file+buffer read-write.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1120 (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
1121 (error "Aborted"))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1122 (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
1123 (let ((visited (get-file-buffer file)))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1124 (when visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1125 (with-current-buffer visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1126 (toggle-read-only -1))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1127 ;; 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
1128 (save-excursion
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1129 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1130 (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
1131 ;; 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
1132 ;; 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
1133 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1134 (vc-workfile-unchanged-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1135 ;; 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
1136 ;; 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
1137 ;; 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
1138 ;; finishing the log entry and committing.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1139 (not (and visited (buffer-modified-p))))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1140 (vc-revert-file file)
97245
855f5155ed05 (vc-next-action): Update list var correctly after delete.
Chong Yidong <cyd@stupidchicken.com>
parents: 96886
diff changeset
1141 (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
1142 ;; Remaining files need to be committed
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1143 (if (not ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1144 (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
1145 (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
1146 (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
1147 (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
1148 (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
1149 (if (member
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1150 revision-downcase
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1151 (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
1152 vc-handled-backends))
a4d2ede95fbd (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102576
diff changeset
1153 (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
1154 (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
1155 (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
1156 ;; 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
1157 ((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
1158 ;; 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
1159 ;; 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
1160 ;; 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
1161 ;; 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
1162 ;; 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
1163 ;; 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
1164 ;; 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
1165 ;; 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
1166 ;; 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
1167 ;; 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
1168 ;; 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
1169 ;; 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
1170 (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
1171 (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
1172 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
1173 (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
1174 (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
1175 state)))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1176 ;; conflict
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1177 ((eq state 'conflict)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1178 ;; 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
1179 ;; 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
1180 ;; 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
1181 ;; 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
1182 ;; very rarely.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1183 (vc-mark-resolved backend files))
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1184 ;; needs-update
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1185 ((eq state 'needs-update)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1186 (dolist (file files)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1187 (if (yes-or-no-p (format
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1188 "%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
1189 (file-name-nondirectory file)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1190 (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
1191 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1192 (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
1193 (vc-checkout file t)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1194 ;; needs-merge
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1195 ((eq state 'needs-merge)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1196 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1197 (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
1198 "%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
1199 (file-name-nondirectory file)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1200 (vc-maybe-resolve-conflicts
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1201 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
1202
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1203 ;; unlocked-changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1204 ((eq state 'unlocked-changes)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1205 (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
1206 (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
1207 (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
1208 (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
1209 (vc-diff-internal nil
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1210 (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
1211 (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
1212 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1213 (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
1214 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1215 (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
1216 (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
1217 (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
1218 "Claim lock retaining changes? ")))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1219 (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
1220 (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
1221 ;; 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
1222 ;; 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
1223 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1224 (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
1225 (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
1226 (if (not (yes-or-no-p
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1227 "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
1228 (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
1229 (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
1230 (vc-checkout file t)))))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1231 ;; Unknown fileset state
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1232 (t
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1233 (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
1234
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
1235 (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
1236 "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
1237 (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
1238 (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
1239 (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
1240 (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
1241 (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
1242 "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
1243 (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
1244 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
1245 (vc-call-backend backend 'create-repo))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1246
104042
47d49939ab41 (vc-dir-move-to-goal-column): Declare.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104041
diff changeset
1247 (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
1248
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1249 ;;;###autoload
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1250 (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
1251 "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
1252 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
1253 Otherwise register the current file.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1254 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
1255 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
1256
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1257 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
1258 `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
1259 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
1260 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
1261 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
1262 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1263 (interactive "P")
95946
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1264 (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
1265 (backend (car fileset-arg))
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1266 (files (nth 1 fileset-arg)))
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1267 ;; 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
1268 ;; 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
1269 ;; many VCS allow that as well.
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1270 (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
1271 (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
1272 (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
1273 (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
1274 (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
1275 (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
1276 (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
1277 (error "Aborted"))))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1278 ;; 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
1279 ;; 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
1280 (when bname
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1281 (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
1282 (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
1283 (zerop (buffer-size))
3a39d3ac157c (vc-deduce-fileset): Check if the buffer has a file.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95896
diff changeset
1284 (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
1285 (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
1286 (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
1287 (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
1288 (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
1289 (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
1290 (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
1291 (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
1292 (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
1293 comment)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1294 (mapc
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1295 (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
1296 (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
1297 ;; 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
1298 ;; 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
1299 ;; 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
1300 ;; (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
1301 ;; (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
1302 ;; (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
1303
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1304 (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
1305 files)
af4ee0cb7fb7 * vc-hooks.el (vc-stay-local-p, vc-state, vc-working-revision):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103434
diff changeset
1306 (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
1307 (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
1308 (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
1309
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1310 (defun vc-register-with (backend)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1311 "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
1312 (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
1313 (when (not (member backend vc-handled-backends))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1314 (error "Unknown back end"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1315 (let ((vc-handled-backends (list backend)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1316 (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
1317
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1318 (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
1319 "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
1320 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
1321 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1322
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1323 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
1324 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1325 (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
1326 (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
1327 (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
1328 (vc-make-version-backup file))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1329 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1330 (with-vc-properties (list file)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1331 (condition-case err
94495
027a58c5f305 (vc-checkout): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94488
diff changeset
1332 (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
1333 (file-error
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1334 ;; Maybe the backend is not installed ;-(
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1335 (when writable
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1336 (let ((buf (get-file-buffer file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1337 (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
1338 (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
1339 `((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
1340 (not writable))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1341 (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
1342 'up-to-date
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1343 'needs-update)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1344 'edited))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1345 (vc-checkout-time . ,(nth 5 (file-attributes file))))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1346 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1347 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1348
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1349 (defun vc-mark-resolved (backend files)
98337
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1350 (prog1 (with-vc-properties
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1351 files
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1352 (vc-call-backend backend 'mark-resolved files)
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1353 ;; FIXME: Is this TRTD? Might not be.
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1354 `((vc-state . edited)))
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1355 (message
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1356 (substitute-command-keys
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1357 "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
1358 Type \\[vc-next-action] to check in changes.")
98337
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1359 (if (> (length files) 1)
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1360 (format "%d files" (length files))
34fed5300274 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 98336
diff changeset
1361 "this file"))))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1362
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1363 (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
1364 "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
1365 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1366 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1367 (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
1368 (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
1369 (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
1370 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
1371 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1372 (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
1373 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1374 (list file)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1375 (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
1376 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1377 (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
1378 (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
1379 ;; 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
1380 ;; 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
1381 (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
1382 (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
1383 (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
1384 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1385 (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
1386 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1387 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1388 (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
1389
102576
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1390 (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
1391 "Check in FILES.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1392 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
1393 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
1394 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
1395 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
1396 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
1397
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1398 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
1399 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
1400
94579
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1401 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
1402 (when vc-before-checkin-hook
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1403 (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
1404 (lexical-let
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1405 ((backend backend))
ca736f834e8c (vc-checkin): Add an extra argument for the VC backend,
Dan Nicolaescu <dann@ics.uci.edu>
parents: 102554
diff changeset
1406 (vc-start-logentry
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1407 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
1408 "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
1409 "*VC-log*"
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
1410 (lambda ()
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
1411 (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
1412 (lexical-let ((rev rev))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1413 (lambda (files comment)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1414 (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
1415 ;; "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
1416 ;; 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
1417 (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
1418 (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
1419 (with-vc-properties
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1420 files
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1421 ;; 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
1422 ;; 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
1423 ;; 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
1424 (progn
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1425 (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
1426 (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
1427 `((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
1428 (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
1429 (vc-working-revision . nil)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1430 (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
1431 'vc-checkin-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1432
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1433 ;;; Additional entry points for examining version histories
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1434
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1435 ;; (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
1436 ;; "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
1437 ;; 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
1438 ;; ;; 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
1439 ;; ;; 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
1440 ;; ;; 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
1441 ;; ;; 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
1442 ;; ;; 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
1443 ;; ;; to backend-specific implementations.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1444 ;; (setq default-directory dir)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1445 ;; (vc-file-tree-walk
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1446 ;; default-directory
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1447 ;; (lambda (f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1448 ;; (vc-exec-after
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1449 ;; `(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
1450 ;; (message "Looking at %s" ',f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1451 ;; (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
1452 ;; '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
1453
109445
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1454 (defvar vc-coding-system-inherit-eol t
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1455 "When non-nil, inherit the EOL format for reading Diff output from the file.
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1456
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1457 Used in `vc-coding-system-for-diff' to determine the EOL format to use
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1458 for reading Diff output for a file. If non-nil, the EOL format is
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1459 inherited from the file itself.
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1460 Set this variable to nil if your Diff tool might use a different
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1461 EOL. Then Emacs will auto-detect the EOL format in Diff output, which
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1462 gives better results.") ;; Cf. bug#4451.
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1463
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1464 (defun vc-coding-system-for-diff (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1465 "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
1466 (or coding-system-for-read
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1467 ;; if we already have this file open,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1468 ;; use the buffer's coding system
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1469 (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
1470 (when buf (with-current-buffer buf
109445
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1471 (if vc-coding-system-inherit-eol
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1472 buffer-file-coding-system
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1473 ;; Don't inherit the EOL part of the coding-system,
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1474 ;; because some Diff tools may choose to use
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1475 ;; a different one. bug#4451.
051595eb9b58 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109302
diff changeset
1476 (coding-system-base buffer-file-coding-system)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1477 ;; 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
1478 (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
1479 ;; and a final fallback
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1480 'undecided))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1481
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1482 (defun vc-switches (backend op)
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1483 "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
1484 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
1485 OP is a symbol such as `diff'.
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1486
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
1487 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
1488 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
1489 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
1490 diff only, `diff-switches'.
98386
48cf5d8c02af (vc-switches): Give it a doc string.
Glenn Morris <rgm@gnu.org>
parents: 98337
diff changeset
1491
100171
d42aff5ca541 * align.el:
Lute Kamstra <lute@gnu.org>
parents: 99262
diff changeset
1492 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
1493 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
1494 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
1495 (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
1496 (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
1497 (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
1498 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
1499 "-switches")))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1500 (when (boundp sym) (symbol-value sym))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1501 (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
1502 (when (boundp sym) (symbol-value sym)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1503 (cond
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1504 ((eq op 'diff) diff-switches)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1505 (if (stringp switches) (list switches)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1506 ;; If not a list, return nil.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1507 ;; 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
1508 ;; 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
1509 (when (listp switches) switches))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1510
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1511 ;; Old def for compatibility with Emacs-21.[123].
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1512 (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
1513 (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
1514
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1515 (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
1516 ;; 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
1517 ;; 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
1518 (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
1519 (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
1520 (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
1521 (with-current-buffer buffer
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1522 (and messages emptyp
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1523 (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
1524 (insert (cdr messages) ".\n")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1525 (message "%s" (cdr messages))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1526 (goto-char (point-min))
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1527 (when window
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1528 (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
1529 (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
1530 (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
1531
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1532 (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
1533 "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
1534
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1535 (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
1536 "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
1537 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
1538 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
1539 (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
1540 (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
1541 (vc-delistify files))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1542 (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
1543 (or rev1 "working revision")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1544 (or rev2 "workfile"))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1545 ;; 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
1546 ;; 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
1547 ;; 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
1548 (coding-system-for-read
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1549 (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
1550 (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
1551 (message "%s" (car messages))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1552 ;; 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
1553 ;; 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
1554 ;; 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
1555 ;;
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1556 ;; 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
1557 ;; 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
1558 ;; 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
1559 ;; `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
1560 ;; 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
1561 ;; 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
1562 (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
1563 (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
1564 process-file-side-effects)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1565 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1566 (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
1567 (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
1568 (push file filtered)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1569 ;; 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
1570 ;; 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
1571 (if (or rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1572 (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
1573 ;; We regard this as "changed".
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1574 ;; Diff it against /dev/null.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1575 (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
1576 1 "diff" file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1577 (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
1578 (setq files (nreverse filtered))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1579 (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
1580 (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
1581 (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
1582 (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
1583 (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
1584 ;; 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
1585 (progn
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1586 (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
1587 nil)
85972
51aa47312c4b * ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85794
diff changeset
1588 (diff-mode)
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
1589 (set (make-local-variable 'diff-vc-backend) (car vc-fileset))
109043
50dd8d98f75b * lisp/vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
Juri Linkov <juri@jurta.org>
parents: 108971
diff changeset
1590 (set (make-local-variable 'revert-buffer-function)
50dd8d98f75b * lisp/vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
Juri Linkov <juri@jurta.org>
parents: 108971
diff changeset
1591 `(lambda (ignore-auto noconfirm)
50dd8d98f75b * lisp/vc/vc.el (vc-diff-internal): Set `revert-buffer-function'
Juri Linkov <juri@jurta.org>
parents: 108971
diff changeset
1592 (vc-diff-internal ,async ',vc-fileset ,rev1 ,rev2 ,verbose)))
86002
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1593 ;; 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
1594 ;; 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
1595 ;; 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
1596 (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
1597 (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
1598 messages)))
86100
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1599 ;; 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
1600 (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
1601 ;; 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
1602 ;; 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
1603 t)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1604
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1605 (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
1606 (cond
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1607 ((null files)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1608 (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
1609 (setq files (cadr vc-fileset))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1610 (setq backend (car vc-fileset))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1611 ((null backend) (setq backend (vc-backend (car files)))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1612 (let ((completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1613 (vc-call-backend backend 'revision-completion-table files)))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1614 (if completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1615 (completing-read prompt completion-table
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1616 nil nil initial-input nil default)
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1617 (read-string prompt initial-input nil default))))
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1618
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1619 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1620 (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
1621 "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
1622 (interactive
96046
422d57d537d7 (vc-deduce-fileset): Add arg `only-files'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95966
diff changeset
1623 (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
1624 (files (cadr vc-fileset))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1625 (backend (car vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1626 (first (car files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1627 (rev1-default nil)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1628 (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
1629 (cond
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1630 ;; 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
1631 ;; filesets, but not yet.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1632 ((/= (length files) 1)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1633 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1634 ;; 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
1635 ((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
1636 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1637 ;; 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
1638 ((not (vc-up-to-date-p first))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1639 (setq rev1-default (vc-working-revision first)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1640 ;; 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
1641 (t
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1642 (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
1643 (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
1644 (when (string= rev1-default "") (setq rev1-default nil))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1645 (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
1646 ;; 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
1647 (let* ((rev1-prompt (if rev1-default
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1648 (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
1649 rev1-default "): ")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1650 "Older revision: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1651 (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
1652 (or rev2-default "current source") "): "))
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1653 (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
1654 (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
1655 (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
1656 (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
1657 (list files rev1 rev2))))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1658 ;; 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
1659 (when (and (not rev1) rev2)
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
1660 (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
1661 ;; 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
1662 ;; 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
1663 (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
1664 (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
1665
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1666 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1667 (defun vc-diff (historic &optional not-urgent)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1668 "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
1669 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
1670 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
1671 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
1672
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1673 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
1674 saving the buffer."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1675 (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
1676 (if historic
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1677 (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
1678 (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
1679 (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
1680 (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
1681
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1682 ;;;###autoload
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1683 (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
1684 "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
1685 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
1686 fileset with the working revision.
e542aa3511d0 * vc.el (vc-root-diff): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 107677
diff changeset
1687 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
1688 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
1689
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1690 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
1691 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
1692 (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
1693 (if historic
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1694 ;; 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
1695 ;; 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
1696 ;; 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
1697 (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
1698 (when buffer-file-name (vc-buffer-sync not-urgent))
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
1699 (let ((backend (vc-deduce-backend))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1700 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
1701 (unless backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1702 (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
1703 (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
1704 (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
1705 ;; 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
1706 ;; 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
1707 ;; 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
1708 ;; relative file names work.
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1709 (let ((default-directory rootdir))
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1710 (vc-diff-internal
c4daeb1eaaf1 Fix default-directory for vc-root-diff.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107709
diff changeset
1711 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
1712 (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
1713
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
1714 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1715 (defun vc-revision-other-window (rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1716 "Visit revision REV of the current file in another window.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1717 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
1718 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
1719 (interactive
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1720 (save-current-buffer
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1721 (vc-ensure-vc-buffer)
104647
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1722 (list
ef4820f099a1 (vc-read-revision): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104621
diff changeset
1723 (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
1724 (list buffer-file-name)))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1725 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1726 (let* ((file buffer-file-name)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1727 (revision (if (string-equal rev "")
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1728 (vc-working-revision file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1729 rev)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1730 (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
1731
109302
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1732 (defun vc-find-revision (file revision &optional backend)
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1733 "Read REVISION of FILE into a buffer and return the buffer.
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1734 Use BACKEND as the VC backend if specified."
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1735 (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
1736 (filebuf (or (get-file-buffer file) (current-buffer)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1737 (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
1738 (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
1739 (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
1740 (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
1741 (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
1742 (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
1743 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1744 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1745 (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
1746 (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
1747 (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
1748 (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
1749 ;; 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
1750 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1751 (with-current-buffer filebuf
109302
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1752 (if backend
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1753 (vc-call-backend backend 'find-revision file revision outbuf)
60516122d066 Merge changes from emacs-23 branch.
Chong Yidong <cyd@stupidchicken.com>
parents: 109072
diff changeset
1754 (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
1755 (setq failed nil))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1756 (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
1757 (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
1758 (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
1759 (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
1760 (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
1761 (with-current-buffer result-buf
86410
bca8808972f0 Delete eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86370
diff changeset
1762 ;; 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
1763 ;; 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
1764 (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
1765 result-buf)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1766
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1767 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1768
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1769 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1770 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1771 "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
1772 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
1773 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1774 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1775 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1776 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1777 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1778 (widen)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1779 (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
1780 (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
1781 (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
1782 (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
1783 (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
1784 (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
1785 'header))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1786 (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
1787 (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
1788 (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
1789 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
1790 (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
1791 (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
1792 (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
1793 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1794
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1795 (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
1796 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1797 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
1798 (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
1799 (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
1800 (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
1801 (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
1802 (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
1803 (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
1804 ;; 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
1805 ;; 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
1806 ;; 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
1807 (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
1808 (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
1809 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1810 (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
1811 (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
1812 (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
1813
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
1814 (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
1815 "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
1816 ;; 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
1817 ;; 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
1818 ;; 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
1819 (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
1820 (vc-start-logentry
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1821 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
1822 "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
1823 "*VC-log*"
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
1824 (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
1825 (lexical-let ((rev rev))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1826 (lambda (files comment)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1827 (vc-call-backend backend
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1828 '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
1829
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1830 ;;;###autoload
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
1831 (defun vc-merge ()
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1832 "Perform a version control merge operation.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1833 On a distributed version control system, this runs a \"merge\"
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1834 operation to incorporate changes from another branch onto the
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
1835 current branch, prompting for an argument 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
1836
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1837 On a non-distributed version control system, this merges changes
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1838 between two revisions into the current fileset. This asks for
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1839 two revisions to merge from in the minibuffer. If the first
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1840 revision is a branch number, then merge all changes from that
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1841 branch. If the first revision is empty, merge the most recent
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1842 changes from the current branch."
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
1843 (interactive)
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1844 (let* ((vc-fileset (vc-deduce-fileset t))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1845 (backend (car vc-fileset))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1846 (files (cadr vc-fileset)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1847 (cond
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1848 ;; If a branch-merge operation is defined, use it.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1849 ((vc-find-backend-function backend 'merge-branch)
111685
411dce7ee068 Always issue a full prompt in vc-merge-branch operation.
Chong Yidong <cyd@stupidchicken.com>
parents: 111679
diff changeset
1850 (vc-call-backend backend 'merge-branch))
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1851 ;; Otherwise, do a per-file merge.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1852 ((vc-find-backend-function backend 'merge)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1853 (vc-buffer-sync)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1854 (dolist (file files)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1855 (let* ((state (vc-state file))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1856 first-revision second-revision status)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1857 (cond
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1858 ((stringp state) ;; Locking VCses only
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1859 (error "File %s is locked by %s" file state))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1860 ((not (vc-editable-p file))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1861 (vc-checkout file t)))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1862 (setq first-revision
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1863 (vc-read-revision
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1864 (concat "Merge " file
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1865 "from branch or revision "
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1866 "(default news on current branch): ")
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1867 (list file)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1868 backend))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1869 (cond
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1870 ((string= first-revision "")
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1871 (setq status (vc-call-backend backend 'merge-news file)))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1872 (t
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1873 (if (not (vc-branch-p first-revision))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1874 (setq second-revision
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1875 (vc-read-revision
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1876 "Second revision: "
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1877 (list file) backend nil
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1878 ;; FIXME: This is CVS/RCS/SCCS specific.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1879 (concat (vc-branch-part first-revision) ".")))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1880 ;; We want to merge an entire branch. Set revisions
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1881 ;; accordingly, so that vc-BACKEND-merge understands us.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1882 (setq second-revision first-revision)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1883 ;; first-revision must be the starting point of the branch
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1884 (setq first-revision (vc-branch-part first-revision)))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1885 (setq status (vc-call-backend backend 'merge file
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1886 first-revision second-revision))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1887 (vc-maybe-resolve-conflicts file status "WORKFILE" "MERGE SOURCE"))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1888 (t
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1889 (error "Sorry, merging is not implemented for %s" backend)))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
1890
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1891
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1892 (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
1893 (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
1894 (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
1895 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
1896 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1897
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1898 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
1899 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1900
108009
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1901 ;; 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
1902 ;; 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
1903 ;; 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
1904 ;; 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
1905 ;; 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
1906 ;; 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
1907 ;; `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
1908 ;; 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
1909 ;; 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
1910 (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
1911 "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
1912 (interactive)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1913 (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
1914 (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
1915 (error "No VC backend")))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1916 (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
1917 'conflicted-files default-directory)))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1918 ;; 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
1919 (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
1920 (if (null files)
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1921 (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
1922 (find-file (pop files))
17d3324f96dd Make the log-edit comments use RFC822 format throughout.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107815
diff changeset
1923 (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
1924 (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
1925
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1926 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1927
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1928 (defun vc-tag-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1929 "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
1930 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
1931 \(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
1932 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
1933 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1934 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1935 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1936 (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
1937 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1938 (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
1939 (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
1940 (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
1941 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1942
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1943 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1944 (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
1945 "Descending recursively from DIR, make a tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1946 For each registered file, the working revision becomes part of
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1947 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
1948 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
1949 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
1950 (interactive
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1951 (let ((granularity
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1952 (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
1953 'revision-granularity)))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1954 (list
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1955 (if (eq granularity 'repository)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1956 ;; 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
1957 ;; 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
1958 default-directory
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1959 (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
1960 (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
1961 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
1962 (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
1963 (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
1964 (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
1965 'create-tag dir name branchp)
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1966 (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
1967 (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
1968
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1969 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
1970 (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
1971 "Descending recursively from DIR, retrieve the tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1972 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
1973 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
1974 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
1975 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
1976 (interactive
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1977 (let ((granularity
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1978 (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
1979 'revision-granularity)))
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1980 (list
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1981 (if (eq granularity 'repository)
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1982 ;; 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
1983 ;; 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
1984 default-directory
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1985 (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
1986 (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
1987 (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
1988 (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
1989 (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
1990 (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
1991 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
1992 (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
1993 (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
1994 'retrieve-tag dir name update)
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1995 (vc-resynch-buffer dir t t t)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
1996 (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
1997
108919
6e9243fe4510 Improve VC create/retrieve tag/branch.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108843
diff changeset
1998
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1999 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2000
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2001 ;; 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
2002 ;; 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
2003 ;; `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
2004 ;; 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
2005 (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
2006 "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
2007 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
2008 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
2009 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
2010
106383
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2011 (defvar log-view-vc-fileset)
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2012
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2013 (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
2014 (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
2015 (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
2016 (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
2017 (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
2018 (limit limit))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2019 (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
2020 :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
2021 (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
2022 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
2023 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
2024 :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
2025 "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
2026 (widget-insert " ")
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2027 (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
2028 :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
2029 (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
2030 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
2031 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
2032 :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
2033 "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
2034 (widget-setup)))
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2035
106230
eb5b55788509 (vc-print-log-internal): Make `limit' optional for better
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106159
diff changeset
2036 (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
2037 &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
2038 ;; 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
2039 ;; 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
2040 ;; 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
2041 (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
2042 (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
2043 (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
2044 type
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
2045 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
2046 (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
2047 (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
2048 (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
2049 (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
2050 (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
2051 (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
2052 (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
2053 (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
2054 (lexical-let
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2055 ((working-revision working-revision)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2056 (backend backend)
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2057 (limit limit)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2058 (shortlog vc-short-log)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2059 (files files)
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2060 (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
2061 (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
2062 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
2063 (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
2064 (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
2065 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
2066 (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
2067 (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
2068 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
2069 (lambda (bk)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2070 (vc-call-backend bk 'show-log-entry working-revision))
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2071 (lambda (ignore-auto noconfirm)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2072 (vc-print-log-internal backend files working-revision is-start-revision limit))))))
106060
2f9ecf376c7a * vc.el (vc-log-show-limit): Default to 2000.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106033
diff changeset
2073
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2074 (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
2075 "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
2076 (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
2077
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2078 (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
2079 buffer-name
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2080 files
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2081 type
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2082 backend-func
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2083 setup-buttons-func
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2084 goto-location-func
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2085 rev-buff-func)
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2086 (let (retval)
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2087 (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
2088 (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
2089 (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
2090 (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
2091 (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
2092 ;; 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
2093 ;; 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
2094 (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
2095 (set (make-local-variable 'log-view-vc-backend) backend)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2096 (set (make-local-variable 'log-view-vc-fileset) files)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2097 (set (make-local-variable 'revert-buffer-function)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2098 rev-buff-func))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2099 (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
2100 `(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
2101 (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
2102 (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
2103 (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
2104 (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
2105 (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
2106
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2107 (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
2108 (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
2109 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
2110 (lexical-let
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2111 ((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
2112 (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
2113 (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
2114 (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
2115 (lambda (bk)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2116 (goto-char (point-min)))
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2117 (lexical-let
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2118 ((backend backend)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2119 (remote-location remote-location)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2120 (buffer-name buffer-name)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2121 (type type))
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2122 (lambda (ignore-auto noconfirm)
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2123 (vc-incoming-outgoing-internal backend remote-location buffer-name type)))))
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2124
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2125 ;;;###autoload
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2126 (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
2127 "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
2128 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
2129 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
2130 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
2131
6dc6d78ccf45 * vc.el (vc-print-log, vc-print-root-log): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106888
diff changeset
2132 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
2133 WORKING-REVISION and LIMIT."
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2134 (interactive
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2135 (cond
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2136 (current-prefix-arg
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2137 (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
2138 nil nil nil))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2139 (lim (string-to-number
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2140 (read-from-minibuffer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2141 "Limit display (unlimited: 0): "
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2142 (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
2143 nil nil nil))))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2144 (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
2145 (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
2146 (list rev lim)))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2147 (t
106399
065925e07677 Limit the number of log entries displayed by default.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106383
diff changeset
2148 (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
2149 (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
2150 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2151 (files (cadr vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2152 (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
2153 (vc-print-log-internal backend files working-revision nil limit)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2154
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2155 ;;;###autoload
106033
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2156 (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
2157 "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
2158 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
2159 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
2160 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
2161 (interactive
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2162 (cond
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2163 (current-prefix-arg
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2164 (let ((lim (string-to-number
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2165 (read-from-minibuffer
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2166 "Limit display (unlimited: 0): "
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2167 (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
2168 nil nil nil))))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2169 (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
2170 (list lim)))
2bed02fa3041 * vc.el (vc-log-show-limit): New variable.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105745
diff changeset
2171 (t
106399
065925e07677 Limit the number of log entries displayed by default.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106383
diff changeset
2172 (list (when (> vc-log-show-limit 0) vc-log-show-limit)))))
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
2173 (let ((backend (vc-deduce-backend))
105010
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2174 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
2175 (unless backend
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2176 (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
2177 (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
2178 (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
2179 (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
2180
b3c2589ed19e * vc.el (top): print-log method now takes an optional SHORTLOG
Dan Nicolaescu <dann@ics.uci.edu>
parents: 104711
diff changeset
2181 ;;;###autoload
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2182 (defun vc-log-incoming (&optional remote-location)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2183 "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION.
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2184 When called interactively with a prefix argument, prompt for REMOTE-LOCATION.."
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2185 (interactive
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2186 (when current-prefix-arg
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2187 (list (read-string "Remote location (empty for default): "))))
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
2188 (let ((backend (vc-deduce-backend))
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2189 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
2190 (unless backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2191 (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
2192 (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
2193
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2194 ;;;###autoload
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2195 (defun vc-log-outgoing (&optional remote-location)
110748
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2196 "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION.
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2197 When called interactively with a prefix argument, prompt for REMOTE-LOCATION."
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2198 (interactive
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2199 (when current-prefix-arg
2279efb0250e Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 110741
diff changeset
2200 (list (read-string "Remote location (empty for default): "))))
109072
c70ff40ac4ce Allow global VC ops like `C-x v D' in Diff and Log-View buffers.
Chong Yidong <cyd@stupidchicken.com>
parents: 109043
diff changeset
2201 (let ((backend (vc-deduce-backend))
107795
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2202 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
2203 (unless backend
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2204 (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
2205 (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
2206
d47e1fb98df3 Add new VC methods: vc-log-incoming and vc-log-outgoing.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 107794
diff changeset
2207 ;;;###autoload
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
2208 (defun vc-revert ()
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2209 "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
2210 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
2211 to the working revision (except for keyword expansion)."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2212 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2213 (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
2214 (files (cadr vc-fileset)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2215 ;; 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
2216 ;; 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
2217 ;; 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
2218 ;; 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
2219 (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
2220 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2221 (dolist (file files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2222 (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
2223 (when (and buf (buffer-modified-p buf))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2224 (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
2225 (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
2226 (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
2227 (error "Revert canceled"))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2228 (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
2229 (unless (yes-or-no-p
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2230 (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
2231 (let ((str (vc-delistify files))
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2232 (nfiles (length files)))
99262
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2233 (if (< (length str) 50)
bc878f998f43 (vc-revert): Limit the length of the query string.
Chong Yidong <cyd@stupidchicken.com>
parents: 99159
diff changeset
2234 str
106383
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2235 (format "%d file%s" nfiles
09d0cce6cdd3 (log-view-vc-backend, log-view-vc-fileset): Declare.
Glenn Morris <rgm@gnu.org>
parents: 106361
diff changeset
2236 (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
2237 (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
2238 (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
2239 (kill-buffer "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2240 (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
2241 (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
2242 (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
2243 (message "Reverting %s...done" (vc-delistify files)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2244
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2245 ;;;###autoload
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2246 (defun vc-rollback ()
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2247 "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
2248 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
2249 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
2250 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2251 (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
2252 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2253 (files (cadr vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2254 (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
2255 (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
2256 (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
2257 (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
2258 (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
2259 ;; 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
2260 (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
2261 (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
2262 ;; 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
2263 ;; 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
2264 ;; 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
2265 ;; 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
2266 (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
2267 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2268 (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
2269 (when (buffer-modified-p (get-file-buffer file))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2270 (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
2271 (when (not (vc-up-to-date-p file))
105170
f8ba8d6fd250 Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 105010
diff changeset
2272 (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
2273 ;; Accumulate changes associated with the fileset
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2274 (vc-setup-buffer "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2275 (not-modified)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2276 (message "Finding changes...")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2277 (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
2278 ;; 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
2279 (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
2280 (car files) tip)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2281 (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
2282 ;; Display changes
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2283 (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
2284 (error "Rollback canceled"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2285 (delete-windows-on "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2286 (kill-buffer"*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2287 ;; Do the actual reversions
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2288 (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
2289 (with-vc-properties
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2290 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2291 (vc-call-backend backend 'rollback files)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2292 `((vc-state . ,'up-to-date)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2293 (vc-checkout-time . , (nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2294 (vc-working-revision . nil)))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2295 (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
2296 (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
2297
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2298 ;;;###autoload
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2299 (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
2300
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2301 ;;;###autoload
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2302 (defun vc-update (&optional arg)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2303 "Update the current fileset or branch.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2304 On a distributed version control system, this runs a \"pull\"
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2305 operation to update the current branch, prompting for an argument
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2306 list if required. Optional prefix ARG forces a prompt.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2307
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2308 On a non-distributed version control system, update the current
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2309 fileset to the tip revisions. For each unchanged and unlocked
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2310 file, this simply replaces the work file with the latest revision
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2311 on its branch. If the file contains changes, any changes in the
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2312 tip revision are merged into the working file."
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2313 (interactive "P")
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2314 (let* ((vc-fileset (vc-deduce-fileset t))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
2315 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2316 (files (cadr vc-fileset)))
111679
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2317 (cond
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2318 ;; If a pull operation is defined, use it.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2319 ((vc-find-backend-function backend 'pull)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2320 (vc-call-backend backend 'pull arg))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2321 ;; If VCS has `merge-news' functionality (CVS and SVN), use it.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2322 ((vc-find-backend-function backend 'merge-news)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2323 (save-some-buffers ; save buffers visiting files
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2324 nil (lambda ()
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2325 (and (buffer-modified-p)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2326 (let ((file (buffer-file-name)))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2327 (and file (member file files))))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2328 (dolist (file files)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2329 (if (vc-up-to-date-p file)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2330 (vc-checkout file nil t)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2331 (vc-maybe-resolve-conflicts
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2332 file (vc-call-backend backend 'merge-news file)))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2333 ;; For a locking VCS, check out each file.
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2334 ((eq (vc-checkout-model backend files) 'locking)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2335 (dolist (file files)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2336 (if (vc-up-to-date-p file)
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2337 (vc-checkout file nil t))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2338 (t
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2339 (error "VC update is unsupported for `%s'" backend)))))
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2340
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2341 ;;;###autoload
33ed3cf8260b Initial support for unified DVCS pull and merge.
Chong Yidong <cyd@stupidchicken.com>
parents: 111517
diff changeset
2342 (defalias 'vc-pull 'vc-update)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2343
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2344 (defun vc-version-backup-file (file &optional rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2345 "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
2346 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
2347 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
2348 its name; otherwise return nil."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2349 (when (vc-call make-version-backups-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2350 (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
2351 (if (file-exists-p backup-file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2352 backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2353 ;; 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
2354 (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
2355 (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
2356 backup-file)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2357
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2358 (defun vc-revert-file (file)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2359 "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
2360 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2361 (list file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2362 (let ((backup-file (vc-version-backup-file file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2363 (when backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2364 (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
2365 (vc-delete-automatic-version-backups file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2366 (vc-call revert file backup-file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2367 `((vc-state . up-to-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2368 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2369 (vc-resynch-buffer file t t))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2370
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2371 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2372 (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
2373 "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
2374 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
2375 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
2376 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
2377 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
2378 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
2379 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2380 (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
2381 (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
2382 (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
2383 (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
2384 (backends nil))
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2385 (unless crt-bk
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2386 (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
2387 ;; Find the registered backends.
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2388 (dolist (crt vc-handled-backends)
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2389 (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
2390 (not (eq crt-bk crt)))
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2391 (push crt backends)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2392 ;; Find the next backend.
96123
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2393 (let ((def (car backends))
7742c3c06407 * vc.el (vc-switch-backend): Simplify.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96122
diff changeset
2394 (others backends))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2395 (cond
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2396 ((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
2397 (current-prefix-arg
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2398 (intern
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2399 (upcase
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2400 (completing-read
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2401 (format "Switch to backend [%s]: " def)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2402 (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
2403 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
2404 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2405 (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
2406 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2407 (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
2408 ;; 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
2409 (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
2410 (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
2411 (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
2412 (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
2413
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2414 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2415 (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
2416 "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
2417 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
2418 \(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
2419 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
2420 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
2421 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
2422 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
2423 \(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
2424 (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
2425 (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
2426 (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
2427 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2428 (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
2429 ;; 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
2430 (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
2431 (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
2432 (comment nil))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2433 (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
2434 (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
2435 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2436 (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
2437 ;; `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
2438 (vc-switch-backend file old-backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2439 (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
2440 (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
2441 (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
2442 ;; 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
2443 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2444 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2445 (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
2446 (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
2447 ;; 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
2448 ;; 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
2449 ;; 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
2450 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2451 (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
2452 '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
2453 (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
2454 (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
2455 (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
2456 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2457 (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
2458 (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
2459 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2460 (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
2461 (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
2462 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2463 (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
2464 (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
2465 (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
2466 (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
2467 (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
2468 (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
2469 (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
2470 (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
2471
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2472 (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
2473 "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
2474 (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
2475 (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
2476 (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
2477 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2478 ;; 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
2479 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2480 (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
2481 templates)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2482 (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
2483 (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
2484 (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
2485 (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
2486 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2487 (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
2488 ;; 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
2489 (dolist (f masters)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2490 (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
2491 (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
2492 ;; 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
2493 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2494 (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
2495 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2496 (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
2497 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2498
103153
ce30850e6e3f (vc-delete-file): Add autoload cookie (bug#3209).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 102680
diff changeset
2499 ;;;###autoload
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2500 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2501 "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
2502 (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
2503 (setq file (expand-file-name file))
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2504 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2505 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2506 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2507 (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
2508 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2509 (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
2510 (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
2511 (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
2512 (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
2513 (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
2514 (when (eq state 'edited)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2515 (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
2516 (when (eq state 'conflict)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2517 (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
2518 (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
2519 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2520 (error "Abort!"))
94499
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2521 (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
2522 (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
2523 (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
2524 (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
2525 (backup-buffer))))
95895
2ab93a71b21a (vc-delete-file): Bound default-directory before calling
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95853
diff changeset
2526 ;; 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
2527 ;; 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
2528 (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
2529 (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
2530 ;; 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
2531 (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
2532 ;; 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
2533 (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
2534 ;; 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
2535 ;; updated after this.
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2536 (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
2537
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2538 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2539 (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
2540 "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
2541 (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
2542 ;; 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
2543 (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
2544 (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
2545 (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
2546 (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
2547 (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
2548 (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
2549 (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
2550 (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
2551 (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
2552 (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
2553 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2554 (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
2555 (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
2556 (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
2557 (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
2558 (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
2559 (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
2560 ;; 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
2561 (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
2562 ;; ?? 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
2563 ;; 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
2564 ;; 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
2565 (when oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2566 (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
2567 (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
2568 (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
2569 (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
2570 (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
2571
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2572 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2573 (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
2574 "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
2575 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
2576 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2577
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2578 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
2579
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2580 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
2581 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
2582 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
2583
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2584 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
2585 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2586 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2587 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2588 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2589 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2590 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2591 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2592 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2593 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2594 (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
2595 (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
2596 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2597 (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
2598 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2599 (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
2600 ;; 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
2601 ;; 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
2602 ;; 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
2603 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
2604 (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
2605 '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
2606
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2607 ;; 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
2608 ;; 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
2609 ;; it is used in code below.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2610 (defun vc-branch-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2611 "Return t if REV is a branch revision."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2612 (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
2613
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2614 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2615 (defun vc-branch-part (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2616 "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
2617 (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
2618 (when index
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2619 (substring rev 0 index))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2620
97936
c2f756ba4557 (vc-default-previous-version): Move alias here from vc-hooks, and fix
Glenn Morris <rgm@gnu.org>
parents: 97245
diff changeset
2621 (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
2622 '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
2623
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2624 (defun vc-default-responsible-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2625 "Indicate whether BACKEND is reponsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2626 The default is to return nil always."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2627 nil)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2628
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2629 (defun vc-default-could-register (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2630 "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
2631 The default implementation returns t for all files."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2632 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2633
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2634 (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
2635 "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
2636 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
2637 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
2638 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2639
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2640 (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
2641
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2642 (defun vc-default-find-revision (backend file rev buffer)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2643 "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
2644 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
2645 to provide the `find-revision' operation instead."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2646 (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
2647 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2648 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2649 (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
2650 (with-current-buffer buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2651 (insert-file-contents-literally tmpfile)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2652 (delete-file tmpfile))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2653
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2654 (defun vc-default-rename-file (backend old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2655 (condition-case nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2656 (add-name-to-file old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2657 (error (rename-file old new)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2658 (vc-delete-file old)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2659 (with-current-buffer (find-file-noselect new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2660 (vc-register)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2661
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2662 (defalias 'vc-default-check-headers 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2663
107485
8d62d5ccf793 * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry.
Glenn Morris <rgm@gnu.org>
parents: 107430
diff changeset
2664 (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
2665
107430
1918e70c8b37 Add special markup processing for commit logs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 106888
diff changeset
2666 (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
2667
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2668 (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
2669
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2670 (defun vc-default-show-log-entry (backend rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2671 (with-no-warnings
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2672 (log-view-goto-rev rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2673
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2674 (defun vc-default-comment-history (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2675 "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
2676 (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
2677 (with-current-buffer "*vc*"
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2678 (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
2679 (buffer-string))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2680
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2681 (defun vc-default-receive-file (backend file rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2682 "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
2683 (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
2684
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2685 (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
2686 (if (string= name "")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2687 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2688 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2689 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2690 (lambda (f) (and
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2691 (vc-up-to-date-p f)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2692 (vc-error-occurred
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2693 (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
2694 (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
2695 (let ((result (vc-tag-precondition dir)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2696 (if (stringp result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2697 (error "File %s is locked" result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2698 (setq update (and (eq result 'visited) update))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2699 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2700 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2701 (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
2702 (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
2703 (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
2704
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2705 (defun vc-default-revert (backend file contents-done)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2706 (unless contents-done
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2707 (let ((rev (vc-working-revision file))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2708 (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
2709 (message "Checking out %s..." file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2710 (let ((failed t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2711 (backup-name (car (find-backup-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2712 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2713 (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
2714 (unless (file-writable-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2715 (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
2716 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2717 (let ((coding-system-for-read 'no-conversion)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2718 (coding-system-for-write 'no-conversion))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2719 (with-temp-file file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2720 (let ((outbuf (current-buffer)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2721 ;; 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
2722 (with-current-buffer file-buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2723 (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
2724 (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
2725 file rev outbuf)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2726 (setq failed nil))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2727 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2728 (if failed
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2729 (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
2730 (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
2731 (message "Checking out %s...done" file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2732
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2733 (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
2734 (defalias 'vc-default-mark-resolved 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2735
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2736 (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
2737 (funcall update-function
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2738 (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
2739
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2740 (defun vc-check-headers ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2741 "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
2742 (interactive)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2743 (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
2744
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2745
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2746
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2747 ;; 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
2748
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
2749 (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
2750 (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
2751 (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
2752 (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
2753
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2754 (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
2755 "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
2756 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
2757 (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
2758 (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
2759
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2760 (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
2761 (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
2762 (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
2763 (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
2764 (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
2765 (mapcar
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2766 (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
2767 (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
2768 (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
2769 (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
2770 (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
2771 (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2772 (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
2773 (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
2774 (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
2775
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2776 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2777
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
2778 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2779 ;;; vc.el ends here