annotate doc/emacs/maintaining.texi @ 112058:053702b1e98a

Minor doc fix for manual; bug#7674 * doc/emacs/maintaining.texi: Move inclusion of emerge after EDE, so that it matches its position in the menu.
author Glenn Morris <rgm@gnu.org>
date Sat, 18 Dec 2010 13:28:51 -0800
parents 6e3b84ac704d
children 40af77a50adc 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 103843
diff changeset
3 @c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
100257
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
4 @c Free Software Foundation, Inc.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @c See file emacs.texi for copying conditions.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 @node Maintaining, Abbrevs, Building, Top
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 @chapter Maintaining Large Programs
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 This chapter describes Emacs features for maintaining large
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
10 programs.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
12 @menu
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
13 * Version Control:: Using version control systems.
109262
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
14 * Change Log:: Maintaining a change history for your program.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
15 * Tags:: Go directly to any function in your program in one
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
16 command. Tags remembers which file it is in.
107974
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
17 * EDE:: An integrated development environment for Emacs.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 @ifnottex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 * Emerge:: A convenient way of merging two versions of a program.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 @end ifnottex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 @end menu
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
23 @node Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
24 @section Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
25 @cindex version control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
26
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
27 A @dfn{version control system} is a program that can record multiple
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
28 versions of a source file, storing information such as the creation
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
29 time of each version, who made it, and a description of what was
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
30 changed.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
31
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
32 The Emacs version control interface is called @dfn{VC}. VC commands
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
33 work with several different version control systems; currently, it
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
34 supports GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
35 SCCS/CSSC, and Subversion. Of these, the GNU project distributes CVS,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
36 Arch, RCS, and Bazaar.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
37
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
38 VC is enabled automatically whenever you visit a file governed by a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
39 version control system. To disable VC entirely, set the customizable
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
40 variable @code{vc-handled-backends} to @code{nil}
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
41 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
42 (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
43 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
44 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
45 (@pxref{Customizing VC}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
46 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
47
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
48 @menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
49 * Introduction to VC:: How version control works in general.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
50 * VC Mode Line:: How the mode line shows version control status.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
51 * Basic VC Editing:: How to edit a file under version control.
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
52 * Log Buffer:: Features available in log entry buffers.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
53 * Old Revisions:: Examining and comparing old versions.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
54 * Secondary VC Commands:: The commands used a little less frequently.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
55 * VC Directory Mode:: Listing files managed by version control.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
56 * Branches:: Multiple lines of development.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
57 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
58 * Remote Repositories:: Efficient access to remote CVS servers.
103843
ca0983922055 (Version Control, Introduction to VC): End menu descriptions with a period.
Glenn Morris <rgm@gnu.org>
parents: 103792
diff changeset
59 * Revision Tags:: Symbolic names for revisions.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
60 * Miscellaneous VC:: Various other commands and features of VC.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
61 * Customizing VC:: Variables that change VC's behavior.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
62 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
63 @end menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
64
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
65 @node Introduction to VC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
66 @subsection Introduction to Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
67
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
68 VC allows you to use a version control system from within Emacs,
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
69 integrating the version control operations smoothly with editing. It
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
70 provides a uniform interface for common operations in many version
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
71 control operations.
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
72
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
73 Some uncommon or intricate version control operations, such as
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
74 altering repository settings, are not supported in VC. You should
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
75 perform such tasks outside Emacs, e.g. via the command line.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
76
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
77 This section provides a general overview of version control, and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
78 describes the version control systems that VC supports. You can skip
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
79 this section if you are already familiar with the version control system
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
80 you want to use.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
81
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
82 @menu
103843
ca0983922055 (Version Control, Introduction to VC): End menu descriptions with a period.
Glenn Morris <rgm@gnu.org>
parents: 103792
diff changeset
83 * Why Version Control?:: Understanding the problems it addresses.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
84 * Version Control Systems:: Supported version control back-end systems.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
85 * VCS Concepts:: Words and concepts related to version control.
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
86 * VCS Merging:: How file conflicts are handled.
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
87 * VCS Changesets:: How changes are grouped.
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
88 * VCS Repositories:: Where version control repositories are stored.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
89 * Types of Log File:: The VCS log in contrast to the ChangeLog.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
90 @end menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
91
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
92 @node Why Version Control?
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
93 @subsubsection Understanding the problems it addresses
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
94
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
95 Version control systems provide you with three important
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
96 capabilities:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
97
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
98 @itemize @bullet
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
99 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
100 @dfn{Reversibility}: the ability to back up to a previous state if you
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
101 discover that some modification you did was a mistake or a bad idea.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
102
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
103 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
104 @dfn{Concurrency}: the ability to have many people modifying the same
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
105 collection of files knowing that conflicting modifications can be
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
106 detected and resolved.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
107
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
108 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
109 @dfn{History}: the ability to attach historical data to your data,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
110 such as explanatory comments about the intention behind each change to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
111 it. Even for a programmer working solo, change histories are an
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
112 important aid to memory; for a multi-person project, they are a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
113 vitally important form of communication among developers.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
114 @end itemize
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
115
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
116 @node Version Control Systems
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
117 @subsubsection Supported Version Control Systems
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
118
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
119 @cindex back end (version control)
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
120 VC currently works with many different version control systems,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
121 which it refers to as @dfn{back ends}:
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
122
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
123 @itemize @bullet
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
124
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
125 @cindex SCCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
126 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
127 SCCS was the first version control system ever built, and was long ago
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
128 superseded by more advanced ones. VC compensates for certain features
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
129 missing in SCCS (e.g., tag names for releases) by implementing them
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
130 itself. Other VC features, such as multiple branches, are simply
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
131 unavailable. Since SCCS is non-free, we recommend avoiding it.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
132
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
133 @cindex CSSC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
134 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
135 CSSC is a free replacement for SCCS. You should use CSSC only if, for
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
136 some reason, you cannot use a more recent and better-designed version
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
137 control system.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
138
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
139 @cindex RCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
140 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
141 RCS is the free version control system around which VC was initially
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
142 built. It is relatively primitive: it cannot be used over the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
143 network, and works at the level of individual files. Almost
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
144 everything you can do with RCS can be done through VC.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
145
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
146 @cindex CVS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
147 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
148 CVS is the free version control system that was, until recently (circa
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
149 2008), used by the majority of free software projects. Nowadays, it
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
150 is slowly being superseded by newer systems. CVS allows concurrent
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
151 multi-user development either locally or over the network. Unlike
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
152 newer systems, it lacks support for atomic commits and file
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
153 moving/renaming. VC supports all basic editing operations under CVS.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
154
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
155 @cindex SVN
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
156 @cindex Subversion
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
157 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
158 Subversion (SVN) is a free version control system designed to be
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
159 similar to CVS but without its problems (e.g., it supports atomic
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
160 commits of filesets, and versioning of directories, symbolic links,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
161 meta-data, renames, copies, and deletes).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
162
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
163 @cindex GNU Arch
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
164 @cindex Arch
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
165 @item
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
166 GNU Arch is one of the earliest @dfn{distributed} version control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
167 systems (the other being Monotone). @xref{VCS Concepts}, for a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
168 description of distributed version control systems. It is no longer
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
169 under active development, and has been deprecated in favor of Bazaar.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
170
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
171 @cindex git
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
172 @item
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
173 Git is a distributed version control system originally invented by
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
174 Linus Torvalds to support development of Linux (his kernel). VC
111751
26fa428c5896 * maintaining.texi (Version Control Systems): Fix repeated sentence.
Chong Yidong <cyd@stupidchicken.com>
parents: 111749
diff changeset
175 supports many common git operations, but others, such as repository
26fa428c5896 * maintaining.texi (Version Control Systems): Fix repeated sentence.
Chong Yidong <cyd@stupidchicken.com>
parents: 111749
diff changeset
176 syncing, must be done from the command line.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
177
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
178 @cindex hg
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
179 @cindex Mercurial
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
180 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
181 Mercurial (hg) is a distributed version control system broadly
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
182 resembling git. VC supports most Mercurial commands, with the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
183 exception of repository sync operations.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
184
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
185 @cindex bzr
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
186 @cindex Bazaar
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
187 @item
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
188 Bazaar (bzr) is a distributed version control system that supports
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
189 both repository-based and distributed versioning. VC supports most
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
190 basic editing operations under Bazaar.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
191 @end itemize
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
192
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
193 Previous versions of VC supported a version control system known as
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
194 Meta-CVS. This support was dropped due to limited interest from users
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
195 and developers.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
196
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
197 @node VCS Concepts
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
198 @subsubsection Concepts of Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
199
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
200 @cindex repository
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
201 @cindex registered file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
202 When a file is under version control, we say that it is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
203 @dfn{registered} in the version control system. The system has a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
204 @dfn{repository} which stores both the file's present state and its
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
205 change history---enough to reconstruct the current version or any
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
206 earlier version. The repository also contains other information, such
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
207 as @dfn{log entries} that describe the changes made to each file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
208
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
209 @cindex work file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
210 @cindex checking out files
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
211 The copy of a version-controlled file that you actually edit is
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
212 called the @dfn{work file}. You can change each work file as you
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
213 would an ordinary file. After you are done with a set of changes, you
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
214 @dfn{commit} (or @dfn{check in}) the changes; this records the changes
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
215 in the repository, along with a descriptive log entry.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
216
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
217 @cindex revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
218 @cindex revision ID
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
219 A copy of a file stored in a repository is called a @dfn{revision}.
107678
cca79b32ecaa * maintaining.texi (VCS Concepts): Fix typo.
Chong Yidong <cyd@stupidchicken.com>
parents: 107676
diff changeset
220 The history of a file is a sequence of revisions. Each revision is
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
221 named by a @dfn{revision ID}. The format of the revision ID depends
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
222 on the version control system; in the simplest case, it is just an
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
223 integer.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
224
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
225 To go beyond these basic concepts, you will need to understand three
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
226 aspects in which version control systems differ. As explained in the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
227 next three sections, they can be lock-based or merge-based; file-based
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
228 or changeset-based; and centralized or decentralized. VC handles all
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
229 these modes of operation, but it cannot hide the differences.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
230
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
231 @node VCS Merging
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
232 @subsubsection Merge-based vs lock-based Version Control
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
233 @cindex locking versus merging
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
234
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
235 A version control system typically has some mechanism to coordinate
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
236 between users who want to change the same file. There are two ways to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
237 do this: merging and locking.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
238
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
239 In a version control system that uses merging, each user may check
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
240 out and modify a work file at any time. The system lets you
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
241 @dfn{merge} your work file, which may contain changes that have not
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
242 been committed, with the latest changes that others have committed.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
243
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
244 Older version control systems use a @dfn{locking} scheme instead.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
245 Here, work files are normally read-only. To edit a file, you ask the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
246 version control system to make it writable for you by @dfn{locking}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
247 it; only one user can lock a given file at any given time. This
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
248 procedure is analogous to, but different from, the locking that Emacs
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
249 uses to detect simultaneous editing of ordinary files
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
250 (@pxref{Interlocking}). When you commit your changes, that unlocks
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
251 the file, and the work file becomes read-only again. Other users may
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
252 then lock the file to make their own changes.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
253
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
254 Both locking and merging systems can have problems when multiple
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
255 users try to modify the same file at the same time. Locking systems
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
256 have @dfn{lock conflicts}; a user may try to check a file out and be
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
257 unable to because it is locked. In merging systems, @dfn{merge
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
258 conflicts} happen when you commit a change to a file that conflicts
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
259 with a change committed by someone else after your checkout. Both
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
260 kinds of conflict have to be resolved by human judgment and
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
261 communication. Experience has shown that merging is superior to
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
262 locking, both in convenience to developers and in minimizing the
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
263 number and severity of conflicts that actually occur.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
264
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
265 SCCS always uses locking. RCS is lock-based by default but can be
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
266 told to operate in a merging style. CVS and Subversion are
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
267 merge-based by default but can be told to operate in a locking mode.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
268 Distributed version control systems, such as GNU Arch, git, and
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
269 Mercurial, are exclusively merging-based.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
270
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
271 VC mode supports both locking and merging version control. The
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
272 terms ``commit'' and ``update'' are used in newer version control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
273 systems; older lock-based systems use the terms ``check in'' and
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
274 ``check out''. VC hides the differences between them as much as
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
275 possible.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
276
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
277 @node VCS Changesets
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
278 @subsubsection Changeset-based vs File-based Version Control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
279
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
280 @cindex changesets
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
281 On SCCS, RCS, CVS, and other early version control systems, version
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
282 control operations are @dfn{file-based}: each file has its own comment
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
283 and revision history separate from that of all other files. Newer
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
284 systems, beginning with Subversion, are @dfn{changeset-based}: a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
285 checkin may include changes to several files, and the entire set of
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
286 changes is handled as a unit. Any comment associated with the change
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
287 does not belong to a single file, but to the changeset itself.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
288
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
289 Changeset-based version control is more flexible and powerful than
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
290 file-based version control; usually, when a change to multiple files
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
291 has to be reversed, it's good to be able to easily identify and remove
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
292 all of it.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
293
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
294 @node VCS Repositories
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
295 @subsubsection Decentralized vs Centralized Repositories
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
296
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
297 @cindex centralized version control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
298 @cindex decentralized version control
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
299 Early version control systems were designed around a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
300 @dfn{centralized} model in which each project has only one repository
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
301 used by all developers. SCCS, RCS, CVS, and Subversion share this
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
302 kind of model. One of its drawbacks is that the repository is a choke
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
303 point for reliability and efficiency.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
304
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
305 GNU Arch pioneered the concept of @dfn{decentralized} version
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
306 control, later implemented in git, Mercurial, and Bazaar. A project
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
307 may have several different repositories, and these systems support a
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
308 sort of super-merge between repositories that tries to reconcile their
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
309 change histories. In effect, there is one repository for each
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
310 developer, and repository merges take the place of commit operations.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
311
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
312 VC helps you manage the traffic between your personal workfiles and
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
313 a repository. Whether the repository is a single master, or one of a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
314 network of peer repositories, is not something VC has to care about.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
315
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
316 @node Types of Log File
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
317 @subsubsection Types of Log File
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
318 @cindex types of log file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
319 @cindex log File, types of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
320 @cindex version control log
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
321
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
322 Projects that use a version control system can have two types of log
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
323 for changes. One is the log maintained by the version control system:
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
324 each time you commit a change, you fill out a @dfn{log entry} for the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
325 change (@pxref{Log Buffer}). This is called the @dfn{version control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
326 log}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
327
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
328 The other kind of log is the file @file{ChangeLog} (@pxref{Change
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
329 Log}). It provides a chronological record of all changes to a large
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
330 portion of a program---typically one directory and its subdirectories.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
331 A small program would use one @file{ChangeLog} file; a large program
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
332 may have a @file{ChangeLog} file in each major directory.
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
333 @xref{Change Log}. Programmers have used change logs since long
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
334 before version control systems.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
335
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
336 Changeset-based version systems typically maintain a changeset-based
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
337 modification log for the entire system, which makes change log files
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
338 somewhat redundant. One advantage that they retain is that it is
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
339 sometimes useful to be able to view the transaction history of a
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
340 single directory separately from those of other directories.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
341
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
342 A project maintained with version control can use just the version
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
343 control log, or it can use both kinds of logs. It can handle some
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
344 files one way and some files the other way. Each project has its
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
345 policy, which you should follow.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
346
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
347 When the policy is to use both, you typically want to write an entry
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
348 for each change just once, then put it into both logs. You can write
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
349 the entry in @file{ChangeLog}, then copy it to the log buffer with
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
350 @kbd{C-c C-a} when checking in the change (@pxref{Log Buffer}). Or
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
351 you can write the entry in the log buffer while checking in the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
352 change, and later use the @kbd{C-x v a} command to copy it to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
353 @file{ChangeLog}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
354 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
355 (@pxref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
356 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
357 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
358 (@pxref{Change Logs and VC}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
359 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
360
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
361 @node VC Mode Line
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
362 @subsection Version Control and the Mode Line
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
363
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
364 When you visit a file that is under version control, Emacs indicates
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
365 this on the mode line. For example, @samp{Bzr-1223} says that Bazaar
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
366 is used for that file, and the current revision ID is 1223.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
367
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
368 The character between the back-end name and the revision ID
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
369 indicates the status of the work file. In a merge-based version
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
370 control system, a @samp{-} character indicates that the work file is
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
371 unmodified, and @samp{:} indicates that it has been modified. In a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
372 lock-based system, @samp{-} indicates an unlocked file, and @samp{:} a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
373 locked file; if the file is locked by another user (for instance,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
374 @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
375
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
376 On a graphical display, you can move the mouse over this mode line
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
377 indicator to pop up a ``tool-tip'', which displays a more verbose
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
378 description of the version control status. Pressing @kbd{Mouse-1}
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
379 over the indicator pops up a menu of VC commands, identical to
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
380 @samp{Tools / Version Control} on the menu bar.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
381
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
382 @vindex auto-revert-check-vc-info
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
383 When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
384 under version control, it updates the version control information in
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
385 the mode line. However, Auto Revert mode may not properly update this
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
386 information if the version control status changes without changes to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
387 the work file, from outside the current Emacs session. If you set
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
388 @code{auto-revert-check-vc-info} to @code{t}, Auto Revert mode updates
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
389 the version control status information every
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
390 @code{auto-revert-interval} seconds, even if the work file itself is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
391 unchanged. The resulting CPU usage depends on the version control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
392 system, but is usually not excessive.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
393
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
394 @node Basic VC Editing
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
395 @subsection Basic Editing under Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
396
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
397 @cindex filesets, VC
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
398 Most VC commands operate on @dfn{VC filesets}. A VC fileset is a
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
399 collection of one or more files that a VC operation acts on. When you
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
400 type VC commands in a buffer visiting a version-controlled file, the
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
401 VC fileset is simply that one file. When you type them in a VC
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
402 Directory buffer, and some files in it are marked, the VC fileset
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
403 consists of the marked files (@pxref{VC Directory Mode}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
404
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
405 The principal VC command is an all-purpose command, @kbd{C-x v v}
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
406 (@code{vc-next-action}), that performs either registration, locking,
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
407 merging or a check-in (depending on the situation) on the current VC
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
408 fileset. You can use @kbd{C-x v v} in a file-visiting buffer or in a
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
409 VC Directory buffer.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
410
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
411 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
412 @itemx C-x v v
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
413 Perform the appropriate next version control operation on the VC fileset.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
414 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
415
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
416 @findex vc-next-action
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
417 @kindex C-x v v
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
418 The precise action of @kbd{C-x v v} depends on the state of the VC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
419 fileset, and whether the version control system uses locking or
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
420 merging. This is described in detail in the subsequent sections.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
421
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
422 VC filesets are the way that VC mode bridges the gap between
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
423 file-based and changeset-based version control systems. They are,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
424 essentially, a way to pass multiple file arguments as a group to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
425 version control commands. For example, on Subversion, a checkin with
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
426 a multi-file VC fileset becomes a joint commit, as though you had
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
427 typed @command{svn commit} with those file arguments at the shell
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
428 command line. All files in a VC fileset must be under the same
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
429 version control system; if they are not, Emacs signals an error when
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
430 you attempt to execute a command on the fileset.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
431
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
432 VC filesets are distinct from the ``named filesets'' used for
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
433 viewing and visiting files in functional groups (@pxref{Filesets}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
434 Unlike named filesets, VC filesets are not named and don't persist
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
435 across sessions.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
436
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
437 @menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
438 * VC With A Merging VCS:: Without locking: default mode for CVS.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
439 * VC With A Locking VCS:: RCS in its default mode, SCCS, and optionally CVS.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
440 * Advanced C-x v v:: Advanced features available with a prefix argument.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
441 @end menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
442
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
443 @node VC With A Merging VCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
444 @subsubsection Basic Version Control with Merging
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
445
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
446 When your version control system is merging-based (the default for
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
447 CVS and all newer version control systems), work files are always
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
448 writable; you need not do anything special to begin editing a file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
449 The status indicator on the mode line is @samp{-} if the file is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
450 unmodified; it flips to @samp{:} as soon as you save any changes
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
451 (@pxref{VC Mode Line}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
452
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
453 Here is what @kbd{C-x v v} does when using a merging-based system:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
454
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
455 @itemize @bullet
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
456 @item
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
457 If the work file is in a directory that is not controlled by any
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
458 version control system, prompt for a repository type. Then, create a
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
459 version control repository of that type and register the file with it.
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
460
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
461 @item
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
462 If the work file is in a directory that is controlled by a version
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
463 control system but not registered with it, register the file.
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
464
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
465 @item
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
466 If the work file is the same as in the repository, do nothing.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
467
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
468 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
469 If you have not changed the work file, but some other user has checked
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
470 in changes to the repository, merge those changes into the work file.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
471
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
472 @item
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
473 If you have made modifications to the work file, attempt to commit
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
474 the changes. To do this, Emacs first reads the log entry for the new
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
475 revision (@pxref{Log Buffer}). If some other user has committed
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
476 changes to the repository since you last checked it out, the checkin
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
477 fails. In that case, type @kbd{C-x v v} again to merge those changes
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
478 into your own work file; this puts the work file into a ``conflicted''
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
479 state. Type @kbd{C-x v v} to clear the ``conflicted'' state; VC then
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
480 regards the file as up-to-date and modified, and you can try to check
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
481 it in again.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
482
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
483 To pick up any recent changes from the repository @emph{without}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
484 trying to commit your own changes, type @kbd{C-x v m @key{RET}}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
485 @xref{Merging}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
486 @end itemize
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
487
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
488 These rules also apply when you use RCS in its ``non-locking'' mode,
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
489 except that changes are not automatically merged from the repository.
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
490 Nothing informs you if another user has committed changes in the same
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
491 file since you began editing it; when you commit your revision, his
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
492 changes are removed (however, they remain in the repository and are
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
493 thus not irrevocably lost). Therefore, you must verify that the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
494 current revision is unchanged before checking in your changes. In
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
495 addition, locking is possible with RCS even in this mode: @kbd{C-x v
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
496 v} with an unmodified file locks the file, just as it does with RCS in
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
497 its normal locking mode (@pxref{VC With A Locking VCS}).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
498
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
499 @node VC With A Locking VCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
500 @subsubsection Basic Version Control with Locking
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
501
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
502 Under a locking-based version control system (such as SCCS, and RCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
503 in its default mode), @kbd{C-x v v} does the following:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
504
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
505 @itemize @bullet
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
506 @item
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
507 If the file is not locked, lock it and make it writable, so that you
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
508 can change it.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
509
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
510 @item
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
511 If the file is locked by you, and contains changes, commit the
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
512 changes. In order to do this, Emacs first reads the log entry for the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
513 new revision. @xref{Log Buffer}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
514
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
515 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
516 If the file is locked by you, but you have not changed it since you
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
517 locked it, release the lock and makes the file read-only again.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
518
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
519 @item
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
520 If the file is locked by some other user, ask whether you want to
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
521 ``steal the lock'' from that user. If you say yes, the file becomes
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
522 locked by you, but a message is sent to the person who had formerly
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
523 locked the file, to inform him of what has happened.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
524 @end itemize
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
525
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
526 These rules also apply when you use CVS in locking mode, except
111761
6e3b84ac704d Small VC fixes for doc/emacs.
Glenn Morris <rgm@gnu.org>
parents: 111751
diff changeset
527 that CVS does not support stealing a lock.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
528
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
529 @node Advanced C-x v v
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
530 @subsubsection Advanced Control in @kbd{C-x v v}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
531
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
532 @cindex revision ID in version control
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
533 When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
534 C-x v v}), it still performs the next logical version control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
535 operation, but accepts additional arguments to specify precisely how
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
536 to do the operation.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
537
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
538 @itemize @bullet
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
539 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
540 If the file is modified (or locked), you can specify the revision ID
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
541 to use for the new version that you commit. This is one way to create
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
542 a new branch (@pxref{Branches}).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
543
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
544 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
545 If the file is not modified (and unlocked), you can specify the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
546 revision to select; this lets you start working from an older
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
547 revision, or on another branch. If you do not enter any revision,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
548 that takes you to the highest (``head'') revision on the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
549 branch; therefore @kbd{C-u C-x v v @key{RET}} is a convenient way to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
550 get the latest version of a file from the repository.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
551
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
552 @item
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
553 @cindex specific version control system
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
554 Instead of the revision ID, you can also specify the name of a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
555 version control system. This is useful when one file is being managed
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
556 with two version control systems at the same time
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
557 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
558 (@pxref{Local Version Control,,,emacs-xtra, Specialized Emacs
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
559 Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
560 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
561 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
562 (@pxref{Local Version Control}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
563 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
564
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
565 @end itemize
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
566
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
567 @node Log Buffer
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
568 @subsection Features of the Log Entry Buffer
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
569
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
570 When you tell VC to commit a change, it pops up a buffer called
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
571 @samp{*VC-Log*}. In this buffer, you should write a @dfn{log entry}
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
572 describing the changes you have made (@pxref{Why Version Control?}).
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
573 After you are done, type @kbd{C-c C-c}; this exits the buffer and
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
574 commits the change, together with your log entry.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
575
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
576 While in the @samp{*VC-Log*} buffer, you can write one or more
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
577 @dfn{header lines}, specifying additional information to be supplied
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
578 to the version control system. Each header line must occupy a single
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
579 line at the top of the buffer; the first line that is not a header
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
580 line is treated as the start of the log entry. For example, the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
581 following header line states that the present change was not written
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
582 by you, but by another developer:
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
583
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
584 @smallexample
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
585 Author: J. R. Hacker <jrh@@example.com>
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
586 @end smallexample
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
587
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
588 @noindent
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
589 Apart from the @samp{Author} header, Emacs recognizes the headers
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
590 @samp{Date} (a manually-specified commit time) and @samp{Fixes} (a
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
591 reference to a bug fixed by the change). Not all version control
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
592 systems recognize all headers: Bazaar recognizes all three headers,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
593 while git, Mercurial, and Monotone recognizes only @samp{Author} and
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
594 @samp{Summary}. If you specify a header for a version control that
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
595 does not support it, the header is treated as part of the log entry.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
596
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
597 @findex log-edit-show-files
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
598 @findex log-edit-show-diff
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
599 Type @kbd{C-c C-f} (@code{log-edit-show-files}) to display a list of
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
600 files in the current VC fileset. If you called @kbd{C-x v v} directly
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
601 from a work file, the fileset consists of that single file; if you
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
602 called @kbd{C-x v v} from a VC directory buffer (@pxref{VC Directory
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
603 Mode}), the fileset may consist of multiple files.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
604
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
605 @findex log-edit-insert-changelog
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
606 Type @kbd{C-c C-d} (@code{log-edit-show-diff}) to show a @dfn{diff}
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
607 of the changes you have made (i.e., the differences between the work
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
608 file and the repository revision from which you started editing).
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
609 @xref{Old Revisions}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
610
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
611 If the current VC fileset includes one or more @file{ChangeLog}
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
612 files (@pxref{Change Log}), type @kbd{C-c C-a}
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
613 (@code{log-edit-insert-changelog}) to pull the relevant entries into
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
614 the @samp{*VC-Log*} buffer. If the topmost item in each
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
615 @file{ChangeLog} was made under your user name on the current date,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
616 this command searches that item for entries that match the file(s) to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
617 be committed; if found, these entries are inserted.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
618 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
619 @xref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features},
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
620 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
621 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
622 @xref{Change Logs and VC},
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
623 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
624 for the opposite way of working---generating ChangeLog entries from
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
625 the revision control log.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
626
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
627 To abort a check-in, just @strong{don't} type @kbd{C-c C-c} in that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
628 buffer. You can switch buffers and do other editing. As long as you
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
629 don't try to commit another file, the entry you were editing remains
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
630 in the @samp{*VC-Log*} buffer, and you can go back to that buffer at
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
631 any time to complete the check-in.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
632
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
633 If you change several source files for the same reason, it is often
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
634 convenient to specify the same log entry for many of the files. (This
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
635 is the normal way to do things on a changeset-oriented system, where
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
636 comments are attached to changesets rather than the history of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
637 individual files.) The most convenient way to do this is to mark all
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
638 the files in VC Directory Mode and commit from there; the log buffer
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
639 will carry the fileset information with it and do a group commit when
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
640 you type @kbd{C-c C-c}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
641
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
642 You can also browse the history of previous log entries to duplicate
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
643 a checkin comment. This can be useful when you want several files to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
644 have checkin comments that vary only slightly from each other. The
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
645 commands @kbd{M-n}, @kbd{M-p}, @kbd{M-s} and @kbd{M-r} for doing this
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
646 work just like the minibuffer history commands (except that these
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
647 versions are used outside the minibuffer).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
648
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
649 @vindex vc-log-mode-hook
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
650 Each time you commit a change, the log entry buffer is put into VC
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
651 Log Edit mode, which involves running two hooks: @code{text-mode-hook}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
652 and @code{vc-log-mode-hook}. @xref{Hooks}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
653
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
654 @node Old Revisions
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
655 @subsection Examining And Comparing Old Revisions
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
656
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
657 One of the convenient features of version control is the ability
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
658 to examine any revision of a file, or compare two revisions.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
659
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
660 @table @kbd
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
661 @item C-x v ~
107680
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
662 Prompt for a revision of the current file, and visit it in a buffer of
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
663 its own (@code{vc-revision-other-window}).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
664
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
665 @item C-x v =
107680
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
666 Compare the files in the current fileset with the working revision(s)
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
667 you started from (@code{vc-diff}). With a prefix argument, prompt for
107953
5400dec7bad5 Mention Dired VC diff and log in manual.
Glenn Morris <rgm@gnu.org>
parents: 107680
diff changeset
668 two revisions of the current fileset and compare them. You can call
5400dec7bad5 Mention Dired VC diff and log in manual.
Glenn Morris <rgm@gnu.org>
parents: 107680
diff changeset
669 this command from a Dired buffer (@pxref{Dired}).
107680
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
670
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
671 @item C-x v D
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
672 Compare the entire tree corresponding to the current fileset with the
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
673 tree you started from (@code{vc-root-diff}). With a prefix argument,
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
674 prompt for two revisions and compare their trees.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
675
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
676 @item C-x v g
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
677 Display an annotated version of the file: for each line, show the
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
678 latest revision in which it was modified (@code{vc-annotate}).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
679 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
680
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
681 @findex vc-revision-other-window
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
682 @kindex C-x v ~
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
683 To examine an old revision, visit the work file and type @kbd{C-x v
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
684 ~ @var{revision} @key{RET}} (@code{vc-revision-other-window}). Here,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
685 @var{revision} is either the desired revision ID (@pxref{VCS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
686 Concepts}), or the name of a tag or branch
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
687 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
688 (@pxref{Tags,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
689 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
690 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
691 (@pxref{Tags}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
692 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
693 This command puts the text of the old revision in a file named
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
694 @file{@var{filename}.~@var{revision}~}, and visits it in its own
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
695 buffer in a separate window.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
696
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
697 @findex vc-diff
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
698 @kindex C-x v =
107680
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
699 @kbd{C-x v =} (@code{vc-diff}) compares each file in the current VC
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
700 fileset (saving them if necessary) with the repository revision(s)
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
701 from which you started editing. Note that the latter may or may not
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
702 be the latest revision of the file(s).
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
703
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
704 The diff is displayed in another window, in a Diff mode buffer
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
705 (@pxref{Diff Mode}) named @file{*vc-diff*}. In this buffer, the
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
706 @kbd{g} (@code{revert-buffer}) command performs the file comparison
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
707 again, generating a new diff.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
708
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
709 @findex vc-diff
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
710 @kindex C-u C-x v =
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
711 To compare two arbitrary revisions of the current VC fileset, call
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
712 @code{vc-diff} with a prefix argument: @kbd{C-u C-x v =}. This
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
713 prompts for two revision IDs, using the minibuffer, and displays the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
714 diff in a special buffer in another window. Instead of providing a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
715 revision ID, you can give an empty input, which specifies the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
716 contents of the work file; or a tag or branch name
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
717 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
718 (@pxref{Tags,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
719 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
720 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
721 (@pxref{Tags}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
722 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
723 If your version control system is file-based (e.g. CVS) rather than
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
724 changeset-based (Subversion, GNU Arch, git, Mercurial), supplying a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
725 revision ID for a multi-file fileset (as opposed to a symbolic tag
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
726 name) is unlikely to return diffs that are connected in any meaningful
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
727 way.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
728
107680
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
729 The command @kbd{C-x v D} (@code{vc-root-diff}) is similar to
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
730 @kbd{C-x v =}, but it compares the entire tree associated with the
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
731 current VC fileset with the tree you started with. This means all the
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
732 files controlled by the current version control repository, even those
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
733 that are not part of the current VC fileset.
d3e4095893c1 * maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents: 107678
diff changeset
734
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
735 If you invoke @kbd{C-x v =} or @kbd{C-u C-x v =} from a buffer that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
736 is neither visiting a version-controlled file nor a VC directory
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
737 buffer, these commands generate a diff of all registered files in the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
738 current directory and its subdirectories.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
739
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
740 @vindex vc-diff-switches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
741 @vindex vc-rcs-diff-switches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
742 @kbd{C-x v =} works by running a variant of the @code{diff} utility
100188
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
743 designed to work with the version control system in use. The options
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
744 to pass to the @code{diff} command are taken from the first non-@code{nil}
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
745 value of @code{vc-@var{backend}-diff-switches}, @code{vc-diff-switches},
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
746 and @code{diff-switches} (@pxref{Comparing Files}), in that order.
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
747 Since @code{nil} means to check the next variable in the sequence,
ff0dc1bbf0c1 (Old Revisions): Fix diff-switches description.
Glenn Morris <rgm@gnu.org>
parents: 99307
diff changeset
748 either of the first two may use the value @code{t} to mean no switches at all.
100257
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
749 Most of the @samp{vc@dots{}diff-switches} variables default to
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
750 @code{nil}, but some default to @code{t}. These are for those version
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
751 control systems (e.g. SVN) whose @code{diff} implementations do not
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
752 accept common options (e.g. @samp{-c}) likely to be in
a6a34eba22f9 (Old Revisions): Improve previous change.
Glenn Morris <rgm@gnu.org>
parents: 100188
diff changeset
753 @code{diff-switches}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
754
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
755 The buffer produced by @kbd{C-x v =} supports the commands of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
756 Compilation mode (@pxref{Compilation Mode}), such as @kbd{C-x `} and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
757 @kbd{C-c C-c}, in both the ``old'' and ``new'' text, and they always
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
758 find the corresponding locations in the current work file. (Older
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
759 revisions are not, in general, present as files on your disk.)
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
760
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
761 @findex vc-annotate
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
762 @kindex C-x v g
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
763 For some back ends, you can display the file @dfn{annotated} with
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
764 per-line revision information, by typing @kbd{C-x v g}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
765 (@code{vc-annotate}). This creates a new buffer (the ``annotate
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
766 buffer'') displaying the file's text, with each part colored to show
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
767 how old it is. Text colored red is new, blue means old, and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
768 intermediate colors indicate intermediate ages. By default, the color
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
769 is scaled over the full range of ages, such that the oldest changes
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
770 are blue, and the newest changes are red.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
771
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
772 When you give a prefix argument to this command, Emacs reads two
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
773 arguments using the minibuffer: the ID of which revision to display and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
774 annotate (instead of the current file contents), and the time span in
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
775 days the color range should cover.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
776
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
777 From the annotate buffer, these and other color scaling options are
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
778 available from the @samp{VC-Annotate} menu. In this buffer, you can
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
779 also use the following keys to browse the annotations of past revisions,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
780 view diffs, or view log entries:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
781
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
782 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
783 @item p
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
784 Annotate the previous revision, that is to say, the revision before
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
785 the one currently annotated. A numeric prefix argument is a repeat
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
786 count, so @kbd{C-u 10 p} would take you back 10 revisions.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
787
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
788 @item n
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
789 Annotate the next revision---the one after the revision currently
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
790 annotated. A numeric prefix argument is a repeat count.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
791
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
792 @item j
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
793 Annotate the revision indicated by the current line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
794
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
795 @item a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
796 Annotate the revision before the one indicated by the current line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
797 This is useful to see the state the file was in before the change on
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
798 the current line was made.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
799
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
800 @item f
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
801 Show in a buffer the file revision indicated by the current line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
802
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
803 @item d
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
804 Display the diff between the current line's revision and the previous
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
805 revision. This is useful to see what the current line's revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
806 actually changed in the file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
807
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
808 @item D
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
809 Display the diff between the current line's revision and the previous
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
810 revision for all files in the changeset (for VC systems that support
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
811 changesets). This is useful to see what the current line's revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
812 actually changed in the tree.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
813
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
814 @item l
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
815 Show the log of the current line's revision. This is useful to see
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
816 the author's description of the changes in the revision on the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
817 line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
818
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
819 @item w
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
820 Annotate the working revision--the one you are editing. If you used
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
821 @kbd{p} and @kbd{n} to browse to other revisions, use this key to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
822 return to your working revision.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
823
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
824 @item v
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
825 Toggle the annotation visibility. This is useful for looking just at
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
826 the file contents without distraction from the annotations.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
827 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
828
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
829 @node Secondary VC Commands
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
830 @subsection The Secondary Commands of VC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
831
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
832 This section explains the secondary commands of VC.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
833
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
834 @menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
835 * Registering:: Putting a file under version control.
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
836 * VC Change Log:: Viewing the VC Change Log.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
837 * VC Undo:: Canceling changes before or after check-in.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
838 @end menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
839
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
840 @node Registering
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
841 @subsubsection Registering a File for Version Control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
842
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
843 @kindex C-x v i
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
844 @findex vc-register
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
845 You can put any file under version control by simply visiting it, and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
846 then typing @w{@kbd{C-x v i}} (@code{vc-register}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
847
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
848 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
849 @item C-x v i
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
850 Register the visited file for version control.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
851 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
852
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
853 To register the file, Emacs must choose which version control system
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
854 to use for it. If the file's directory already contains files
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
855 registered in a version control system, Emacs uses that system. If
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
856 there is more than one system in use for a directory, Emacs uses the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
857 one that appears first in @code{vc-handled-backends}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
858 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
859 (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
860 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
861 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
862 (@pxref{Customizing VC}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
863 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
864 On the other hand, if there are no files already registered, Emacs uses
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
865 the first system from @code{vc-handled-backends} that could register
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
866 the file (for example, you cannot register a file under CVS if its
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
867 directory is not already part of a CVS tree); with the default value
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
868 of @code{vc-handled-backends}, this means that Emacs uses RCS in this
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
869 situation.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
870
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
871 If locking is in use, @kbd{C-x v i} leaves the file unlocked and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
872 read-only. Type @kbd{C-x v v} if you wish to start editing it. After
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
873 registering a file with CVS, you must subsequently commit the initial
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
874 revision by typing @kbd{C-x v v}. Until you do that, the revision ID
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
875 appears as @samp{@@@@} in the mode line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
876
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
877 @vindex vc-default-init-revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
878 @cindex initial revision ID to register
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
879 The default initial revision ID for a newly registered file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
880 varies by what VCS you are using; normally it will be 1.1 on VCSes
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
881 that use dot-pair revision IDs and 1 on VCSes that use monotonic IDs.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
882 You can specify a different default by setting the variable
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
883 @code{vc-default-init-revision}, or you can give @kbd{C-x v i} a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
884 numeric argument; then it reads the initial revision ID for this
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
885 particular file using the minibuffer.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
886
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
887 @vindex vc-initial-comment
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
888 If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
889 initial comment to describe the purpose of this source file. Reading
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
890 the initial comment works like reading a log entry (@pxref{Log Buffer}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
891
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
892 @node VC Change Log
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
893 @subsubsection VC Change Log
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
894
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
895 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
896 @item C-x v l
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
897 Display revision control state and change history
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
898 (@code{vc-print-log}).
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
899
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
900 @item C-x v L
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
901 Display the change history for the current repository
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
902 (@code{vc-print-root-log}).
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
903 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
904
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
905 @kindex C-x v l
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
906 @findex vc-print-log
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
907 The command @kbd{C-x v l} (@code{vc-print-log}) displays a buffer
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
908 named @samp{*vc-change-log*} in a new window. This buffer lists the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
909 changes to the current file, including the associated log entries.
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
910 (These are the log entries associated with the version control system,
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
911 i.e. the ones you enter via the @samp{*VC-Log*} buffer. @xref{Log
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
912 Buffer}.) Point is centered at the revision of the file currently
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
913 being visited. With a prefix argument, the command prompts for the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
914 revision to center on, and the maximum number of revisions to display.
107953
5400dec7bad5 Mention Dired VC diff and log in manual.
Glenn Morris <rgm@gnu.org>
parents: 107680
diff changeset
915 You can call this command from a Dired buffer (@pxref{Dired}).
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
916
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
917 @findex vc-print-root-log
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
918 Type @kbd{C-x v L} (@code{vc-print-root-log}) to display a
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
919 @samp{*vc-change-log*} buffer showing the history of the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
920 version-controlled directory tree as a whole. With a prefix argument,
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
921 the command prompts for the maximum number of revisions to display.
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
922 RCS, SCCS, and CVS do not support this feature.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
923
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
924 In the @samp{*vc-change-log*} buffer, you can use the following keys
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
925 to move between the logs of revisions and of files, to view past
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
926 revisions, to modify change comments, to view annotations and to view
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
927 diffs:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
928
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
929 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
930 @item p
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
931 Move to the previous revision-item in the buffer. (Revision entries in the log
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
932 buffer are usually in reverse-chronological order, so the previous
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
933 revision-item usually corresponds to a newer revision.) A numeric
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
934 prefix argument is a repeat count.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
935
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
936 @item n
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
937 Move to the next revision-item (which most often corresponds to the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
938 previous revision of the file). A numeric prefix argument is a repeat
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
939 count.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
940
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
941 @item P
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
942 Move to the log of the previous file, when the logs of multiple files
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
943 are in the log buffer (@pxref{VC Directory Mode}). Otherwise, just
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
944 move to the beginning of the log. A numeric prefix argument is a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
945 repeat count, so @kbd{C-u 10 P} would move backward 10 files.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
946
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
947 @item N
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
948 Move to the log of the next file, when the logs of multiple files are
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
949 in the log buffer (@pxref{VC Directory Mode}). It also takes a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
950 numeric prefix argument as a repeat count.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
951
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
952 @item a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
953 Annotate the revision indicated by the current line.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
954
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
955 @item e
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
956 Modify the change comment displayed at point. Note that not all VC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
957 systems support modifying change comments.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
958
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
959 @item f
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
960 Visit the revision indicated at the current line, like typing @kbd{C-x
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
961 v ~} and specifying this revision's ID (@pxref{Old Revisions}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
962
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
963 @item d
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
964 Display the diff (@pxref{Comparing Files}) between the revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
965 indicated at the current line and the next earlier revision. This is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
966 useful to see what actually changed in the file when the revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
967 indicated on the current line was committed.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
968
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
969 @item D
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
970 Display the changeset diff (@pxref{Comparing Files}) between the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
971 revision indicated at the current line and the next earlier revision.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
972 This is useful to see all the changes to all files that the revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
973 indicated on the current line did when it was committed.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
974 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
975
107676
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
976 @vindex vc-log-show-limit
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
977 Because fetching many log entries can be slow, the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
978 @samp{*vc-change-log*} buffer displays no more than 2000 revisions by
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
979 default. The variable @code{vc-log-show-limit} specifies this limit;
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
980 if you set the value to zero, that removes the limit. You can also
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
981 increase the number of revisions shown in an existing
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
982 @samp{*vc-change-log*} buffer by clicking on the @samp{Show 2X
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
983 entries} or @samp{Show unlimited entries} buttons at the end of the
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
984 buffer. However, RCS, SCCS, and CVS do not support this feature.
e0b20352344e Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
985
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
986 @node VC Undo
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
987 @subsubsection Undoing Version Control Actions
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
988
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
989 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
990 @item C-x v u
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
991 Revert the buffer and the file to the working revision from which you started
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
992 editing the file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
993
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
994 @item C-x v c
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
995 Remove the last-entered change from the master for the visited file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
996 This undoes your last check-in.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
997 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
998
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
999 @kindex C-x v u
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1000 @findex vc-revert-buffer
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1001 If you want to discard your current set of changes and revert to the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1002 working revision from which you started editing the file, use @kbd{C-x
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1003 v u} (@code{vc-revert-buffer}). If the version control system is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1004 locking-based, this leaves the file unlocked, and you must lock it
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1005 again before making new changes. @kbd{C-x v u} requires confirmation,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1006 unless it sees that you haven't made any changes with respect to the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1007 master copy of the working revision.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1008
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1009 @kbd{C-x v u} is also the command to unlock a file if you lock it and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1010 then decide not to change it.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1011
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1012 @kindex C-x v c
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1013 @findex vc-rollback
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1014 To cancel a change that you already committed, use @kbd{C-x v c}
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1015 (@code{vc-rollback}). This command discards all record of the most
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1016 recent checked-in revision, but only if your work file corresponds to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1017 that revision---you cannot use @kbd{C-x v c} to cancel a revision that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1018 is not the latest on its branch. Note that many version control
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1019 systems do not support rollback at all; this command is something of a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1020 historical relic.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1021
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1022 @node VC Directory Mode
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1023 @subsection VC Directory Mode
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1024
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1025 @kindex C-x v d
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1026 @findex vc-dir
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1027 When you are working on a large program, it is often useful to find
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1028 out which files have changed within an entire directory tree, or to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1029 view the status of all files under version control at once, and to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1030 perform version control operations on collections of files. You can
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1031 use the command @kbd{C-x v d} (@code{vc-dir}) to make a directory
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1032 listing that includes only files relevant for version control. This
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1033 creates a @dfn{VC Directory buffer} and displays it in a separate
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1034 window.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1035
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1036 @cindex PCL-CVS
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1037 @pindex cvs
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1038 @cindex CVS directory mode
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1039 The VC Directory buffer works with all the version control systems
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1040 that VC supports. For CVS, Emacs also offers a more powerful facility
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1041 called PCL-CVS. @xref{Top, , About PCL-CVS, pcl-cvs, PCL-CVS --- The
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1042 Emacs Front-End to CVS}.
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1043
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1044 @menu
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1045 * Buffer: VC Directory Buffer. What the buffer looks like and means.
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1046 * Commands: VC Directory Commands. Commands to use in a VC directory buffer.
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1047 @end menu
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1048
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1049 @node VC Directory Buffer
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1050 @subsubsection The VC Directory Buffer
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1051
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1052 The VC Directory buffer contains a list of version-controlled files
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1053 in the current directory and its subdirectories. Files which are
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1054 up-to-date (have no local differences from the repository copy) are
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1055 usually hidden; if all files in a subdirectory are up-to-date, the
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1056 subdirectory is hidden as well. There is an exception to this rule:
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1057 if VC mode detects that a file has changed to an up-to-date state
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1058 since you last looked at it, that file and its state are shown.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1059
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1060 If a directory uses more that one version control system, you can
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1061 select which system to use for the @code{vc-dir} command by invoking
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1062 @code{vc-dir} with a prefix argument: @kbd{C-u C-x v d}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1063
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1064 The line for an individual file shows the version control state of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1065 the file. Under RCS and SCCS, the name of the user locking the file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1066 is shown; under CVS, an abbreviated version of the @samp{cvs status}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1067 output is used. Here is an example using CVS:
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1068
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1069 @smallexample
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1070 @group
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1071 ./
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1072 modified file1.c
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1073 needs-update file2.c
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1074 needs-merge file3.c
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1075 @end group
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1076 @end smallexample
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1077
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1078 @noindent
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1079 In this example, @samp{file1.c} is modified with respect to the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1080 repository, and @samp{file2.c} is not. @samp{file3.c} is modified,
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1081 but other changes have also been committed---you need to merge them
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1082 with the work file before you can check it in.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1083
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1084 @vindex vc-stay-local
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1085 @vindex vc-cvs-stay-local
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1086 In the above, if the repository were on a remote machine, VC only
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1087 contacts it when the variable @code{vc-stay-local} (or
103792
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1088 @code{vc-cvs-stay-local}) is @code{nil}
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1089 @iftex
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1090 (@pxref{CVS Options,,,emacs-xtra, Specialized Emacs Features}).
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1091 @end iftex
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1092 @ifnottex
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1093 (@pxref{CVS Options}).
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1094 @end ifnottex
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1095 This is because access to the repository may be slow, or you may be
0b604d32b97d (VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents: 103079
diff changeset
1096 working offline and not have access to the repository at all. As a
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1097 consequence, VC would not be able to tell you that @samp{file3.c} is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1098 in the ``merge'' state; you would learn that only when you try to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1099 check-in your modified copy of the file, or use a command such as
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1100 @kbd{C-x v m}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1101
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1102 In practice, this is not a problem because CVS handles this case
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1103 consistently whenever it arises. In VC, you'll simply get prompted to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1104 merge the remote changes into your work file first. The benefits of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1105 less network communication usually outweigh the disadvantage of not
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1106 seeing remote changes immediately.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1107
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1108 @vindex vc-directory-exclusion-list
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1109 When a VC directory displays subdirectories it omits some that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1110 should never contain any files under version control. By default,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1111 this includes Version Control subdirectories such as @samp{RCS} and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1112 @samp{CVS}; you can customize this by setting the variable
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1113 @code{vc-directory-exclusion-list}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1114
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1115 @node VC Directory Commands
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1116 @subsubsection VC Directory Commands
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1117
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1118 VC Directory mode has a full set of navigation and marking commands
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1119 for picking out filesets. Some of these are also available in a
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1120 context menu invoked by @kbd{mouse-2}.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1121
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1122 Up- and down-arrow keys move in the buffer; @kbd{n} and @kbd{p} also
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1123 move vertically as in other list-browsing modes. @key{SPC} and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1124 @key{TAB} behave like down-arrow, and @key{BackTab} behaves like
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1125 up-arrow.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1126
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1127 Both @kbd{C-m} and @kbd{f} visit the file on the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1128 line. @kbd{o} visits that file in another window. @kbd{q} dismisses
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1129 the directory buffer.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1130
102444
4e88a32df6bf (VC Directory Commands): Fix doc for the x key in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100974
diff changeset
1131 @kbd{x} hides up-to-date files.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1132
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1133 @kbd{m} marks the file or directory on the current line. If the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1134 region is active, @kbd{m} marks all the files in the region. There
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1135 are some restrictions when marking: a file cannot be marked if any of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1136 its parent directories are marked, and a directory cannot be marked if
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1137 any files in it or in its child directories are marked.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1138
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1139 @kbd{M} marks all the files with the same VC state as the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1140 file if the cursor is on a file. If the cursor is on a directory, it
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1141 marks all child files. With a prefix argument: marks all files and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1142 directories.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1143
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1144 @kbd{u} unmarks the file or directory on the current line. If the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1145 region is active, it unmarks all the files in the region.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1146
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1147 @kbd{U} marks all the files with the same VC state as the current file
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1148 if the cursor is on a file. If the cursor is on a directory, it
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1149 unmarks all child files. With a prefix argument: unmarks all marked
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1150 files and directories.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1151
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1152 It is possible to do search, search and replace, incremental search,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1153 and incremental regexp search on multiple files. These commands will
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1154 work on all the marked files or the current file if nothing is marked.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1155 If a directory is marked, the files in that directory shown in the VC
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1156 directory buffer will be used.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1157
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1158 @kbd{S} searches the marked files.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1159
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1160 @kbd{Q} does a query replace on the marked files.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1161
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1162 @kbd{M-s a C-s} does an incremental search on the marked files.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1163
111761
6e3b84ac704d Small VC fixes for doc/emacs.
Glenn Morris <rgm@gnu.org>
parents: 111751
diff changeset
1164 @kbd{M-s a C-M-s} does an incremental regular expression search
6e3b84ac704d Small VC fixes for doc/emacs.
Glenn Morris <rgm@gnu.org>
parents: 111751
diff changeset
1165 on the marked files.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1166
107956
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1167 @cindex stashes in version control
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1168 @cindex shelves in version control
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1169 Commands are also accessible from the VC-dir menu. Note that some
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1170 VC backends use the VC-dir menu to make available extra,
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1171 backend-specific, commands. For example, Git and Bazaar allow you to
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1172 manipulate @dfn{stashes} and @dfn{shelves}. (These provide a
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1173 mechanism to temporarily store uncommitted changes somewhere out of
69dc127ae6ba * maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents: 107953
diff changeset
1174 the way, and bring them back at a later time.)
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1175
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1176 Normal VC commands with the @kbd{C-x v} prefix work in VC directory
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1177 buffers. Some single-key shortcuts are available as well; @kbd{=},
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1178 @kbd{+}, @kbd{l}, @kbd{i}, and @kbd{v} behave as through prefixed with
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1179 @kbd{C-x v}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1180
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1181 The command @kbd{C-x v v} (@code{vc-next-action}) operates on all
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1182 the marked files, so that you can commit several files at once. If
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1183 the underlying VC supports atomic commits of multiple-file changesets,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1184 @kbd{C-x v v} with a selected set of modified but not committed files
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1185 will commit all of them at once as a single changeset.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1186
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1187 When @kbd{C-x v v} (@code{vc-next-action}) operates on multiple
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1188 files, all of those files must be either in the same state or in
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1189 compatible states (added, modified and removed states are considered
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1190 compatible). Otherwise it signals an error. This differs from the
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1191 behavior of older versions of VC, which did not have fileset
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1192 operations and simply did @code{vc-next-action} on each file
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1193 individually.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1194
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1195 If any files are in a state that calls for commit, @kbd{C-x v v} reads a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1196 single log entry and uses it for the changeset as a whole. If the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1197 underling VCS is file- rather than changeset-oriented, the log entry
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1198 will be replicated into the history of each file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1199
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1200 @node Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1201 @subsection Multiple Branches of a File
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1202 @cindex branch (version control)
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1203 @cindex trunk (version control)
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1204
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1205 One use of version control is to maintain multiple ``current''
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1206 revisions of a file. For example, you might have different revisions of a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1207 program in which you are gradually adding various unfinished new
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1208 features. Each such independent line of development is called a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1209 @dfn{branch}. VC allows you to create branches, switch between
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1210 different branches, and merge changes from one branch to another.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1211 Please note, however, that branches are not supported for SCCS.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1212
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1213 A file's main line of development is usually called the @dfn{trunk}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1214 You can create multiple branches from the trunk. How the difference
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1215 between trunk and branch is made visible is dependent on whether the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1216 VCS uses dot-pair or monotonic version IDs.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1217
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1218 In VCSes with dot-pair revision IDs, the revisions on the trunk are
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1219 normally IDed 1.1, 1.2, 1.3, etc. At any such revision, you can
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1220 start an independent branch. A branch starting at revision 1.2 would
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1221 have revision ID 1.2.1.1, and consecutive revisions on this branch
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1222 would have IDs 1.2.1.2, 1.2.1.3, 1.2.1.4, and so on. If there is
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1223 a second branch also starting at revision 1.2, it would consist of
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1224 revisions 1.2.2.1, 1.2.2.2, 1.2.2.3, etc.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1225
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1226 In VCSes with monotonic revision IDs, trunk revisions are IDed as
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1227 1, 2, 3, etc. A branch from (say) revision 2 might start with 2.1 and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1228 continue through 2.2, 2.3, etc. But naming conventions for branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1229 and subbranches vary widely on these systems, and some (like
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1230 Mercurial) never depart from the monotonic integer sequence at all.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1231 Consult the documentation of the VCS you are using.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1232
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1233 @cindex head revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1234 If you omit the final component of a dot-pair revision ID, that is called a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1235 @dfn{branch ID}. It refers to the highest existing revision on that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1236 branch---the @dfn{head revision} of that branch. The branches in the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1237 dot-pair example above have branch IDs 1.2.1 and 1.2.2.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1238
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1239 @menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1240 * Switching Branches:: How to get to another existing branch.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1241 * Creating Branches:: How to start a new branch.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1242 * Merging:: Transferring changes between branches.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1243 * Multi-User Branching:: Multiple users working at multiple branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1244 in parallel.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1245 @end menu
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1246
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1247 @node Switching Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1248 @subsubsection Switching between Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1249
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1250 To switch between branches, type @kbd{C-u C-x v v} and specify the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1251 revision ID you want to select. On a locking-based system, this
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1252 version is then visited @emph{unlocked} (write-protected), so you can
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1253 examine it before locking it. Switching branches in this way is allowed
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1254 only when the file is not locked.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1255
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1256 On a VCS with dot-pair IDs, you can omit the minor part, thus giving
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1257 only the branch ID; this takes you to the head version on the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1258 chosen branch. If you only type @key{RET}, Emacs goes to the highest
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1259 version on the trunk.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1260
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1261 After you have switched to any branch (including the main branch), you
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1262 stay on it for subsequent VC commands, until you explicitly select some
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1263 other branch.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1264
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1265 @node Creating Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1266 @subsubsection Creating New Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1267
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1268 To create a new branch from a head revision (one that is the latest
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1269 in the branch that contains it), first select that revision if
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1270 necessary, lock it with @kbd{C-x v v}, and make whatever changes you
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1271 want. Then, when you commit the changes, use @kbd{C-u C-x v v}. This
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1272 lets you specify the revision ID for the new revision. You should
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1273 specify a suitable branch ID for a branch starting at the current
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1274 revision. For example, if the current revision is 2.5, the branch ID
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1275 should be 2.5.1, 2.5.2, and so on, depending on the number of existing
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1276 branches at that point.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1277
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1278 To create a new branch at an older revision (one that is no longer the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1279 head of a branch), first select that revision (@pxref{Switching
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1280 Branches}). Your procedure will then differ depending on whether you
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1281 are using a locking or merging-based VCS.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1282
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1283 On a locking VCS, you will need to lock the old revision branch with
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1284 @kbd{C-x v v}. You'll be asked to confirm, when you lock the old
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1285 revision, that you really mean to create a new branch---if you say no,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1286 you'll be offered a chance to lock the latest revision instead. On
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1287 a merging-based VCS you will skip this step.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1288
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1289 Then make your changes and type @kbd{C-x v v} again to commit a new
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1290 revision. This automatically creates a new branch starting from the
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1291 selected revision. You need not specially request a new branch,
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1292 because that's the only way to add a new revision at a point that is
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1293 not the head of a branch.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1294
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1295 After the branch is created, you ``stay'' on it. That means that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1296 subsequent check-ins create new revisions on that branch. To leave the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1297 branch, you must explicitly select a different revision with @kbd{C-u C-x
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1298 v v}. To transfer changes from one branch to another, use the merge
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1299 command, described in the next section.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1300
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1301 @node Merging
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1302 @subsubsection Merging Branches
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1303
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1304 @cindex merging changes
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1305 When you have finished the changes on a certain branch, you will
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1306 often want to incorporate them into the file's main line of development
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1307 (the trunk). This is not a trivial operation, because development might
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1308 also have proceeded on the trunk, so that you must @dfn{merge} the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1309 changes into a file that has already been changed otherwise. VC allows
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1310 you to do this (and other things) with the @code{vc-merge} command.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1311
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1312 @table @kbd
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1313 @item C-x v m (vc-merge)
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1314 Merge changes into the work file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1315 @end table
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1316
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1317 @kindex C-x v m
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1318 @findex vc-merge
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1319 @kbd{C-x v m} (@code{vc-merge}) takes a set of changes and merges it
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1320 into the current version of the work file. It firsts asks you in the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1321 minibuffer where the changes should come from. If you just type
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1322 @key{RET}, Emacs merges any changes that were made on the same branch
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1323 since you checked the file out (we call this @dfn{merging the news}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1324 This is the common way to pick up recent changes from the repository,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1325 regardless of whether you have already changed the file yourself.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1326
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1327 You can also enter a branch ID or a pair of revision IDs in
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1328 the minibuffer. Then @kbd{C-x v m} finds the changes from that
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1329 branch, or the differences between the two revisions you specified, and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1330 merges them into the current revision of the current file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1331
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1332 As an example, suppose that you have finished a certain feature on
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1333 branch 1.3.1. In the meantime, development on the trunk has proceeded
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1334 to revision 1.5. To merge the changes from the branch to the trunk,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1335 first go to the head revision of the trunk, by typing @kbd{C-u C-x v v
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1336 @key{RET}}. Revision 1.5 is now current. If locking is used for the file,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1337 type @kbd{C-x v v} to lock revision 1.5 so that you can change it. Next,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1338 type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1339 branch 1.3.1 (relative to revision 1.3, where the branch started, up to
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1340 the last revision on the branch) and merges it into the current revision
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1341 of the work file. You can now commit the changed file, thus creating
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1342 revision 1.6 containing the changes from the branch.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1343
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1344 It is possible to do further editing after merging the branch, before
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1345 the next check-in. But it is usually wiser to commit the merged
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1346 revision, then lock it and make the further changes. This will keep
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1347 a better record of the history of changes.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1348
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1349 @cindex conflicts
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1350 @cindex resolving conflicts
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1351 When you merge changes into a file that has itself been modified, the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1352 changes might overlap. We call this situation a @dfn{conflict}, and
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1353 reconciling the conflicting changes is called @dfn{resolving a
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1354 conflict}.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1355
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1356 Whenever conflicts occur during merging, VC detects them, tells you
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1357 about them in the echo area, and asks whether you want help in merging.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1358 If you say yes, it starts an Ediff session (@pxref{Top,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1359 Ediff, Ediff, ediff, The Ediff Manual}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1360
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1361 If you say no, the conflicting changes are both inserted into the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1362 file, surrounded by @dfn{conflict markers}. The example below shows how
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1363 a conflict region looks; the file is called @samp{name} and the current
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1364 master file revision with user B's changes in it is 1.11.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1365
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1366 @c @w here is so CVS won't think this is a conflict.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1367 @smallexample
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1368 @group
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1369 @w{<}<<<<<< name
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1370 @var{User A's version}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1371 =======
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1372 @var{User B's version}
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1373 @w{>}>>>>>> 1.11
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1374 @end group
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1375 @end smallexample
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1376
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1377 @cindex vc-resolve-conflicts
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1378 Then you can resolve the conflicts by editing the file manually. Or
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1379 you can type @code{M-x vc-resolve-conflicts} after visiting the file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1380 This starts an Ediff session, as described above. Don't forget to
111749
6e15675f8126 Document VC headers and other VC changes.
Chong Yidong <cyd@stupidchicken.com>
parents: 109262
diff changeset
1381 commit the merged version afterwards.
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1382
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1383 @node Multi-User Branching
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1384 @subsubsection Multi-User Branching
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1385
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1386 It is often useful for multiple developers to work simultaneously on
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1387 different branches of a file. CVS and later systems allow this by
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1388 default; for RCS, it is possible if you create multiple source
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1389 directories. Each source directory should have a link named
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1390 @file{RCS} which points to a common directory of RCS master files.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1391 Then each source directory can have its own choice of selected
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1392 revisions, but all share the same common RCS records.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1393
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1394 This technique works reliably and automatically, provided that the
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1395 source files contain RCS version headers
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1396 @iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1397 (@pxref{Version Headers,,,emacs-xtra, Specialized Emacs Features}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1398 @end iftex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1399 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1400 (@pxref{Version Headers}).
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1401 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1402 The headers enable Emacs to be sure, at all times, which revision
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1403 ID is present in the work file.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1404
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1405 If the files do not have version headers, you must instead tell Emacs
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1406 explicitly in each session which branch you are working on. To do this,
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1407 first find the file, then type @kbd{C-u C-x v v} and specify the correct
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1408 branch ID. This ensures that Emacs knows which branch it is using
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1409 during this particular editing session.
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1410
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1411 @ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1412 @include vc1-xtra.texi
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1413 @end ifnottex
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1414
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1415 @node Change Log
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1416 @section Change Logs
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1417
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1418 @cindex change log
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1419 A change log file contains a chronological record of when and why you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1420 have changed a program, consisting of a sequence of entries describing
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1421 individual changes. Normally it is kept in a file called
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1422 @file{ChangeLog} in the same directory as the file you are editing, or
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1423 one of its parent directories. A single @file{ChangeLog} file can
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1424 record changes for all the files in its directory and all its
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1425 subdirectories.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1426
99299
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1427 @menu
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1428 * Change Log Commands:: Commands for editing change log files.
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1429 * Format of ChangeLog:: What the change log file looks like.
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1430 @end menu
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1431
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1432 @node Change Log Commands
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1433 @subsection Change Log Commands
8460775a4023 (Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents: 99291
diff changeset
1434
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1435 @kindex C-x 4 a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1436 @findex add-change-log-entry-other-window
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1437 The Emacs command @kbd{C-x 4 a} adds a new entry to the change log
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1438 file for the file you are editing
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1439 (@code{add-change-log-entry-other-window}). If that file is actually
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1440 a backup file, it makes an entry appropriate for the file's
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1441 parent---that is useful for making log entries for functions that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1442 have been deleted in the current version.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1443
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1444 @kbd{C-x 4 a} visits the change log file and creates a new entry
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1445 unless the most recent entry is for today's date and your name. It
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1446 also creates a new item for the current file. For many languages, it
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1447 can even guess the name of the function or other object that was
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1448 changed.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1449
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1450 @vindex add-log-keep-changes-together
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1451 When the variable @code{add-log-keep-changes-together} is
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1452 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1453 rather than starting a new item.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1454
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1455 @vindex add-log-always-start-new-record
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1456 If @code{add-log-always-start-new-record} is non-@code{nil},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1457 @kbd{C-x 4 a} always makes a new entry, even if the last entry
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1458 was made by you and on the same date.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1459
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1460 @vindex change-log-version-info-enabled
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1461 @vindex change-log-version-number-regexp-list
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1462 @cindex file version in change log entries
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1463 If the value of the variable @code{change-log-version-info-enabled}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1464 is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1465 change log entry. It finds the version number by searching the first
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1466 ten percent of the file, using regular expressions from the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1467 @code{change-log-version-number-regexp-list}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1468
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1469 @cindex Change Log mode
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1470 @findex change-log-mode
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1471 The change log file is visited in Change Log mode. In this major
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1472 mode, each bunch of grouped items counts as one paragraph, and each
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1473 entry is considered a page. This facilitates editing the entries.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1474 @kbd{C-j} and auto-fill indent each new line like the previous line;
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1475 this is convenient for entering the contents of an entry.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1476
97440
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1477 You can use the @code{next-error} command (by default bound to
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1478 @kbd{C-x `}) to move between entries in the Change Log, when Change
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1479 Log mode is on. You will jump to the actual site in the file that was
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1480 changed, not just to the next Change Log entry. You can also use
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1481 @code{previous-error} to move back in the same list.
4844a1945892 (Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents: 94293
diff changeset
1482
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1483 @findex change-log-merge
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1484 You can use the command @kbd{M-x change-log-merge} to merge other
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1485 log files into a buffer in Change Log Mode, preserving the date
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1486 ordering of entries.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1487
99281
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1488 Version control systems are another way to keep track of changes in
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1489 your program and keep a change log. In the VC log buffer, typing
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1490 @kbd{C-c C-a} (@code{log-edit-insert-changelog}) inserts the relevant
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1491 Change Log entry, if one exists (@pxref{Log Buffer}). You can also
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1492 insert a VC log entry into a Change Log buffer by typing @kbd{C-x v a}
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1493 (@code{vc-update-change-log}) in the Change Log buffer
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1494 @iftex
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1495 (@pxref{Change Logs and VC,,,emacs-xtra, Specialized Emacs Features}).
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1496 @end iftex
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1497 @ifnottex
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1498 (@pxref{Change Logs and VC}).
7b138a462a57 (Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents: 97440
diff changeset
1499 @end ifnottex
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1500
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1501 @node Format of ChangeLog
99291
a3986c03d1ed (Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents: 99281
diff changeset
1502 @subsection Format of ChangeLog
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1503
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1504 A change log entry starts with a header line that contains the current
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1505 date, your name, and your email address (taken from the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1506 @code{add-log-mailing-address}). Aside from these header lines, every
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1507 line in the change log starts with a space or a tab. The bulk of the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1508 entry consists of @dfn{items}, each of which starts with a line starting
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1509 with whitespace and a star. Here are two entries, both dated in May
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1510 1993, with two items and one item respectively.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1511
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1512 @iftex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1513 @medbreak
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1514 @end iftex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1515 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1516 1993-05-25 Richard Stallman <rms@@gnu.org>
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1517
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1518 * man.el: Rename symbols `man-*' to `Man-*'.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1519 (manual-entry): Make prompt string clearer.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1520
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1521 * simple.el (blink-matching-paren-distance):
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1522 Change default to 12,000.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1523
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1524 1993-05-24 Richard Stallman <rms@@gnu.org>
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1525
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1526 * vc.el (minor-mode-map-alist): Don't use it if it's void.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1527 (vc-cancel-version): Doc fix.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1528 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1529
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1530 One entry can describe several changes; each change should have its
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1531 own item, or its own line in an item. Normally there should be a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1532 blank line between items. When items are related (parts of the same
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1533 change, in different places), group them by leaving no blank line
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1534 between them.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1535
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1536 You should put a copyright notice and permission notice at the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1537 end of the change log file. Here is an example:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1538
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1539 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1540 Copyright 1997, 1998 Free Software Foundation, Inc.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1541 Copying and distribution of this file, with or without modification, are
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1542 permitted provided the copyright notice and this notice are preserved.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1543 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1544
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1545 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1546 Of course, you should substitute the proper years and copyright holder.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1547
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1548 @node Tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1549 @section Tags Tables
91507
5f89bbfccdc3 Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 88056
diff changeset
1550 @cindex tags and tag tables
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1551
103078
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1552 A @dfn{tag} is a reference to a subunit in a program or in a
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1553 document. In program source code, tags reference syntactic elements
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1554 of the program: functions, subroutines, data types, macros, etc. In a
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1555 document, tags reference chapters, sections, appendices, etc. Each
103079
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1556 tag specifies the name of the file where the corresponding subunit is
103078
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1557 defined, and the position of the subunit's definition in that file.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1558
103078
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1559 A @dfn{tags table} records the tags extracted by scanning the source
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1560 code of a certain program or a certain document. Tags extracted from
103079
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1561 generated files reference the original files, rather than the
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1562 generated files that were scanned during tag extraction. Examples of
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1563 generated files include C files generated from Cweb source files, from
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1564 a Yacc parser, or from Lex scanner definitions; @file{.i} preprocessed
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1565 C files; and Fortran files produced by preprocessing @file{.fpp}
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1566 source files.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1567
103079
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1568 To produce a tags table, you use the @samp{etags} command,
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1569 submitting it a document or the source code of a program.
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1570 @samp{etags} writes the tags to a @dfn{tags table file}, or @dfn{tags
479179722385 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103078
diff changeset
1571 file} in short. The conventional name for a tags file is @file{TAGS}.
103073
056e34bacfbc (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103068
diff changeset
1572
056e34bacfbc (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103068
diff changeset
1573 Emacs uses the information recorded in tags tables in commands that
103078
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1574 search or replace through multiple source files: these commands use
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1575 the names of the source files recorded in the tags table to know which
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1576 files to search. Other commands, such as @kbd{M-.}, which finds the
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1577 definition of a function, use the recorded information about the
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1578 function names and positions to find the source file and the position
ffe7eb45a537 (Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents: 103073
diff changeset
1579 within that file where the function is defined.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1580
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1581 @cindex C++ class browser, tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1582 @cindex tags, C++
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1583 @cindex class browser, C++
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1584 @cindex Ebrowse
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1585 See also the Ebrowse facility, which is tailored for C++.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1586 @xref{Top,, Ebrowse, ebrowse, Ebrowse User's Manual}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1587
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1588 @menu
109262
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1589 * Tag Syntax:: Tag syntax for various types of code and text files.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1590 * Create Tags Table:: Creating a tags table with @code{etags}.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1591 * Etags Regexps:: Create arbitrary tags using regular expressions.
109262
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1592 * Select Tags Table:: How to visit a tags table.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1593 * Find Tag:: Commands to find the definition of a specific tag.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1594 * Tags Search:: Using a tags table for searching and replacing.
51ddcf320fe4 Untabify doc/emacs/*.texi files.
Glenn Morris <rgm@gnu.org>
parents: 107974
diff changeset
1595 * List Tags:: Listing and finding tags defined in a file.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1596 @end menu
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1597
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1598 @node Tag Syntax
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1599 @subsection Source File Tag Syntax
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1600
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1601 Here is how tag syntax is defined for the most popular languages:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1602
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1603 @itemize @bullet
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1604 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1605 In C code, any C function or typedef is a tag, and so are definitions of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1606 @code{struct}, @code{union} and @code{enum}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1607 @code{#define} macro definitions, @code{#undef} and @code{enum}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1608 constants are also
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1609 tags, unless you specify @samp{--no-defines} when making the tags table.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1610 Similarly, global variables are tags, unless you specify
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1611 @samp{--no-globals}, and so are struct members, unless you specify
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1612 @samp{--no-members}. Use of @samp{--no-globals}, @samp{--no-defines}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1613 and @samp{--no-members} can make the tags table file much smaller.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1614
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1615 You can tag function declarations and external variables in addition
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1616 to function definitions by giving the @samp{--declarations} option to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1617 @code{etags}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1618
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1619 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1620 In C++ code, in addition to all the tag constructs of C code, member
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1621 functions are also recognized; member variables are also recognized,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1622 unless you use the @samp{--no-members} option. Tags for variables and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1623 functions in classes are named @samp{@var{class}::@var{variable}} and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1624 @samp{@var{class}::@var{function}}. @code{operator} definitions have
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1625 tag names like @samp{operator+}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1626
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1627 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1628 In Java code, tags include all the constructs recognized in C++, plus
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1629 the @code{interface}, @code{extends} and @code{implements} constructs.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1630 Tags for variables and functions in classes are named
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1631 @samp{@var{class}.@var{variable}} and @samp{@var{class}.@var{function}}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1632
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1633 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1634 In La@TeX{} text, the argument of any of the commands @code{\chapter},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1635 @code{\section}, @code{\subsection}, @code{\subsubsection},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1636 @code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1637 @code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1638 @code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1639 @code{\newenvironment} or @code{\renewenvironment} is a tag.@refill
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1640
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1641 Other commands can make tags as well, if you specify them in the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1642 environment variable @env{TEXTAGS} before invoking @code{etags}. The
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1643 value of this environment variable should be a colon-separated list of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1644 command names. For example,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1645
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1646 @example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1647 TEXTAGS="mycommand:myothercommand"
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1648 export TEXTAGS
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1649 @end example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1650
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1651 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1652 specifies (using Bourne shell syntax) that the commands
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1653 @samp{\mycommand} and @samp{\myothercommand} also define tags.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1654
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1655 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1656 In Lisp code, any function defined with @code{defun}, any variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1657 defined with @code{defvar} or @code{defconst}, and in general the first
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1658 argument of any expression that starts with @samp{(def} in column zero is
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1659 a tag.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1660
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1661 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1662 In Scheme code, tags include anything defined with @code{def} or with a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1663 construct whose name starts with @samp{def}. They also include variables
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1664 set with @code{set!} at top level in the file.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1665 @end itemize
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1666
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1667 Several other languages are also supported:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1668
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1669 @itemize @bullet
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1670
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1671 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1672 In Ada code, functions, procedures, packages, tasks and types are
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1673 tags. Use the @samp{--packages-only} option to create tags for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1674 packages only.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1675
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1676 In Ada, the same name can be used for different kinds of entity
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1677 (e.g.@:, for a procedure and for a function). Also, for things like
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1678 packages, procedures and functions, there is the spec (i.e.@: the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1679 interface) and the body (i.e.@: the implementation). To make it
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1680 easier to pick the definition you want, Ada tag name have suffixes
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1681 indicating the type of entity:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1682
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1683 @table @samp
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1684 @item /b
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1685 package body.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1686 @item /f
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1687 function.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1688 @item /k
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1689 task.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1690 @item /p
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1691 procedure.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1692 @item /s
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1693 package spec.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1694 @item /t
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1695 type.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1696 @end table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1697
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1698 Thus, @kbd{M-x find-tag @key{RET} bidule/b @key{RET}} will go
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1699 directly to the body of the package @code{bidule}, while @kbd{M-x
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1700 find-tag @key{RET} bidule @key{RET}} will just search for any tag
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1701 @code{bidule}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1702
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1703 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1704 In assembler code, labels appearing at the beginning of a line,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1705 followed by a colon, are tags.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1706
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1707 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1708 In Bison or Yacc input files, each rule defines as a tag the nonterminal
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1709 it constructs. The portions of the file that contain C code are parsed
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1710 as C code.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1711
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1712 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1713 In Cobol code, tags are paragraph names; that is, any word starting in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1714 column 8 and followed by a period.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1715
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1716 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1717 In Erlang code, the tags are the functions, records and macros defined
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1718 in the file.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1719
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1720 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1721 In Fortran code, functions, subroutines and block data are tags.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1722
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1723 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1724 In HTML input files, the tags are the @code{title} and the @code{h1},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1725 @code{h2}, @code{h3} headers. Also, tags are @code{name=} in anchors
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1726 and all occurrences of @code{id=}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1727
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1728 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1729 In Lua input files, all functions are tags.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1730
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1731 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1732 In makefiles, targets are tags; additionally, variables are tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1733 unless you specify @samp{--no-globals}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1734
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1735 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1736 In Objective C code, tags include Objective C definitions for classes,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1737 class categories, methods and protocols. Tags for variables and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1738 functions in classes are named @samp{@var{class}::@var{variable}} and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1739 @samp{@var{class}::@var{function}}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1740
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1741 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1742 In Pascal code, the tags are the functions and procedures defined in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1743 the file.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1744
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1745 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1746 In Perl code, the tags are the packages, subroutines and variables
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1747 defined by the @code{package}, @code{sub}, @code{my} and @code{local}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1748 keywords. Use @samp{--globals} if you want to tag global variables.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1749 Tags for subroutines are named @samp{@var{package}::@var{sub}}. The
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1750 name for subroutines defined in the default package is
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1751 @samp{main::@var{sub}}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1752
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1753 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1754 In PHP code, tags are functions, classes and defines. Vars are tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1755 too, unless you use the @samp{--no-members} option.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1756
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1757 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1758 In PostScript code, the tags are the functions.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1759
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1760 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1761 In Prolog code, tags are predicates and rules at the beginning of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1762 line.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1763
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1764 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1765 In Python code, @code{def} or @code{class} at the beginning of a line
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1766 generate a tag.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1767 @end itemize
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1768
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1769 You can also generate tags based on regexp matching (@pxref{Etags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1770 Regexps}) to handle other formats and languages.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1771
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1772 @node Create Tags Table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1773 @subsection Creating Tags Tables
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1774 @cindex @code{etags} program
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1775
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1776 The @code{etags} program is used to create a tags table file. It knows
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1777 the syntax of several languages, as described in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1778 @iftex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1779 the previous section.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1780 @end iftex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1781 @ifnottex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1782 @ref{Tag Syntax}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1783 @end ifnottex
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1784 Here is how to run @code{etags}:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1785
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1786 @example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1787 etags @var{inputfiles}@dots{}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1788 @end example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1789
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1790 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1791 The @code{etags} program reads the specified files, and writes a tags
86091
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1792 table named @file{TAGS} in the current working directory. You can
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1793 optionally specify a different file name for the tags table by using the
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1794 @samp{--output=@var{file}} option; specifying @file{-} as a file name
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1795 prints the tags table to standard output.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1796
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1797 If the specified files don't exist, @code{etags} looks for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1798 compressed versions of them and uncompresses them to read them. Under
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1799 MS-DOS, @code{etags} also looks for file names like @file{mycode.cgz}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1800 if it is given @samp{mycode.c} on the command line and @file{mycode.c}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1801 does not exist.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1802
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1803 @code{etags} recognizes the language used in an input file based on
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1804 its file name and contents. You can specify the language with the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1805 @samp{--language=@var{name}} option, described below.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1806
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1807 If the tags table data become outdated due to changes in the files
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1808 described in the table, the way to update the tags table is the same
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1809 way it was made in the first place. If the tags table fails to record
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1810 a tag, or records it for the wrong file, then Emacs cannot possibly
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1811 find its definition until you update the tags table. However, if the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1812 position recorded in the tags table becomes a little bit wrong (due to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1813 other editing), the worst consequence is a slight delay in finding the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1814 tag. Even if the stored position is very far wrong, Emacs will still
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1815 find the tag, after searching most of the file for it. That delay is
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1816 hardly noticeable with today's computers.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1817
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1818 Thus, there is no need to update the tags table after each edit.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1819 You should update a tags table when you define new tags that you want
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1820 to have listed, or when you move tag definitions from one file to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1821 another, or when changes become substantial.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1822
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1823 One tags table can virtually include another. Specify the included
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1824 tags file name with the @samp{--include=@var{file}} option when
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1825 creating the file that is to include it. The latter file then acts as
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1826 if it covered all the source files specified in the included file, as
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1827 well as the files it directly contains.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1828
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1829 If you specify the source files with relative file names when you run
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1830 @code{etags}, the tags file will contain file names relative to the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1831 directory where the tags file was initially written. This way, you can
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1832 move an entire directory tree containing both the tags file and the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1833 source files, and the tags file will still refer correctly to the source
86091
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1834 files. If the tags file is @file{-} or is in the @file{/dev} directory,
f4b63f572df1 Note that you can use "-" with --output=file in Etags.
Francesco Potortì <pot@gnu.org>
parents: 84252
diff changeset
1835 however, the file names are
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1836 made relative to the current working directory. This is useful, for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1837 example, when writing the tags to @file{/dev/stdout}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1838
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1839 When using a relative file name, it should not be a symbolic link
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1840 pointing to a tags file in a different directory, because this would
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1841 generally render the file names invalid.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1842
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1843 If you specify absolute file names as arguments to @code{etags}, then
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1844 the tags file will contain absolute file names. This way, the tags file
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1845 will still refer to the same files even if you move it, as long as the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1846 source files remain in the same place. Absolute file names start with
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1847 @samp{/}, or with @samp{@var{device}:/} on MS-DOS and MS-Windows.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1848
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1849 When you want to make a tags table from a great number of files, you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1850 may have problems listing them on the command line, because some systems
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1851 have a limit on its length. The simplest way to circumvent this limit
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1852 is to tell @code{etags} to read the file names from its standard input,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1853 by typing a dash in place of the file names, like this:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1854
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1855 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1856 find . -name "*.[chCH]" -print | etags -
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1857 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1858
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1859 Use the option @samp{--language=@var{name}} to specify the language
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1860 explicitly. You can intermix these options with file names; each one
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1861 applies to the file names that follow it. Specify
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1862 @samp{--language=auto} to tell @code{etags} to resume guessing the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1863 language from the file names and file contents. Specify
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1864 @samp{--language=none} to turn off language-specific processing
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1865 entirely; then @code{etags} recognizes tags by regexp matching alone
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1866 (@pxref{Etags Regexps}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1867
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1868 The option @samp{--parse-stdin=@var{file}} is mostly useful when
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1869 calling @code{etags} from programs. It can be used (only once) in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1870 place of a file name on the command line. @code{Etags} will read from
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1871 standard input and mark the produced tags as belonging to the file
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1872 @var{file}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1873
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1874 @samp{etags --help} outputs the list of the languages @code{etags}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1875 knows, and the file name rules for guessing the language. It also prints
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1876 a list of all the available @code{etags} options, together with a short
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1877 explanation. If followed by one or more @samp{--language=@var{lang}}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1878 options, it outputs detailed information about how tags are generated for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1879 @var{lang}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1880
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1881 @node Etags Regexps
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1882 @subsection Etags Regexps
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1883
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1884 The @samp{--regex} option provides a general way of recognizing tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1885 based on regexp matching. You can freely intermix this option with
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1886 file names, and each one applies to the source files that follow it.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1887 If you specify multiple @samp{--regex} options, all of them are used
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1888 in parallel. The syntax is:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1889
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1890 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1891 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1892 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1893
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1894 The essential part of the option value is @var{tagregexp}, the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1895 regexp for matching tags. It is always used anchored, that is, it
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1896 only matches at the beginning of a line. If you want to allow
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1897 indented tags, use a regexp that matches initial whitespace; start it
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1898 with @samp{[ \t]*}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1899
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1900 In these regular expressions, @samp{\} quotes the next character, and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1901 all the GCC character escape sequences are supported (@samp{\a} for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1902 bell, @samp{\b} for back space, @samp{\d} for delete, @samp{\e} for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1903 escape, @samp{\f} for formfeed, @samp{\n} for newline, @samp{\r} for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1904 carriage return, @samp{\t} for tab, and @samp{\v} for vertical tab).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1905
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1906 Ideally, @var{tagregexp} should not match more characters than are
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1907 needed to recognize what you want to tag. If the syntax requires you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1908 to write @var{tagregexp} so it matches more characters beyond the tag
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1909 itself, you should add a @var{nameregexp}, to pick out just the tag.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1910 This will enable Emacs to find tags more accurately and to do
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1911 completion on tag names more reliably. You can find some examples
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1912 below.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1913
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1914 The @var{modifiers} are a sequence of zero or more characters that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1915 modify the way @code{etags} does the matching. A regexp with no
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1916 modifiers is applied sequentially to each line of the input file, in a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1917 case-sensitive way. The modifiers and their meanings are:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1918
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1919 @table @samp
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1920 @item i
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1921 Ignore case when matching this regexp.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1922 @item m
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1923 Match this regular expression against the whole file, so that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1924 multi-line matches are possible.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1925 @item s
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1926 Match this regular expression against the whole file, and allow
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1927 @samp{.} in @var{tagregexp} to match newlines.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1928 @end table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1929
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1930 The @samp{-R} option cancels all the regexps defined by preceding
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1931 @samp{--regex} options. It too applies to the file names following
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1932 it. Here's an example:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1933
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1934 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1935 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1936 bar.ber -R --lang=lisp los.er
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1937 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1938
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1939 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1940 Here @code{etags} chooses the parsing language for @file{voo.doo} and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1941 @file{bar.ber} according to their contents. @code{etags} also uses
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1942 @var{reg1} to recognize additional tags in @file{voo.doo}, and both
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1943 @var{reg1} and @var{reg2} to recognize additional tags in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1944 @file{bar.ber}. @var{reg1} is checked against each line of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1945 @file{voo.doo} and @file{bar.ber}, in a case-insensitive way, while
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1946 @var{reg2} is checked against the whole @file{bar.ber} file,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1947 permitting multi-line matches, in a case-sensitive way. @code{etags}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1948 uses only the Lisp tags rules, with no user-specified regexp matching,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1949 to recognize tags in @file{los.er}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1950
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1951 You can restrict a @samp{--regex} option to match only files of a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1952 given language by using the optional prefix @var{@{language@}}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1953 (@samp{etags --help} prints the list of languages recognized by
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1954 @code{etags}.) This is particularly useful when storing many
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1955 predefined regular expressions for @code{etags} in a file. The
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1956 following example tags the @code{DEFVAR} macros in the Emacs source
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1957 files, for the C language only:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1958
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1959 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1960 --regex='@{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/'
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1961 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1962
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1963 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1964 When you have complex regular expressions, you can store the list of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1965 them in a file. The following option syntax instructs @code{etags} to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1966 read two files of regular expressions. The regular expressions
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1967 contained in the second file are matched without regard to case.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1968
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1969 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1970 --regex=@@@var{case-sensitive-file} --ignore-case-regex=@@@var{ignore-case-file}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1971 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1972
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1973 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1974 A regex file for @code{etags} contains one regular expression per
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1975 line. Empty lines, and lines beginning with space or tab are ignored.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1976 When the first character in a line is @samp{@@}, @code{etags} assumes
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1977 that the rest of the line is the name of another file of regular
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1978 expressions; thus, one such file can include another file. All the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1979 other lines are taken to be regular expressions. If the first
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1980 non-whitespace text on the line is @samp{--}, that line is a comment.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1981
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1982 For example, we can create a file called @samp{emacs.tags} with the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1983 following contents:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1984
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1985 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1986 -- This is for GNU Emacs C source files
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1987 @{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1988 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1989
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1990 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1991 and then use it like this:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1992
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1993 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1994 etags --regex=@@emacs.tags *.[ch] */*.[ch]
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1995 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1996
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1997 Here are some more examples. The regexps are quoted to protect them
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1998 from shell interpretation.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1999
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2000 @itemize @bullet
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2001
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2002 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2003 Tag Octave files:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2004
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2005 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2006 etags --language=none \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2007 --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2008 --regex='/###key \(.*\)/\1/' \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2009 --regex='/[ \t]*global[ \t].*/' \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2010 *.m
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2011 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2012
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2013 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2014 Note that tags are not generated for scripts, so that you have to add
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2015 a line by yourself of the form @samp{###key @var{scriptname}} if you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2016 want to jump to it.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2017
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2018 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2019 Tag Tcl files:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2020
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2021 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2022 etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2023 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2024
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2025 @item
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2026 Tag VHDL files:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2027
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2028 @smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2029 etags --language=none \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2030 --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2031 --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2032 \( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2033 @end smallexample
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2034 @end itemize
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2035
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2036 @node Select Tags Table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2037 @subsection Selecting a Tags Table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2038
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2039 @vindex tags-file-name
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2040 @findex visit-tags-table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2041 Emacs has at any time one @dfn{selected} tags table, and all the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2042 commands for working with tags tables use the selected one. To select
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2043 a tags table, type @kbd{M-x visit-tags-table}, which reads the tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2044 table file name as an argument, with @file{TAGS} in the default
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2045 directory as the default.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2046
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2047 Emacs does not actually read in the tags table contents until you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2048 try to use them; all @code{visit-tags-table} does is store the file
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2049 name in the variable @code{tags-file-name}, and setting the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2050 yourself is just as good. The variable's initial value is @code{nil};
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2051 that value tells all the commands for working with tags tables that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2052 they must ask for a tags table file name to use.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2053
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2054 Using @code{visit-tags-table} when a tags table is already loaded
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2055 gives you a choice: you can add the new tags table to the current list
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2056 of tags tables, or start a new list. The tags commands use all the tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2057 tables in the current list. If you start a new list, the new tags table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2058 is used @emph{instead} of others. If you add the new table to the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2059 current list, it is used @emph{as well as} the others.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2060
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2061 @vindex tags-table-list
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2062 You can specify a precise list of tags tables by setting the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2063 @code{tags-table-list} to a list of strings, like this:
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2064
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2065 @c keep this on two lines for formatting in smallbook
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2066 @example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2067 @group
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2068 (setq tags-table-list
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2069 '("~/emacs" "/usr/local/lib/emacs/src"))
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2070 @end group
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2071 @end example
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2072
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2073 @noindent
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2074 This tells the tags commands to look at the @file{TAGS} files in your
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2075 @file{~/emacs} directory and in the @file{/usr/local/lib/emacs/src}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2076 directory. The order depends on which file you are in and which tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2077 table mentions that file, as explained above.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2078
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2079 Do not set both @code{tags-file-name} and @code{tags-table-list}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2080
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2081 @node Find Tag
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2082 @subsection Finding a Tag
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2083
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2084 The most important thing that a tags table enables you to do is to find
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2085 the definition of a specific tag.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2086
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2087 @table @kbd
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2088 @item M-.@: @var{tag} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2089 Find first definition of @var{tag} (@code{find-tag}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2090 @item C-u M-.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2091 Find next alternate definition of last tag specified.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2092 @item C-u - M-.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2093 Go back to previous tag found.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2094 @item C-M-. @var{pattern} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2095 Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2096 @item C-u C-M-.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2097 Find the next tag whose name matches the last pattern used.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2098 @item C-x 4 .@: @var{tag} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2099 Find first definition of @var{tag}, but display it in another window
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2100 (@code{find-tag-other-window}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2101 @item C-x 5 .@: @var{tag} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2102 Find first definition of @var{tag}, and create a new frame to select the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2103 buffer (@code{find-tag-other-frame}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2104 @item M-*
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2105 Pop back to where you previously invoked @kbd{M-.} and friends.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2106 @end table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2107
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2108 @kindex M-.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2109 @findex find-tag
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2110 @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2111 a specified tag. It searches through the tags table for that tag, as a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2112 string, and then uses the tags table info to determine the file that the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2113 definition is in and the approximate character position in the file of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2114 the definition. Then @code{find-tag} visits that file, moves point to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2115 the approximate character position, and searches ever-increasing
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2116 distances away to find the tag definition.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2117
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2118 If an empty argument is given (just type @key{RET}), the balanced
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2119 expression in the buffer before or around point is used as the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2120 @var{tag} argument. @xref{Expressions}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2121
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2122 You don't need to give @kbd{M-.} the full name of the tag; a part
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2123 will do. This is because @kbd{M-.} finds tags in the table which
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2124 contain @var{tag} as a substring. However, it prefers an exact match
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2125 to a substring match. To find other tags that match the same
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2126 substring, give @code{find-tag} a numeric argument, as in @kbd{C-u
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2127 M-.}; this does not read a tag name, but continues searching the tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2128 table's text for another tag containing the same substring last used.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2129 If you have a real @key{META} key, @kbd{M-0 M-.}@: is an easier
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2130 alternative to @kbd{C-u M-.}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2131
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2132 @kindex C-x 4 .
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2133 @findex find-tag-other-window
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2134 @kindex C-x 5 .
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2135 @findex find-tag-other-frame
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2136 Like most commands that can switch buffers, @code{find-tag} has a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2137 variant that displays the new buffer in another window, and one that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2138 makes a new frame for it. The former is @w{@kbd{C-x 4 .}}, which invokes
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2139 the command @code{find-tag-other-window}. The latter is @w{@kbd{C-x 5 .}},
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2140 which invokes @code{find-tag-other-frame}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2141
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2142 To move back to places you've found tags recently, use @kbd{C-u -
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2143 M-.}; more generally, @kbd{M-.} with a negative numeric argument. This
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2144 command can take you to another buffer. @w{@kbd{C-x 4 .}} with a negative
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2145 argument finds the previous tag location in another window.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2146
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2147 @kindex M-*
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2148 @findex pop-tag-mark
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2149 @vindex find-tag-marker-ring-length
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2150 As well as going back to places you've found tags recently, you can go
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2151 back to places @emph{from where} you found them. Use @kbd{M-*}, which
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2152 invokes the command @code{pop-tag-mark}, for this. Typically you would
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2153 find and study the definition of something with @kbd{M-.} and then
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2154 return to where you were with @kbd{M-*}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2155
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2156 Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2157 a depth determined by the variable @code{find-tag-marker-ring-length}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2158
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2159 @findex find-tag-regexp
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2160 @kindex C-M-.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2161 The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2162 match a specified regular expression. It is just like @kbd{M-.} except
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2163 that it does regexp matching instead of substring matching.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2164
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2165 @node Tags Search
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2166 @subsection Searching and Replacing with Tags Tables
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2167 @cindex search and replace in multiple files
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2168 @cindex multiple-file search and replace
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2169
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2170 The commands in this section visit and search all the files listed
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2171 in the selected tags table, one by one. For these commands, the tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2172 table serves only to specify a sequence of files to search. These
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2173 commands scan the list of tags tables starting with the first tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2174 table (if any) that describes the current file, proceed from there to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2175 the end of the list, and then scan from the beginning of the list
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2176 until they have covered all the tables in the list.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2177
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2178 @table @kbd
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2179 @item M-x tags-search @key{RET} @var{regexp} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2180 Search for @var{regexp} through the files in the selected tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2181 table.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2182 @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2183 Perform a @code{query-replace-regexp} on each file in the selected tags table.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2184 @item M-,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2185 Restart one of the commands above, from the current location of point
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2186 (@code{tags-loop-continue}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2187 @end table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2188
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2189 @findex tags-search
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2190 @kbd{M-x tags-search} reads a regexp using the minibuffer, then
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2191 searches for matches in all the files in the selected tags table, one
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2192 file at a time. It displays the name of the file being searched so you
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2193 can follow its progress. As soon as it finds an occurrence,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2194 @code{tags-search} returns.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2195
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2196 @kindex M-,
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2197 @findex tags-loop-continue
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2198 Having found one match, you probably want to find all the rest. To find
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2199 one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2200 @code{tags-search}. This searches the rest of the current buffer, followed
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2201 by the remaining files of the tags table.@refill
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2202
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2203 @findex tags-query-replace
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2204 @kbd{M-x tags-query-replace} performs a single
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2205 @code{query-replace-regexp} through all the files in the tags table. It
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2206 reads a regexp to search for and a string to replace with, just like
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2207 ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2208 tags-search}, but repeatedly, processing matches according to your
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2209 input. @xref{Replace}, for more information on query replace.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2210
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2211 @vindex tags-case-fold-search
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2212 @cindex case-sensitivity and tags search
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2213 You can control the case-sensitivity of tags search commands by
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2214 customizing the value of the variable @code{tags-case-fold-search}. The
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2215 default is to use the same setting as the value of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2216 @code{case-fold-search} (@pxref{Search Case}).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2217
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2218 It is possible to get through all the files in the tags table with a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2219 single invocation of @kbd{M-x tags-query-replace}. But often it is
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2220 useful to exit temporarily, which you can do with any input event that
88056
7dc2524306eb Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 87903
diff changeset
2221 has no special query replace meaning. You can resume the query
7dc2524306eb Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 87903
diff changeset
2222 replace subsequently by typing @kbd{M-,}; this command resumes the
7dc2524306eb Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 87903
diff changeset
2223 last tags search or replace command that you did. For instance, to
7dc2524306eb Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 87903
diff changeset
2224 skip the rest of the current file, you can type @kbd{M-> M-,}.
84252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2225
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2226 The commands in this section carry out much broader searches than the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2227 @code{find-tag} family. The @code{find-tag} commands search only for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2228 definitions of tags that match your substring or regexp. The commands
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2229 @code{tags-search} and @code{tags-query-replace} find every occurrence
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2230 of the regexp, as ordinary search commands and replace commands do in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2231 the current buffer.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2232
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2233 These commands create buffers only temporarily for the files that they
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2234 have to search (those which are not already visited in Emacs buffers).
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2235 Buffers in which no match is found are quickly killed; the others
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2236 continue to exist.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2237
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2238 It may have struck you that @code{tags-search} is a lot like
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2239 @code{grep}. You can also run @code{grep} itself as an inferior of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2240 Emacs and have Emacs show you the matching lines one by one.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2241 @xref{Grep Searching}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2242
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2243 @node List Tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2244 @subsection Tags Table Inquiries
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2245
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2246 @table @kbd
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2247 @item M-x list-tags @key{RET} @var{file} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2248 Display a list of the tags defined in the program file @var{file}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2249 @item M-x tags-apropos @key{RET} @var{regexp} @key{RET}
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2250 Display a list of all tags matching @var{regexp}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2251 @end table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2252
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2253 @findex list-tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2254 @kbd{M-x list-tags} reads the name of one of the files described by
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2255 the selected tags table, and displays a list of all the tags defined in
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2256 that file. The ``file name'' argument is really just a string to
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2257 compare against the file names recorded in the tags table; it is read as
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2258 a string rather than as a file name. Therefore, completion and
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2259 defaulting are not available, and you must enter the file name the same
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2260 way it appears in the tags table. Do not include a directory as part of
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2261 the file name unless the file name recorded in the tags table includes a
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2262 directory.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2263
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2264 @findex tags-apropos
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2265 @vindex tags-apropos-verbose
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2266 @kbd{M-x tags-apropos} is like @code{apropos} for tags
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2267 (@pxref{Apropos}). It finds all the tags in the selected tags table
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2268 whose entries match @var{regexp}, and displays them. If the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2269 @code{tags-apropos-verbose} is non-@code{nil}, it displays the names
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2270 of the tags files together with the tag names.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2271
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2272 @vindex tags-tag-face
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2273 @vindex tags-apropos-additional-actions
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2274 You can customize the appearance of the output by setting the
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2275 variable @code{tags-tag-face} to a face. You can display additional
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2276 output with @kbd{M-x tags-apropos} by customizing the variable
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2277 @code{tags-apropos-additional-actions}---see its documentation for
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2278 details.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2279
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2280 You can also use the collection of tag names to complete a symbol
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2281 name in the buffer. @xref{Symbol Completion}.
fe346181c6f6 Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2282
107974
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2283 @node EDE
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2284 @section Emacs Development Environment
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2285 @cindex EDE (Emacs Development Environment)
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2286 @cindex Emacs Development Environment
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2287 @cindex Integrated development environment
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2288
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2289 EDE (@dfn{Emacs Development Environment}) is a package that simplifies
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2290 the task of creating, building, and debugging large programs with
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2291 Emacs. It provides some of the features of an IDE, or @dfn{Integrated
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2292 Development Environment}, in Emacs.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2293
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2294 This section provides a brief description of EDE usage.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2295 @ifnottex
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2296 For full details, see @ref{Top, EDE,, ede, Emacs Development Environment}.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2297 @end ifnottex
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2298 @iftex
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2299 For full details on Ede, type @kbd{C-h i} and then select the EDE
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2300 manual.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2301 @end iftex
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2302
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2303 EDE is implemented as a global minor mode (@pxref{Minor Modes}). To
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2304 enable it, type @kbd{M-x global-ede-mode} or click on the
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2305 @samp{Project Support (EDE)} item in the @samp{Tools} menu. You can
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2306 also enable EDE each time you start Emacs, by adding the following
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2307 line to your initialization file:
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2308
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2309 @smallexample
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2310 (global-ede-mode t)
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2311 @end smallexample
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2312
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2313 @noindent
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2314 Activating EDE adds a menu named @samp{Development} to the menu bar.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2315 Many EDE commands, including the ones described below, can be invoked
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2316 from this menu.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2317
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2318 EDE organizes files into @dfn{projects}, which correspond to
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2319 directory trees. The @dfn{project root} is the topmost directory of a
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2320 project. To define a new project, visit a file in the desired project
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2321 root and type @kbd{M-x ede-new}. This command prompts for a
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2322 @dfn{project type}, which refers to the underlying method that EDE
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2323 will use to manage the project (@pxref{Creating a Project, EDE,, ede,
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2324 Emacs Development Environment}). The most common project types are
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2325 @samp{Make}, which uses Makefiles, and @samp{Automake}, which uses GNU
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2326 Automake (@pxref{Top, Automake,, automake, Automake}). In both cases,
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2327 EDE also creates a file named @file{Project.ede}, which stores
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2328 information about the project.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2329
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2330 A project may contain one or more @dfn{targets}. A target can be an
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2331 object file, executable program, or some other type of file, which is
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2332 ``built'' from one or more of the files in the project.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2333
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2334 To add a new @dfn{target} to a project, type @kbd{C-c . t}
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2335 (@code{M-x ede-new-target}). This command also asks if you wish to
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2336 ``add'' the current file to that target, which means that the target
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2337 is to be built from that file. After you have defined a target, you
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2338 can add more files to it by typing @kbd{C-c . a}
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2339 (@code{ede-add-file}).
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2340
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2341 To build a target, type @kbd{C-c . c} (@code{ede-compile-target}).
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2342 To build all the targets in the project, type @kbd{C-c . C}
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2343 (@code{ede-compile-project}). EDE uses the file types to guess how
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2344 the target should be built.
23736de70902 * programs.texi (Semantic): New node.
Chong Yidong <cyd@stupidchicken.com>
parents: 107956
diff changeset
2345
112058
053702b1e98a Minor doc fix for manual; bug#7674
Glenn Morris <rgm@gnu.org>
parents: 111761
diff changeset
2346 @ifnottex
053702b1e98a Minor doc fix for manual; bug#7674
Glenn Morris <rgm@gnu.org>
parents: 111761
diff changeset
2347 @include emerge-xtra.texi
053702b1e98a Minor doc fix for manual; bug#7674
Glenn Morris <rgm@gnu.org>
parents: 111761
diff changeset
2348 @end ifnottex
053702b1e98a Minor doc fix for manual; bug#7674
Glenn Morris <rgm@gnu.org>
parents: 111761
diff changeset
2349