Mercurial > emacs
annotate doc/emacs/maintaining.texi @ 107956:69dc127ae6ba
* maintaining.texi (VC Directory Commands): Mention stashes and shelves.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 15 Apr 2010 19:35:59 -0700 |
parents | 5400dec7bad5 |
children | 23736de70902 |
rev | line source |
---|---|
84252 | 1 @c This is part of the Emacs manual. |
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000, | |
106815 | 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 | 5 @c See file emacs.texi for copying conditions. |
6 @node Maintaining, Abbrevs, Building, Top | |
7 @chapter Maintaining Large Programs | |
8 | |
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 | 11 |
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. |
84252 | 14 * Change Log:: Maintaining a change history for your program. |
94293 | 15 * Tags:: Go directly to any function in your program in one |
84252 | 16 command. Tags remembers which file it is in. |
17 @ifnottex | |
18 * Emerge:: A convenient way of merging two versions of a program. | |
19 @end ifnottex | |
20 @end menu | |
21 | |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
22 @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
|
23 @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
|
24 @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
|
25 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
26 A @dfn{version control system} is a package that can record multiple |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
27 versions of a source file, storing information such as the creation |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
28 time of each version, who created it, and a description of what was |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
29 changed in that version. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
30 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
31 The Emacs version control interface is called VC. Its commands work |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
32 with several different version control systems; currently, it supports |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
33 GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS, SCCS/CSSC, and |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
34 Subversion. Of these, the GNU project distributes CVS, GNU Arch, RCS, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
35 and Bazaar. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
36 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
37 VC is enabled automatically whenever you visit a file that is |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
38 governed by a version control system. To disable VC entirely, set the |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
39 customizable variable @code{vc-handled-backends} to @code{nil} |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
40 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
41 (@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
|
42 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
43 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
44 (@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
|
45 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
46 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
47 @menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
48 * 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
|
49 * 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
|
50 * Basic VC Editing:: How to edit a file 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
|
51 * 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
|
52 * 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
|
53 * 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
|
54 * 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
|
55 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
56 * 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
|
57 * 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
|
58 * 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
|
59 * 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
|
60 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
61 @end menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
62 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
63 @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
|
64 @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
|
65 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
66 VC allows you to use a version control system from within Emacs, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
67 integrating the version control operations smoothly with editing. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
68 Though VC cannot completely bridge the gaps between version control |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
69 systems with widely differing capabilities, it does provide a uniform |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
70 interface to many version control operations. Regardless of which |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
71 version control system is in use, you will be able to do basic |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
72 operations in much the same way. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
73 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
74 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
|
75 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
|
76 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
|
77 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
|
78 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
79 @menu |
103843
ca0983922055
(Version Control, Introduction to VC): End menu descriptions with a period.
Glenn Morris <rgm@gnu.org>
parents:
103792
diff
changeset
|
80 * 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
|
81 * 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
|
82 * VCS Concepts:: Words and concepts related 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
|
83 * 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
|
84 @end menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
85 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
86 @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
|
87 @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
|
88 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
89 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
|
90 capabilities: |
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 @itemize @bullet |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
93 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
94 @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
|
95 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
|
96 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
97 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
98 @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
|
99 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
|
100 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
|
101 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
102 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
103 @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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 @end itemize |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
109 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
110 @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
|
111 @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
|
112 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
113 @cindex back end (version control) |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
114 VC currently works with many different version control systems or |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
115 @dfn{back ends}: |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
116 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
117 @itemize @bullet |
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 SCCS |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
120 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
121 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
127 @cindex CSSC |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
128 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
129 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
|
130 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
|
131 control system. |
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 RCS |
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 RCS is the free version control system around which VC was initially |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
136 built. Almost everything you can do with RCS can be done through VC. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
137 However, you cannot use RCS over the network, and it only works at the |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
138 level of individual files rather than projects. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
139 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
140 @cindex CVS |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
141 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
142 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
|
143 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
|
144 is slowly being superseded by newer systems. CVS allows concurrent |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
145 multi-user development either locally or over the network. It lacks |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
146 support for atomic commits or file moving/renaming. VC supports all |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
147 basic editing operations under CVS. For some less common tasks, you |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
148 still need to call CVS from the command line. Note also that before |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
149 using CVS you must set up a repository, which is a subject too complex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
150 to treat here. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
151 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
152 @cindex SVN |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
153 @cindex Subversion |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
154 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
155 Subversion (SVN) is a free version control system designed to be |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
156 similar to CVS but without its problems. It supports atomic commits |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
157 of filesets, and versioning of directories, symbolic links, meta-data, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
158 renames, copies, and deletes. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
159 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
160 @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
|
161 @cindex Arch |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
162 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
163 GNU Arch is a version control system designed for distributed work. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
164 It differs in many ways from older systems like CVS and RCS. It |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
165 provides different methods for interoperating between users, support |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
166 for offline operations, and good branching and merging features. It |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
167 also supports atomic commits of filesets and file moving/renaming. VC |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
168 does not support all operations provided by GNU Arch, so you must |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
169 sometimes invoke it from the command line. |
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 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
173 Git is a distributed version control system invented by Linus Torvalds to support |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
174 development of Linux (his kernel). It supports atomic commits of filesets and |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
175 file moving/renaming. One significant feature of git is that it |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
176 largely abolishes the notion of a single centralized repository; |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
177 instead, each working copy of a git project is its own repository and |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
178 coordination is done through repository-sync operations. VC supports |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
179 most git operations, with the exception of news merges and repository |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
180 syncing; these must be done from the command line. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
181 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
182 @cindex hg |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
183 @cindex Mercurial |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
184 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
185 Mercurial (hg) is a distributed version control system broadly |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
186 resembling GNU Arch and git, with atomic fileset commits and file |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
187 moving/renaming. Like git, it is fully decentralized. VC supports |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
188 most Mercurial commands, with the exception of repository sync |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
189 operations; this needs to be done from the command line. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
190 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
191 @cindex bzr |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
192 @cindex Bazaar |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
193 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
194 Bazaar (bzr) is a distributed version control system that supports both |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
195 repository-based and distributed versioning, with atomic fileset |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
196 commits and file moving/renaming. VC supports most basic editing |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
197 operations under Bazaar. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
198 @end itemize |
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 Previous versions of VC supported a version control system known as |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
201 Meta-CVS. This support has been dropped because of limited interest |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
202 from users and developers. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
203 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
204 @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
|
205 @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
|
206 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
207 @cindex repository |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
208 @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
|
209 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
|
210 @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
|
211 @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
|
212 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
|
213 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
|
214 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
|
215 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
216 @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
|
217 @cindex checking out files |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
218 A file @dfn{checked out} of a repository is called the @dfn{work |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
219 file}. You edit the work file and make changes in it, as you would |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
220 with an ordinary file. After you are done with a set of changes, you |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
221 @dfn{check in} or @dfn{commit} the file; this records the changes in |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
222 the repository, along with a log entry for those changes. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
223 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
224 @cindex revision |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
225 @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
|
226 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
|
227 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
|
228 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
|
229 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
|
230 integer. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
231 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
232 To go beyond these basic concepts, you will need to understand three |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
233 aspects in which version control systems differ. |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
234 They can be locking-based or merging-based; they can be file-based or |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
235 changeset-based; and they can be centralized or decentralized. VC |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
236 handles all 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
|
237 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
238 @cindex locking versus merging |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
239 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
|
240 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
|
241 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
|
242 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
243 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
|
244 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
|
245 @dfn{merge} your work file, which may contain changes that have not |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
246 been checked in, with the latest changes that others have checked into |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
247 the repository. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
248 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
249 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
|
250 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
|
251 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
|
252 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
|
253 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
|
254 uses to detect simultaneous editing of ordinary files |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
255 (@pxref{Interlocking}). When you check in your changes, that unlocks |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
256 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
|
257 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
|
258 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
259 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
|
260 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
|
261 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
|
262 unable to because it is locked. In merging systems, @dfn{merge |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
263 conflicts} happen when you check in a change to a file that conflicts |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
264 with a change checked in by someone else after your checkout. Both |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
265 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
|
266 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
|
267 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
|
268 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
|
269 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
270 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
|
271 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
|
272 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
|
273 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
|
274 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
|
275 |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
276 VC mode supports both locking and merging version control. The |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
277 terms ``checkin'' and ``checkout'' come from locking-based version |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
278 control systems; newer version control systems have slightly different |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
279 operations usually called ``commit'' and ``update'', but VC hides the |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
280 differences between them as much as possible. |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
281 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
282 @cindex files versus changesets. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
283 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
|
284 control operations are @dfn{file-based}: each file has its own comment |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
285 and revision history separate from that of all other 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
|
286 system. Later systems, beginning with Subversion, are |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
287 @dfn{changeset-based}: a checkin may include changes to several files, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
288 and the entire set of changes is treated as a unit by the system. Any |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
289 comment associated with the change does not belong to a single file, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
290 but to the changeset itself. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
291 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
292 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
|
293 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
|
294 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
|
295 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
|
296 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
297 @cindex centralized vs. decentralized version control |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
298 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
|
299 @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
|
300 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
|
301 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
|
302 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
|
303 |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
304 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
|
305 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
|
306 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
|
307 sort of super-merge between repositories that tries to reconcile their |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
308 change histories. At the limit, each developer has his/her own |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
309 repository, and repository merges replace checkin/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
|
310 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
311 VC's job is to help you manage the traffic between your personal |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
312 workfiles and a repository. Whether that repository is a single |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
313 master or one of a network of peer repositories is not something VC |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
314 has to care about. Thus, the difference between a centralized and a |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
315 decentralized version control system is invisible to VC mode. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
316 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
317 @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
|
318 @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
|
319 @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
|
320 @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
|
321 @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
|
322 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
323 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
|
324 for changes. One is the log maintained by 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
|
325 each time you check in a change, you fill out a @dfn{log entry} for |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
326 the change (@pxref{Log Buffer}). This is called the @dfn{version |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
327 control log}. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
328 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
329 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
|
330 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
|
331 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
|
332 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
|
333 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
|
334 @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
|
335 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
|
336 |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
337 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
|
338 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
|
339 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
|
340 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
|
341 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
|
342 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
343 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
|
344 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
|
345 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
|
346 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
|
347 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
348 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
|
349 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
|
350 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
|
351 @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
|
352 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
|
353 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
|
354 @file{ChangeLog} |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
355 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
356 (@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
|
357 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
358 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
359 (@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
|
360 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
361 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
362 @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
|
363 @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
|
364 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
365 When you visit a file that is under version control, Emacs indicates |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
366 this on the mode line. For example, @samp{RCS-1.3} says that RCS is |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
367 used for that file, and the current version is 1.3. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
368 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
369 The character between the back-end name and 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
|
370 indicates the version control status of the file. @samp{-} means that |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
371 the work file is not locked (if locking is in use), or not modified (if |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
372 locking is not in use). @samp{:} indicates that the file is locked, or |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
373 that it is modified. If the file is locked by some other user (for |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
374 instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}. |
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} |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
379 over the indicator pops up a menu of VC commands. This menu is |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
380 identical to the @samp{Tools / Version Control} menu item. |
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 |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
432 Support for VC filesets and changeset-based 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
|
433 is the main improvement to VC in Emacs 23. When you mark multi-file |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
434 VC in a VC Directory buffer, VC operations treat them as a VC fileset, |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
435 and operate on them all at once if the version control system is |
99307 | 436 changeset-based. @xref{VC Directory Mode}. |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
437 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
438 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
|
439 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
|
440 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
|
441 across sessions. |
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 @menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
444 * 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
|
445 * 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
|
446 * 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
|
447 * Log Buffer:: Features available in log entry buffers. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
448 @end menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
449 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
450 @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
|
451 @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
|
452 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
453 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
|
454 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
|
455 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
|
456 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
|
457 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
|
458 (@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
|
459 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
460 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
|
461 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
462 @itemize @bullet |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
463 @item |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
464 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
|
465 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
|
466 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
|
467 |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
468 @item |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
469 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
|
470 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
|
471 |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
472 @item |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
473 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
|
474 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
475 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
476 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
|
477 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
|
478 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
479 @item |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
480 If you have made modifications to the work file, attempts to check in |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
481 your changes. To do this, Emacs first reads the log entry for the new |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
482 revision (@pxref{Log Buffer}). If some other user has checked in |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
483 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
|
484 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
|
485 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
|
486 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
|
487 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
|
488 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
|
489 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
490 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
|
491 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
|
492 @xref{Merging}. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
493 @end itemize |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
494 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
495 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
|
496 except that changes are not automatically merged from the repository. |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
497 Nothing informs you if another user has checked in changes in the same |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
498 file since you began editing it; when you check in your revision, his |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
499 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
|
500 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
|
501 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
|
502 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
|
503 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
|
504 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
|
505 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
506 @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
|
507 @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
|
508 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
509 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
|
510 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
|
511 |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
512 @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
|
513 @item |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
514 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
|
515 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
|
516 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
517 @item |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
518 If the file is locked by you, and contains changes, check in the |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
519 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
|
520 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
|
521 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
522 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
523 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
|
524 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
|
525 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
526 @item |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
527 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
|
528 ``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
|
529 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
|
530 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
|
531 @end itemize |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
532 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
533 These rules also apply when you use CVS in locking mode, except |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
534 that there is no such thing as stealing a lock. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
535 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
536 @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
|
537 @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
|
538 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
539 @cindex revision ID to check in/out |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
540 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
|
541 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
|
542 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
|
543 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
|
544 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
545 @itemize @bullet |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
546 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
547 If the file is modified (or locked), you can specify 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
|
548 to use for the new version that you check in. This is one way |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
549 to create a new branch (@pxref{Branches}). |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
550 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
551 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
552 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
|
553 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
|
554 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
|
555 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
|
556 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
|
557 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
|
558 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
559 @item |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
560 @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
|
561 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
|
562 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
|
563 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
|
564 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
565 (@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
|
566 Features}). |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
567 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
568 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
569 (@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
|
570 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
571 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
572 @end itemize |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
573 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
574 @node Log Buffer |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
575 @subsubsection Features of the Log Entry Buffer |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
576 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
577 When you check in changes, Emacs pops up a buffer called |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
578 @samp{*VC-Log*} for you to enter a log entry. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
579 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
580 After you have finished editing the log message, 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
|
581 to exit the buffer and commit the change. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
582 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
583 @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
|
584 @findex log-edit-show-diff |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
585 In the @samp{*VC-Log*} buffer, typing @kbd{C-c C-f} |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
586 (@code{log-edit-show-files}) displays a list of files 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
|
587 fileset you are committing. If you called @kbd{C-x v v} directly from |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
588 a work file, the VC fileset consists of that single file, so this |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
589 command is not very useful. If you called @kbd{C-x v v} from a VC |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
590 directory buffer, the VC fileset may consist 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
|
591 (@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
|
592 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
593 @findex log-edit-insert-changelog |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
594 Type @kbd{C-c C-d} (@code{log-edit-show-diff}) to show a ``diff'' of |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
595 the changes you have made (i.e., the differences between 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
|
596 and the repository revision from which you started 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
|
597 The diff is displayed in a special buffer in another window. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
598 @xref{Comparing Files}. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
599 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
600 If you have written an entry in the @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
|
601 Log}), type @kbd{C-c C-a} (@code{log-edit-insert-changelog}) to pull |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
602 it into the @samp{*VC-Log*} buffer. If the topmost item in the |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
603 @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
|
604 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
|
605 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
|
606 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
607 @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
|
608 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
609 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
610 @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
|
611 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
612 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
|
613 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
|
614 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
615 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
|
616 buffer. You can switch buffers and do other editing. As long as you |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
617 don't try to check in another file, the entry you were editing remains |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
618 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
|
619 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
|
620 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
621 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
|
622 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
|
623 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
|
624 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
|
625 individual files.) The most convenient way to do this is to mark all |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
626 the files in VC Directory Mode and check in from there; the log buffer |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
627 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
|
628 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
|
629 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
630 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
|
631 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
|
632 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
|
633 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
|
634 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
|
635 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
|
636 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
637 @vindex vc-log-mode-hook |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
638 Each time you check in a change, the log entry buffer is put into VC |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
639 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
|
640 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
|
641 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
642 @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
|
643 @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
|
644 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
645 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
|
646 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
|
647 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
648 @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
|
649 @item C-x v ~ |
107680
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
650 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
|
651 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
|
652 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
653 @item C-x v = |
107680
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
654 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
|
655 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
|
656 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
|
657 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
|
658 |
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
659 @item C-x v D |
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
660 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
|
661 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
|
662 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
|
663 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
664 @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
|
665 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
|
666 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
|
667 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
668 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
669 @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
|
670 @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
|
671 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
|
672 ~ @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
|
673 @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
|
674 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
|
675 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
676 (@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
|
677 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
678 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
679 (@pxref{Tags}). |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
680 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
681 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
|
682 @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
|
683 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
|
684 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
685 @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
|
686 @kindex C-x v = |
107680
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
687 @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
|
688 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
|
689 from which you started editing. Note that the latter may or may not |
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
690 be the latest revision of the file(s). The diff is displayed in a |
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
691 special buffer in another window. @xref{Comparing Files}. |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
692 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
693 @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
|
694 @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
|
695 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
|
696 @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
|
697 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
|
698 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
|
699 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
|
700 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
|
701 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
702 (@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
|
703 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
704 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
705 (@pxref{Tags}). |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
706 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
707 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
|
708 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
|
709 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
|
710 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
|
711 way. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
712 |
107680
d3e4095893c1
* maintaining.texi (Old Revisions): Document vc-root-diff.
Chong Yidong <cyd@stupidchicken.com>
parents:
107678
diff
changeset
|
713 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
|
714 @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
|
715 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
|
716 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
|
717 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
|
718 |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
719 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
|
720 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
|
721 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
|
722 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
|
723 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
724 @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
|
725 @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
|
726 @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
|
727 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
|
728 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
|
729 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
|
730 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
|
731 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
|
732 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
|
733 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
|
734 @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
|
735 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
|
736 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
|
737 @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
|
738 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
739 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
|
740 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
|
741 @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
|
742 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
|
743 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
|
744 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
745 @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
|
746 @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
|
747 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
|
748 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
|
749 (@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
|
750 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
|
751 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
|
752 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
|
753 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
|
754 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
|
755 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
756 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
|
757 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
|
758 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
|
759 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
|
760 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
761 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
|
762 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
|
763 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
|
764 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
|
765 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
766 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
767 @item p |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
768 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
|
769 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
|
770 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
|
771 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
772 @item n |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
773 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
|
774 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
|
775 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
776 @item j |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
777 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
|
778 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
779 @item a |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
780 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
|
781 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
|
782 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
|
783 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
784 @item f |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
785 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
|
786 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
787 @item d |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
788 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
|
789 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
|
790 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
|
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 D |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
793 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
|
794 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
|
795 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
|
796 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
|
797 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
798 @item l |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
799 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
|
800 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
|
801 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 w |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
804 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
|
805 @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
|
806 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
|
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 v |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
809 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
|
810 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
|
811 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
812 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
813 @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
|
814 @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
|
815 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
816 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
|
817 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
818 @menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
819 * 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
|
820 * 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
|
821 * 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
|
822 @end menu |
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 @node Registering |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
825 @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
|
826 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
827 @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
|
828 @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
|
829 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
|
830 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
|
831 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
832 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
833 @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
|
834 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
|
835 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
836 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
837 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
|
838 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
|
839 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
|
840 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
|
841 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
|
842 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
843 (@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
|
844 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
845 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
846 (@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
|
847 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
848 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
|
849 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
|
850 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
|
851 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
|
852 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
|
853 situation. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
854 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
855 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
|
856 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
|
857 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
|
858 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
|
859 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
|
860 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
861 @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
|
862 @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
|
863 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
|
864 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
|
865 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
|
866 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
|
867 @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
|
868 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
|
869 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
|
870 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
871 @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
|
872 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
|
873 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
|
874 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
|
875 |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
876 @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
|
877 @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
|
878 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
879 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
880 @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
|
881 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
|
882 (@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
|
883 |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
884 @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
|
885 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
|
886 (@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
|
887 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
888 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
889 @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
|
890 @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
|
891 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
|
892 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
|
893 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
|
894 (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
|
895 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
|
896 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
|
897 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
|
898 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
|
899 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
|
900 |
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
901 @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
|
902 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
|
903 @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
|
904 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
|
905 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
|
906 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
|
907 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
908 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
|
909 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
|
910 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
|
911 diffs: |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
912 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
913 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
914 @item p |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
915 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
|
916 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
|
917 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
|
918 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
|
919 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
920 @item n |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
921 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
|
922 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
|
923 count. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
924 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
925 @item P |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
926 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
|
927 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
|
928 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
|
929 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
|
930 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
931 @item N |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
932 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
|
933 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
|
934 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
|
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 a |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
937 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
|
938 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
939 @item e |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
940 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
|
941 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
|
942 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
943 @item f |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
944 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
|
945 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
|
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 d |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
948 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
|
949 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
|
950 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
|
951 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
|
952 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
953 @item D |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
954 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
|
955 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
|
956 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
|
957 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
|
958 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
959 |
107676
e0b20352344e
Document VC changes: vc-log-show-limit and vc-print-root-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
960 @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
|
961 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
|
962 @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
|
963 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
|
964 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
|
965 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
|
966 @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
|
967 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
|
968 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
|
969 |
99291
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
970 @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
|
971 @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
|
972 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
973 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
974 @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
|
975 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
|
976 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
|
977 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
978 @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
|
979 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
|
980 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
|
981 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
982 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
983 @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
|
984 @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
|
985 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
|
986 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
|
987 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
|
988 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
|
989 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
|
990 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
|
991 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
|
992 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
993 @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
|
994 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
|
995 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
996 @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
|
997 @findex vc-rollback |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
998 To cancel a change that you already checked in, use @kbd{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
|
999 (@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
|
1000 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
|
1001 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
|
1002 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
|
1003 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
|
1004 historical relic. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1005 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1006 @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
|
1007 @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
|
1008 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1009 @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
|
1010 @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
|
1011 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
|
1012 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
|
1013 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
|
1014 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
|
1015 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
|
1016 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
|
1017 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
|
1018 window. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1019 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1020 @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
|
1021 @pindex cvs |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1022 @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
|
1023 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
|
1024 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
|
1025 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
|
1026 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
|
1027 |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1028 @menu |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1029 * 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
|
1030 * 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
|
1031 @end menu |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1032 |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1033 @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
|
1034 @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
|
1035 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1036 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
|
1037 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
|
1038 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
|
1039 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
|
1040 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
|
1041 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
|
1042 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
|
1043 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1044 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
|
1045 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
|
1046 @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
|
1047 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1048 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
|
1049 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
|
1050 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
|
1051 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
|
1052 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1053 @smallexample |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1054 @group |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1055 ./ |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1056 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
|
1057 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
|
1058 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
|
1059 @end group |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1060 @end smallexample |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1061 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1062 @noindent |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1063 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
|
1064 repository, and @samp{file2.c} is not. @samp{file3.c} is modified, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1065 but other changes have also been checked in to the repository---you |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1066 need to merge them with the work file before you can check it in. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1067 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1068 @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
|
1069 @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
|
1070 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
|
1071 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
|
1072 @code{vc-cvs-stay-local}) is @code{nil} |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1073 @iftex |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1074 (@pxref{CVS Options,,,emacs-xtra, Specialized Emacs Features}). |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1075 @end iftex |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1076 @ifnottex |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1077 (@pxref{CVS Options}). |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1078 @end ifnottex |
0b604d32b97d
(VC Directory Buffer): Fix cross-reference.
Glenn Morris <rgm@gnu.org>
parents:
103079
diff
changeset
|
1079 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
|
1080 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
|
1081 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
|
1082 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
|
1083 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
|
1084 @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
|
1085 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1086 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
|
1087 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
|
1088 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
|
1089 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
|
1090 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
|
1091 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1092 @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
|
1093 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
|
1094 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
|
1095 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
|
1096 @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
|
1097 @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
|
1098 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1099 @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
|
1100 @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
|
1101 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1102 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
|
1103 for picking out filesets. Some of these are also available in a |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1104 context menu invoked by the @kbd{mouse-2} button. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1105 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1106 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
|
1107 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
|
1108 @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
|
1109 up-arrow. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1110 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1111 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
|
1112 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
|
1113 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
|
1114 |
102444
4e88a32df6bf
(VC Directory Commands): Fix doc for the x key in
Dan Nicolaescu <dann@ics.uci.edu>
parents:
100974
diff
changeset
|
1115 @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
|
1116 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1117 @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
|
1118 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
|
1119 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
|
1120 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
|
1121 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
|
1122 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1123 @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
|
1124 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
|
1125 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
|
1126 directories. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1127 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1128 @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
|
1129 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
|
1130 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1131 @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
|
1132 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
|
1133 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
|
1134 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
|
1135 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1136 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
|
1137 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
|
1138 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
|
1139 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
|
1140 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
|
1141 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1142 @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
|
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{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
|
1145 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1146 @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
|
1147 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1148 @kbd{M-s a C-M-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
|
1149 |
107956
69dc127ae6ba
* maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents:
107953
diff
changeset
|
1150 @cindex stashes in version control |
69dc127ae6ba
* maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents:
107953
diff
changeset
|
1151 @cindex shelves in version control |
69dc127ae6ba
* maintaining.texi (VC Directory Commands): Mention stashes and shelves.
Glenn Morris <rgm@gnu.org>
parents:
107953
diff
changeset
|
1152 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
|
1153 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
|
1154 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
|
1155 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
|
1156 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
|
1157 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
|
1158 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1159 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
|
1160 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
|
1161 @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
|
1162 @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
|
1163 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1164 The command @kbd{C-x v v} (@code{vc-next-action}) operates on all the |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1165 marked files, so that you can check in several files at once. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1166 If the underlying VC supports atomic commits of multiple-file |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1167 changesets, @kbd{C-x v v} with a selected set of modified but not |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1168 committed files will commit all of them at once as a single changeset. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1169 |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1170 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
|
1171 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
|
1172 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
|
1173 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
|
1174 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
|
1175 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
|
1176 individually. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1177 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1178 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
|
1179 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
|
1180 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
|
1181 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
|
1182 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1183 @node Branches |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1184 @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
|
1185 @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
|
1186 @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
|
1187 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1188 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
|
1189 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
|
1190 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
|
1191 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
|
1192 @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
|
1193 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
|
1194 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
|
1195 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1196 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
|
1197 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
|
1198 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
|
1199 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
|
1200 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1201 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
|
1202 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
|
1203 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
|
1204 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
|
1205 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
|
1206 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
|
1207 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
|
1208 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1209 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
|
1210 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
|
1211 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
|
1212 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
|
1213 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
|
1214 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
|
1215 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1216 @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
|
1217 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
|
1218 @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
|
1219 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
|
1220 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
|
1221 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1222 @menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1223 * 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
|
1224 * 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
|
1225 * 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
|
1226 * 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
|
1227 in parallel. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1228 @end menu |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1229 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1230 @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
|
1231 @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
|
1232 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1233 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
|
1234 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
|
1235 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
|
1236 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
|
1237 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
|
1238 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1239 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
|
1240 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
|
1241 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
|
1242 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
|
1243 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1244 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
|
1245 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
|
1246 other branch. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1247 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1248 @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
|
1249 @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
|
1250 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1251 To create a new branch from a head revision (one that is the latest in |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1252 the branch that contains it), first select that revision if necessary, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1253 lock it with @kbd{C-x v v}, and make whatever changes you want. Then, |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1254 when you check in the changes, use @kbd{C-u C-x v v}. This lets you |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1255 specify the revision ID for the new revision. You should specify a |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1256 suitable branch ID for a branch starting at the current revision. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1257 For example, if the current revision is 2.5, the branch ID should be |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1258 2.5.1, 2.5.2, and so on, depending on the number of existing branches at |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1259 that point. |
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 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
|
1262 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
|
1263 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
|
1264 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
|
1265 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1266 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
|
1267 @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
|
1268 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
|
1269 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
|
1270 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
|
1271 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1272 Then make your changes and type @kbd{C-x v v} again to check in a new |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1273 revision. This automatically creates a new branch starting from the |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1274 selected revision. You need not specially request a new branch, because |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1275 that's the only way to add a new revision at a point that is not the head |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1276 of a branch. |
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 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
|
1279 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
|
1280 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
|
1281 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
|
1282 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
|
1283 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1284 @node Merging |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1285 @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
|
1286 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1287 @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
|
1288 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
|
1289 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
|
1290 (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
|
1291 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
|
1292 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
|
1293 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
|
1294 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1295 @table @kbd |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1296 @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
|
1297 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
|
1298 @end table |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1299 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1300 @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
|
1301 @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
|
1302 @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
|
1303 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
|
1304 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
|
1305 @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
|
1306 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
|
1307 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
|
1308 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
|
1309 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1310 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
|
1311 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
|
1312 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
|
1313 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
|
1314 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1315 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
|
1316 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
|
1317 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
|
1318 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
|
1319 @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
|
1320 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
|
1321 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
|
1322 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
|
1323 the last revision on the branch) and merges it into the current revision |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1324 of the work file. You can now check in the changed file, thus creating |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1325 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
|
1326 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1327 It is possible to do further editing after merging the branch, before |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1328 the next check-in. But it is usually wiser to check in the merged |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1329 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
|
1330 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
|
1331 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1332 @cindex conflicts |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1333 @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
|
1334 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
|
1335 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
|
1336 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
|
1337 conflict}. |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1338 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1339 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
|
1340 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
|
1341 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
|
1342 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
|
1343 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1344 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
|
1345 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
|
1346 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
|
1347 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
|
1348 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1349 @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
|
1350 @smallexample |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1351 @group |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1352 @w{<}<<<<<< name |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1353 @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
|
1354 ======= |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1355 @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
|
1356 @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
|
1357 @end group |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1358 @end smallexample |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1359 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1360 @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
|
1361 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
|
1362 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
|
1363 This starts an Ediff session, as described above. Don't forget to |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1364 check in the merged version afterwards. |
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 @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
|
1367 @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
|
1368 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1369 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
|
1370 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
|
1371 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
|
1372 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
|
1373 @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
|
1374 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
|
1375 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
|
1376 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1377 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
|
1378 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
|
1379 @iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1380 (@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
|
1381 @end iftex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1382 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1383 (@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
|
1384 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1385 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
|
1386 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
|
1387 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1388 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
|
1389 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
|
1390 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
|
1391 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
|
1392 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
|
1393 |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1394 @ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1395 @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
|
1396 @end ifnottex |
a3986c03d1ed
(Change Log): Document log-edit-insert-changelog and vc-update-change-log.
Chong Yidong <cyd@stupidchicken.com>
parents:
99281
diff
changeset
|
1397 |
84252 | 1398 @node Change Log |
1399 @section Change Logs | |
1400 | |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1401 @cindex change log |
84252 | 1402 A change log file contains a chronological record of when and why you |
1403 have changed a program, consisting of a sequence of entries describing | |
1404 individual changes. Normally it is kept in a file called | |
1405 @file{ChangeLog} in the same directory as the file you are editing, or | |
1406 one of its parent directories. A single @file{ChangeLog} file can | |
1407 record changes for all the files in its directory and all its | |
1408 subdirectories. | |
1409 | |
99299
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1410 @menu |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1411 * 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
|
1412 * 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
|
1413 @end menu |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1414 |
8460775a4023
(Types of Log File): Change logs are older than version control.
Richard M. Stallman <rms@gnu.org>
parents:
99291
diff
changeset
|
1415 @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
|
1416 @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
|
1417 |
84252 | 1418 @kindex C-x 4 a |
1419 @findex add-change-log-entry-other-window | |
1420 The Emacs command @kbd{C-x 4 a} adds a new entry to the change log | |
1421 file for the file you are editing | |
1422 (@code{add-change-log-entry-other-window}). If that file is actually | |
1423 a backup file, it makes an entry appropriate for the file's | |
1424 parent---that is useful for making log entries for functions that | |
1425 have been deleted in the current version. | |
1426 | |
1427 @kbd{C-x 4 a} visits the change log file and creates a new entry | |
1428 unless the most recent entry is for today's date and your name. It | |
1429 also creates a new item for the current file. For many languages, it | |
1430 can even guess the name of the function or other object that was | |
1431 changed. | |
1432 | |
1433 @vindex add-log-keep-changes-together | |
1434 When the variable @code{add-log-keep-changes-together} is | |
1435 non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file | |
1436 rather than starting a new item. | |
1437 | |
1438 @vindex add-log-always-start-new-record | |
1439 If @code{add-log-always-start-new-record} is non-@code{nil}, | |
1440 @kbd{C-x 4 a} always makes a new entry, even if the last entry | |
1441 was made by you and on the same date. | |
1442 | |
1443 @vindex change-log-version-info-enabled | |
1444 @vindex change-log-version-number-regexp-list | |
1445 @cindex file version in change log entries | |
1446 If the value of the variable @code{change-log-version-info-enabled} | |
1447 is non-@code{nil}, @kbd{C-x 4 a} adds the file's version number to the | |
1448 change log entry. It finds the version number by searching the first | |
1449 ten percent of the file, using regular expressions from the variable | |
1450 @code{change-log-version-number-regexp-list}. | |
1451 | |
1452 @cindex Change Log mode | |
1453 @findex change-log-mode | |
1454 The change log file is visited in Change Log mode. In this major | |
1455 mode, each bunch of grouped items counts as one paragraph, and each | |
1456 entry is considered a page. This facilitates editing the entries. | |
1457 @kbd{C-j} and auto-fill indent each new line like the previous line; | |
1458 this is convenient for entering the contents of an entry. | |
1459 | |
97440
4844a1945892
(Change Log): Mention next-error is available.
Teodor Zlatanov <tzz@lifelogs.com>
parents:
94293
diff
changeset
|
1460 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
|
1461 @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
|
1462 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
|
1463 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
|
1464 @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
|
1465 |
84252 | 1466 @findex change-log-merge |
1467 You can use the command @kbd{M-x change-log-merge} to merge other | |
1468 log files into a buffer in Change Log Mode, preserving the date | |
1469 ordering of entries. | |
1470 | |
99281
7b138a462a57
(Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents:
97440
diff
changeset
|
1471 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
|
1472 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
|
1473 @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
|
1474 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
|
1475 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
|
1476 (@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
|
1477 @iftex |
7b138a462a57
(Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents:
97440
diff
changeset
|
1478 (@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
|
1479 @end iftex |
7b138a462a57
(Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents:
97440
diff
changeset
|
1480 @ifnottex |
7b138a462a57
(Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents:
97440
diff
changeset
|
1481 (@pxref{Change Logs and VC}). |
7b138a462a57
(Change Log): Document log-edit-insert-changelog and
Chong Yidong <cyd@stupidchicken.com>
parents:
97440
diff
changeset
|
1482 @end ifnottex |
84252 | 1483 |
1484 @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
|
1485 @subsection Format of ChangeLog |
84252 | 1486 |
1487 A change log entry starts with a header line that contains the current | |
1488 date, your name, and your email address (taken from the variable | |
1489 @code{add-log-mailing-address}). Aside from these header lines, every | |
1490 line in the change log starts with a space or a tab. The bulk of the | |
1491 entry consists of @dfn{items}, each of which starts with a line starting | |
1492 with whitespace and a star. Here are two entries, both dated in May | |
1493 1993, with two items and one item respectively. | |
1494 | |
1495 @iftex | |
1496 @medbreak | |
1497 @end iftex | |
1498 @smallexample | |
1499 1993-05-25 Richard Stallman <rms@@gnu.org> | |
1500 | |
1501 * man.el: Rename symbols `man-*' to `Man-*'. | |
1502 (manual-entry): Make prompt string clearer. | |
1503 | |
1504 * simple.el (blink-matching-paren-distance): | |
1505 Change default to 12,000. | |
1506 | |
1507 1993-05-24 Richard Stallman <rms@@gnu.org> | |
1508 | |
1509 * vc.el (minor-mode-map-alist): Don't use it if it's void. | |
1510 (vc-cancel-version): Doc fix. | |
1511 @end smallexample | |
1512 | |
1513 One entry can describe several changes; each change should have its | |
1514 own item, or its own line in an item. Normally there should be a | |
1515 blank line between items. When items are related (parts of the same | |
1516 change, in different places), group them by leaving no blank line | |
1517 between them. | |
1518 | |
1519 You should put a copyright notice and permission notice at the | |
1520 end of the change log file. Here is an example: | |
1521 | |
1522 @smallexample | |
1523 Copyright 1997, 1998 Free Software Foundation, Inc. | |
1524 Copying and distribution of this file, with or without modification, are | |
1525 permitted provided the copyright notice and this notice are preserved. | |
1526 @end smallexample | |
1527 | |
1528 @noindent | |
1529 Of course, you should substitute the proper years and copyright holder. | |
1530 | |
1531 @node Tags | |
1532 @section Tags Tables | |
91507 | 1533 @cindex tags and tag tables |
84252 | 1534 |
103078
ffe7eb45a537
(Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents:
103073
diff
changeset
|
1535 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
|
1536 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
|
1537 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
|
1538 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
|
1539 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
|
1540 defined, and the position of the subunit's definition in that file. |
84252 | 1541 |
103078
ffe7eb45a537
(Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents:
103073
diff
changeset
|
1542 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
|
1543 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
|
1544 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
|
1545 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
|
1546 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
|
1547 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
|
1548 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
|
1549 source files. |
84252 | 1550 |
103079
479179722385
(Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents:
103078
diff
changeset
|
1551 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
|
1552 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
|
1553 @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
|
1554 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
|
1555 |
056e34bacfbc
(Tags): Clarify the text some more.
Eli Zaretskii <eliz@gnu.org>
parents:
103068
diff
changeset
|
1556 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
|
1557 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
|
1558 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
|
1559 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
|
1560 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
|
1561 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
|
1562 within that file where the function is defined. |
84252 | 1563 |
1564 @cindex C++ class browser, tags | |
1565 @cindex tags, C++ | |
1566 @cindex class browser, C++ | |
1567 @cindex Ebrowse | |
1568 See also the Ebrowse facility, which is tailored for C++. | |
1569 @xref{Top,, Ebrowse, ebrowse, Ebrowse User's Manual}. | |
1570 | |
1571 @menu | |
1572 * Tag Syntax:: Tag syntax for various types of code and text files. | |
1573 * Create Tags Table:: Creating a tags table with @code{etags}. | |
1574 * Etags Regexps:: Create arbitrary tags using regular expressions. | |
1575 * Select Tags Table:: How to visit a tags table. | |
1576 * Find Tag:: Commands to find the definition of a specific tag. | |
1577 * Tags Search:: Using a tags table for searching and replacing. | |
1578 * List Tags:: Listing and finding tags defined in a file. | |
1579 @end menu | |
1580 | |
1581 @node Tag Syntax | |
1582 @subsection Source File Tag Syntax | |
1583 | |
1584 Here is how tag syntax is defined for the most popular languages: | |
1585 | |
1586 @itemize @bullet | |
1587 @item | |
1588 In C code, any C function or typedef is a tag, and so are definitions of | |
1589 @code{struct}, @code{union} and @code{enum}. | |
1590 @code{#define} macro definitions, @code{#undef} and @code{enum} | |
1591 constants are also | |
1592 tags, unless you specify @samp{--no-defines} when making the tags table. | |
1593 Similarly, global variables are tags, unless you specify | |
1594 @samp{--no-globals}, and so are struct members, unless you specify | |
1595 @samp{--no-members}. Use of @samp{--no-globals}, @samp{--no-defines} | |
1596 and @samp{--no-members} can make the tags table file much smaller. | |
1597 | |
1598 You can tag function declarations and external variables in addition | |
1599 to function definitions by giving the @samp{--declarations} option to | |
1600 @code{etags}. | |
1601 | |
1602 @item | |
1603 In C++ code, in addition to all the tag constructs of C code, member | |
1604 functions are also recognized; member variables are also recognized, | |
1605 unless you use the @samp{--no-members} option. Tags for variables and | |
1606 functions in classes are named @samp{@var{class}::@var{variable}} and | |
1607 @samp{@var{class}::@var{function}}. @code{operator} definitions have | |
1608 tag names like @samp{operator+}. | |
1609 | |
1610 @item | |
1611 In Java code, tags include all the constructs recognized in C++, plus | |
1612 the @code{interface}, @code{extends} and @code{implements} constructs. | |
1613 Tags for variables and functions in classes are named | |
1614 @samp{@var{class}.@var{variable}} and @samp{@var{class}.@var{function}}. | |
1615 | |
1616 @item | |
1617 In La@TeX{} text, the argument of any of the commands @code{\chapter}, | |
1618 @code{\section}, @code{\subsection}, @code{\subsubsection}, | |
1619 @code{\eqno}, @code{\label}, @code{\ref}, @code{\cite}, | |
1620 @code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry}, | |
1621 @code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand}, | |
1622 @code{\newenvironment} or @code{\renewenvironment} is a tag.@refill | |
1623 | |
1624 Other commands can make tags as well, if you specify them in the | |
1625 environment variable @env{TEXTAGS} before invoking @code{etags}. The | |
1626 value of this environment variable should be a colon-separated list of | |
1627 command names. For example, | |
1628 | |
1629 @example | |
1630 TEXTAGS="mycommand:myothercommand" | |
1631 export TEXTAGS | |
1632 @end example | |
1633 | |
1634 @noindent | |
1635 specifies (using Bourne shell syntax) that the commands | |
1636 @samp{\mycommand} and @samp{\myothercommand} also define tags. | |
1637 | |
1638 @item | |
1639 In Lisp code, any function defined with @code{defun}, any variable | |
1640 defined with @code{defvar} or @code{defconst}, and in general the first | |
1641 argument of any expression that starts with @samp{(def} in column zero is | |
1642 a tag. | |
1643 | |
1644 @item | |
1645 In Scheme code, tags include anything defined with @code{def} or with a | |
1646 construct whose name starts with @samp{def}. They also include variables | |
1647 set with @code{set!} at top level in the file. | |
1648 @end itemize | |
1649 | |
1650 Several other languages are also supported: | |
1651 | |
1652 @itemize @bullet | |
1653 | |
1654 @item | |
1655 In Ada code, functions, procedures, packages, tasks and types are | |
1656 tags. Use the @samp{--packages-only} option to create tags for | |
1657 packages only. | |
1658 | |
1659 In Ada, the same name can be used for different kinds of entity | |
1660 (e.g.@:, for a procedure and for a function). Also, for things like | |
1661 packages, procedures and functions, there is the spec (i.e.@: the | |
1662 interface) and the body (i.e.@: the implementation). To make it | |
1663 easier to pick the definition you want, Ada tag name have suffixes | |
1664 indicating the type of entity: | |
1665 | |
1666 @table @samp | |
1667 @item /b | |
1668 package body. | |
1669 @item /f | |
1670 function. | |
1671 @item /k | |
1672 task. | |
1673 @item /p | |
1674 procedure. | |
1675 @item /s | |
1676 package spec. | |
1677 @item /t | |
1678 type. | |
1679 @end table | |
1680 | |
1681 Thus, @kbd{M-x find-tag @key{RET} bidule/b @key{RET}} will go | |
1682 directly to the body of the package @code{bidule}, while @kbd{M-x | |
1683 find-tag @key{RET} bidule @key{RET}} will just search for any tag | |
1684 @code{bidule}. | |
1685 | |
1686 @item | |
1687 In assembler code, labels appearing at the beginning of a line, | |
1688 followed by a colon, are tags. | |
1689 | |
1690 @item | |
1691 In Bison or Yacc input files, each rule defines as a tag the nonterminal | |
1692 it constructs. The portions of the file that contain C code are parsed | |
1693 as C code. | |
1694 | |
1695 @item | |
1696 In Cobol code, tags are paragraph names; that is, any word starting in | |
1697 column 8 and followed by a period. | |
1698 | |
1699 @item | |
1700 In Erlang code, the tags are the functions, records and macros defined | |
1701 in the file. | |
1702 | |
1703 @item | |
1704 In Fortran code, functions, subroutines and block data are tags. | |
1705 | |
1706 @item | |
1707 In HTML input files, the tags are the @code{title} and the @code{h1}, | |
1708 @code{h2}, @code{h3} headers. Also, tags are @code{name=} in anchors | |
1709 and all occurrences of @code{id=}. | |
1710 | |
1711 @item | |
1712 In Lua input files, all functions are tags. | |
1713 | |
1714 @item | |
1715 In makefiles, targets are tags; additionally, variables are tags | |
1716 unless you specify @samp{--no-globals}. | |
1717 | |
1718 @item | |
1719 In Objective C code, tags include Objective C definitions for classes, | |
1720 class categories, methods and protocols. Tags for variables and | |
1721 functions in classes are named @samp{@var{class}::@var{variable}} and | |
1722 @samp{@var{class}::@var{function}}. | |
1723 | |
1724 @item | |
1725 In Pascal code, the tags are the functions and procedures defined in | |
1726 the file. | |
1727 | |
1728 @item | |
1729 In Perl code, the tags are the packages, subroutines and variables | |
1730 defined by the @code{package}, @code{sub}, @code{my} and @code{local} | |
1731 keywords. Use @samp{--globals} if you want to tag global variables. | |
1732 Tags for subroutines are named @samp{@var{package}::@var{sub}}. The | |
1733 name for subroutines defined in the default package is | |
1734 @samp{main::@var{sub}}. | |
1735 | |
1736 @item | |
1737 In PHP code, tags are functions, classes and defines. Vars are tags | |
1738 too, unless you use the @samp{--no-members} option. | |
1739 | |
1740 @item | |
1741 In PostScript code, the tags are the functions. | |
1742 | |
1743 @item | |
1744 In Prolog code, tags are predicates and rules at the beginning of | |
1745 line. | |
1746 | |
1747 @item | |
1748 In Python code, @code{def} or @code{class} at the beginning of a line | |
1749 generate a tag. | |
1750 @end itemize | |
1751 | |
1752 You can also generate tags based on regexp matching (@pxref{Etags | |
1753 Regexps}) to handle other formats and languages. | |
1754 | |
1755 @node Create Tags Table | |
1756 @subsection Creating Tags Tables | |
1757 @cindex @code{etags} program | |
1758 | |
1759 The @code{etags} program is used to create a tags table file. It knows | |
1760 the syntax of several languages, as described in | |
1761 @iftex | |
1762 the previous section. | |
1763 @end iftex | |
1764 @ifnottex | |
1765 @ref{Tag Syntax}. | |
1766 @end ifnottex | |
1767 Here is how to run @code{etags}: | |
1768 | |
1769 @example | |
1770 etags @var{inputfiles}@dots{} | |
1771 @end example | |
1772 | |
1773 @noindent | |
1774 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
|
1775 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
|
1776 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
|
1777 @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
|
1778 prints the tags table to standard output. |
84252 | 1779 |
1780 If the specified files don't exist, @code{etags} looks for | |
1781 compressed versions of them and uncompresses them to read them. Under | |
1782 MS-DOS, @code{etags} also looks for file names like @file{mycode.cgz} | |
1783 if it is given @samp{mycode.c} on the command line and @file{mycode.c} | |
1784 does not exist. | |
1785 | |
1786 @code{etags} recognizes the language used in an input file based on | |
1787 its file name and contents. You can specify the language with the | |
1788 @samp{--language=@var{name}} option, described below. | |
1789 | |
1790 If the tags table data become outdated due to changes in the files | |
1791 described in the table, the way to update the tags table is the same | |
1792 way it was made in the first place. If the tags table fails to record | |
1793 a tag, or records it for the wrong file, then Emacs cannot possibly | |
1794 find its definition until you update the tags table. However, if the | |
1795 position recorded in the tags table becomes a little bit wrong (due to | |
1796 other editing), the worst consequence is a slight delay in finding the | |
1797 tag. Even if the stored position is very far wrong, Emacs will still | |
1798 find the tag, after searching most of the file for it. That delay is | |
1799 hardly noticeable with today's computers. | |
1800 | |
1801 Thus, there is no need to update the tags table after each edit. | |
1802 You should update a tags table when you define new tags that you want | |
1803 to have listed, or when you move tag definitions from one file to | |
1804 another, or when changes become substantial. | |
1805 | |
1806 One tags table can virtually include another. Specify the included | |
1807 tags file name with the @samp{--include=@var{file}} option when | |
1808 creating the file that is to include it. The latter file then acts as | |
1809 if it covered all the source files specified in the included file, as | |
1810 well as the files it directly contains. | |
1811 | |
1812 If you specify the source files with relative file names when you run | |
1813 @code{etags}, the tags file will contain file names relative to the | |
1814 directory where the tags file was initially written. This way, you can | |
1815 move an entire directory tree containing both the tags file and the | |
1816 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
|
1817 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
|
1818 however, the file names are |
84252 | 1819 made relative to the current working directory. This is useful, for |
1820 example, when writing the tags to @file{/dev/stdout}. | |
1821 | |
1822 When using a relative file name, it should not be a symbolic link | |
1823 pointing to a tags file in a different directory, because this would | |
1824 generally render the file names invalid. | |
1825 | |
1826 If you specify absolute file names as arguments to @code{etags}, then | |
1827 the tags file will contain absolute file names. This way, the tags file | |
1828 will still refer to the same files even if you move it, as long as the | |
1829 source files remain in the same place. Absolute file names start with | |
1830 @samp{/}, or with @samp{@var{device}:/} on MS-DOS and MS-Windows. | |
1831 | |
1832 When you want to make a tags table from a great number of files, you | |
1833 may have problems listing them on the command line, because some systems | |
1834 have a limit on its length. The simplest way to circumvent this limit | |
1835 is to tell @code{etags} to read the file names from its standard input, | |
1836 by typing a dash in place of the file names, like this: | |
1837 | |
1838 @smallexample | |
1839 find . -name "*.[chCH]" -print | etags - | |
1840 @end smallexample | |
1841 | |
1842 Use the option @samp{--language=@var{name}} to specify the language | |
1843 explicitly. You can intermix these options with file names; each one | |
1844 applies to the file names that follow it. Specify | |
1845 @samp{--language=auto} to tell @code{etags} to resume guessing the | |
1846 language from the file names and file contents. Specify | |
1847 @samp{--language=none} to turn off language-specific processing | |
1848 entirely; then @code{etags} recognizes tags by regexp matching alone | |
1849 (@pxref{Etags Regexps}). | |
1850 | |
1851 The option @samp{--parse-stdin=@var{file}} is mostly useful when | |
1852 calling @code{etags} from programs. It can be used (only once) in | |
1853 place of a file name on the command line. @code{Etags} will read from | |
1854 standard input and mark the produced tags as belonging to the file | |
1855 @var{file}. | |
1856 | |
1857 @samp{etags --help} outputs the list of the languages @code{etags} | |
1858 knows, and the file name rules for guessing the language. It also prints | |
1859 a list of all the available @code{etags} options, together with a short | |
1860 explanation. If followed by one or more @samp{--language=@var{lang}} | |
1861 options, it outputs detailed information about how tags are generated for | |
1862 @var{lang}. | |
1863 | |
1864 @node Etags Regexps | |
1865 @subsection Etags Regexps | |
1866 | |
1867 The @samp{--regex} option provides a general way of recognizing tags | |
1868 based on regexp matching. You can freely intermix this option with | |
1869 file names, and each one applies to the source files that follow it. | |
1870 If you specify multiple @samp{--regex} options, all of them are used | |
1871 in parallel. The syntax is: | |
1872 | |
1873 @smallexample | |
1874 --regex=[@var{@{language@}}]/@var{tagregexp}/[@var{nameregexp}/]@var{modifiers} | |
1875 @end smallexample | |
1876 | |
1877 The essential part of the option value is @var{tagregexp}, the | |
1878 regexp for matching tags. It is always used anchored, that is, it | |
1879 only matches at the beginning of a line. If you want to allow | |
1880 indented tags, use a regexp that matches initial whitespace; start it | |
1881 with @samp{[ \t]*}. | |
1882 | |
1883 In these regular expressions, @samp{\} quotes the next character, and | |
1884 all the GCC character escape sequences are supported (@samp{\a} for | |
1885 bell, @samp{\b} for back space, @samp{\d} for delete, @samp{\e} for | |
1886 escape, @samp{\f} for formfeed, @samp{\n} for newline, @samp{\r} for | |
1887 carriage return, @samp{\t} for tab, and @samp{\v} for vertical tab). | |
1888 | |
1889 Ideally, @var{tagregexp} should not match more characters than are | |
1890 needed to recognize what you want to tag. If the syntax requires you | |
1891 to write @var{tagregexp} so it matches more characters beyond the tag | |
1892 itself, you should add a @var{nameregexp}, to pick out just the tag. | |
1893 This will enable Emacs to find tags more accurately and to do | |
1894 completion on tag names more reliably. You can find some examples | |
1895 below. | |
1896 | |
1897 The @var{modifiers} are a sequence of zero or more characters that | |
1898 modify the way @code{etags} does the matching. A regexp with no | |
1899 modifiers is applied sequentially to each line of the input file, in a | |
1900 case-sensitive way. The modifiers and their meanings are: | |
1901 | |
1902 @table @samp | |
1903 @item i | |
1904 Ignore case when matching this regexp. | |
1905 @item m | |
1906 Match this regular expression against the whole file, so that | |
1907 multi-line matches are possible. | |
1908 @item s | |
1909 Match this regular expression against the whole file, and allow | |
1910 @samp{.} in @var{tagregexp} to match newlines. | |
1911 @end table | |
1912 | |
1913 The @samp{-R} option cancels all the regexps defined by preceding | |
1914 @samp{--regex} options. It too applies to the file names following | |
1915 it. Here's an example: | |
1916 | |
1917 @smallexample | |
1918 etags --regex=/@var{reg1}/i voo.doo --regex=/@var{reg2}/m \ | |
1919 bar.ber -R --lang=lisp los.er | |
1920 @end smallexample | |
1921 | |
1922 @noindent | |
1923 Here @code{etags} chooses the parsing language for @file{voo.doo} and | |
1924 @file{bar.ber} according to their contents. @code{etags} also uses | |
1925 @var{reg1} to recognize additional tags in @file{voo.doo}, and both | |
1926 @var{reg1} and @var{reg2} to recognize additional tags in | |
1927 @file{bar.ber}. @var{reg1} is checked against each line of | |
1928 @file{voo.doo} and @file{bar.ber}, in a case-insensitive way, while | |
1929 @var{reg2} is checked against the whole @file{bar.ber} file, | |
1930 permitting multi-line matches, in a case-sensitive way. @code{etags} | |
1931 uses only the Lisp tags rules, with no user-specified regexp matching, | |
1932 to recognize tags in @file{los.er}. | |
1933 | |
1934 You can restrict a @samp{--regex} option to match only files of a | |
1935 given language by using the optional prefix @var{@{language@}}. | |
1936 (@samp{etags --help} prints the list of languages recognized by | |
1937 @code{etags}.) This is particularly useful when storing many | |
1938 predefined regular expressions for @code{etags} in a file. The | |
1939 following example tags the @code{DEFVAR} macros in the Emacs source | |
1940 files, for the C language only: | |
1941 | |
1942 @smallexample | |
1943 --regex='@{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/' | |
1944 @end smallexample | |
1945 | |
1946 @noindent | |
1947 When you have complex regular expressions, you can store the list of | |
1948 them in a file. The following option syntax instructs @code{etags} to | |
1949 read two files of regular expressions. The regular expressions | |
1950 contained in the second file are matched without regard to case. | |
1951 | |
1952 @smallexample | |
1953 --regex=@@@var{case-sensitive-file} --ignore-case-regex=@@@var{ignore-case-file} | |
1954 @end smallexample | |
1955 | |
1956 @noindent | |
1957 A regex file for @code{etags} contains one regular expression per | |
1958 line. Empty lines, and lines beginning with space or tab are ignored. | |
1959 When the first character in a line is @samp{@@}, @code{etags} assumes | |
1960 that the rest of the line is the name of another file of regular | |
1961 expressions; thus, one such file can include another file. All the | |
1962 other lines are taken to be regular expressions. If the first | |
1963 non-whitespace text on the line is @samp{--}, that line is a comment. | |
1964 | |
1965 For example, we can create a file called @samp{emacs.tags} with the | |
1966 following contents: | |
1967 | |
1968 @smallexample | |
1969 -- This is for GNU Emacs C source files | |
1970 @{c@}/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"/\1/ | |
1971 @end smallexample | |
1972 | |
1973 @noindent | |
1974 and then use it like this: | |
1975 | |
1976 @smallexample | |
1977 etags --regex=@@emacs.tags *.[ch] */*.[ch] | |
1978 @end smallexample | |
1979 | |
1980 Here are some more examples. The regexps are quoted to protect them | |
1981 from shell interpretation. | |
1982 | |
1983 @itemize @bullet | |
1984 | |
1985 @item | |
1986 Tag Octave files: | |
1987 | |
1988 @smallexample | |
1989 etags --language=none \ | |
1990 --regex='/[ \t]*function.*=[ \t]*\([^ \t]*\)[ \t]*(/\1/' \ | |
1991 --regex='/###key \(.*\)/\1/' \ | |
1992 --regex='/[ \t]*global[ \t].*/' \ | |
1993 *.m | |
1994 @end smallexample | |
1995 | |
1996 @noindent | |
1997 Note that tags are not generated for scripts, so that you have to add | |
1998 a line by yourself of the form @samp{###key @var{scriptname}} if you | |
1999 want to jump to it. | |
2000 | |
2001 @item | |
2002 Tag Tcl files: | |
2003 | |
2004 @smallexample | |
2005 etags --language=none --regex='/proc[ \t]+\([^ \t]+\)/\1/' *.tcl | |
2006 @end smallexample | |
2007 | |
2008 @item | |
2009 Tag VHDL files: | |
2010 | |
2011 @smallexample | |
2012 etags --language=none \ | |
2013 --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^ ]* +OF/' \ | |
2014 --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\ | |
2015 \( BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/' | |
2016 @end smallexample | |
2017 @end itemize | |
2018 | |
2019 @node Select Tags Table | |
2020 @subsection Selecting a Tags Table | |
2021 | |
2022 @vindex tags-file-name | |
2023 @findex visit-tags-table | |
2024 Emacs has at any time one @dfn{selected} tags table, and all the | |
2025 commands for working with tags tables use the selected one. To select | |
2026 a tags table, type @kbd{M-x visit-tags-table}, which reads the tags | |
2027 table file name as an argument, with @file{TAGS} in the default | |
2028 directory as the default. | |
2029 | |
2030 Emacs does not actually read in the tags table contents until you | |
2031 try to use them; all @code{visit-tags-table} does is store the file | |
2032 name in the variable @code{tags-file-name}, and setting the variable | |
2033 yourself is just as good. The variable's initial value is @code{nil}; | |
2034 that value tells all the commands for working with tags tables that | |
2035 they must ask for a tags table file name to use. | |
2036 | |
2037 Using @code{visit-tags-table} when a tags table is already loaded | |
2038 gives you a choice: you can add the new tags table to the current list | |
2039 of tags tables, or start a new list. The tags commands use all the tags | |
2040 tables in the current list. If you start a new list, the new tags table | |
2041 is used @emph{instead} of others. If you add the new table to the | |
2042 current list, it is used @emph{as well as} the others. | |
2043 | |
2044 @vindex tags-table-list | |
2045 You can specify a precise list of tags tables by setting the variable | |
2046 @code{tags-table-list} to a list of strings, like this: | |
2047 | |
2048 @c keep this on two lines for formatting in smallbook | |
2049 @example | |
2050 @group | |
2051 (setq tags-table-list | |
2052 '("~/emacs" "/usr/local/lib/emacs/src")) | |
2053 @end group | |
2054 @end example | |
2055 | |
2056 @noindent | |
2057 This tells the tags commands to look at the @file{TAGS} files in your | |
2058 @file{~/emacs} directory and in the @file{/usr/local/lib/emacs/src} | |
2059 directory. The order depends on which file you are in and which tags | |
2060 table mentions that file, as explained above. | |
2061 | |
2062 Do not set both @code{tags-file-name} and @code{tags-table-list}. | |
2063 | |
2064 @node Find Tag | |
2065 @subsection Finding a Tag | |
2066 | |
2067 The most important thing that a tags table enables you to do is to find | |
2068 the definition of a specific tag. | |
2069 | |
2070 @table @kbd | |
2071 @item M-.@: @var{tag} @key{RET} | |
2072 Find first definition of @var{tag} (@code{find-tag}). | |
2073 @item C-u M-. | |
2074 Find next alternate definition of last tag specified. | |
2075 @item C-u - M-. | |
2076 Go back to previous tag found. | |
2077 @item C-M-. @var{pattern} @key{RET} | |
2078 Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}). | |
2079 @item C-u C-M-. | |
2080 Find the next tag whose name matches the last pattern used. | |
2081 @item C-x 4 .@: @var{tag} @key{RET} | |
2082 Find first definition of @var{tag}, but display it in another window | |
2083 (@code{find-tag-other-window}). | |
2084 @item C-x 5 .@: @var{tag} @key{RET} | |
2085 Find first definition of @var{tag}, and create a new frame to select the | |
2086 buffer (@code{find-tag-other-frame}). | |
2087 @item M-* | |
2088 Pop back to where you previously invoked @kbd{M-.} and friends. | |
2089 @end table | |
2090 | |
2091 @kindex M-. | |
2092 @findex find-tag | |
2093 @kbd{M-.}@: (@code{find-tag}) is the command to find the definition of | |
2094 a specified tag. It searches through the tags table for that tag, as a | |
2095 string, and then uses the tags table info to determine the file that the | |
2096 definition is in and the approximate character position in the file of | |
2097 the definition. Then @code{find-tag} visits that file, moves point to | |
2098 the approximate character position, and searches ever-increasing | |
2099 distances away to find the tag definition. | |
2100 | |
2101 If an empty argument is given (just type @key{RET}), the balanced | |
2102 expression in the buffer before or around point is used as the | |
2103 @var{tag} argument. @xref{Expressions}. | |
2104 | |
2105 You don't need to give @kbd{M-.} the full name of the tag; a part | |
2106 will do. This is because @kbd{M-.} finds tags in the table which | |
2107 contain @var{tag} as a substring. However, it prefers an exact match | |
2108 to a substring match. To find other tags that match the same | |
2109 substring, give @code{find-tag} a numeric argument, as in @kbd{C-u | |
2110 M-.}; this does not read a tag name, but continues searching the tags | |
2111 table's text for another tag containing the same substring last used. | |
2112 If you have a real @key{META} key, @kbd{M-0 M-.}@: is an easier | |
2113 alternative to @kbd{C-u M-.}. | |
2114 | |
2115 @kindex C-x 4 . | |
2116 @findex find-tag-other-window | |
2117 @kindex C-x 5 . | |
2118 @findex find-tag-other-frame | |
2119 Like most commands that can switch buffers, @code{find-tag} has a | |
2120 variant that displays the new buffer in another window, and one that | |
2121 makes a new frame for it. The former is @w{@kbd{C-x 4 .}}, which invokes | |
2122 the command @code{find-tag-other-window}. The latter is @w{@kbd{C-x 5 .}}, | |
2123 which invokes @code{find-tag-other-frame}. | |
2124 | |
2125 To move back to places you've found tags recently, use @kbd{C-u - | |
2126 M-.}; more generally, @kbd{M-.} with a negative numeric argument. This | |
2127 command can take you to another buffer. @w{@kbd{C-x 4 .}} with a negative | |
2128 argument finds the previous tag location in another window. | |
2129 | |
2130 @kindex M-* | |
2131 @findex pop-tag-mark | |
2132 @vindex find-tag-marker-ring-length | |
2133 As well as going back to places you've found tags recently, you can go | |
2134 back to places @emph{from where} you found them. Use @kbd{M-*}, which | |
2135 invokes the command @code{pop-tag-mark}, for this. Typically you would | |
2136 find and study the definition of something with @kbd{M-.} and then | |
2137 return to where you were with @kbd{M-*}. | |
2138 | |
2139 Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to | |
2140 a depth determined by the variable @code{find-tag-marker-ring-length}. | |
2141 | |
2142 @findex find-tag-regexp | |
2143 @kindex C-M-. | |
2144 The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that | |
2145 match a specified regular expression. It is just like @kbd{M-.} except | |
2146 that it does regexp matching instead of substring matching. | |
2147 | |
2148 @node Tags Search | |
2149 @subsection Searching and Replacing with Tags Tables | |
2150 @cindex search and replace in multiple files | |
2151 @cindex multiple-file search and replace | |
2152 | |
2153 The commands in this section visit and search all the files listed | |
2154 in the selected tags table, one by one. For these commands, the tags | |
2155 table serves only to specify a sequence of files to search. These | |
2156 commands scan the list of tags tables starting with the first tags | |
2157 table (if any) that describes the current file, proceed from there to | |
2158 the end of the list, and then scan from the beginning of the list | |
2159 until they have covered all the tables in the list. | |
2160 | |
2161 @table @kbd | |
2162 @item M-x tags-search @key{RET} @var{regexp} @key{RET} | |
2163 Search for @var{regexp} through the files in the selected tags | |
2164 table. | |
2165 @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} | |
2166 Perform a @code{query-replace-regexp} on each file in the selected tags table. | |
2167 @item M-, | |
2168 Restart one of the commands above, from the current location of point | |
2169 (@code{tags-loop-continue}). | |
2170 @end table | |
2171 | |
2172 @findex tags-search | |
2173 @kbd{M-x tags-search} reads a regexp using the minibuffer, then | |
2174 searches for matches in all the files in the selected tags table, one | |
2175 file at a time. It displays the name of the file being searched so you | |
2176 can follow its progress. As soon as it finds an occurrence, | |
2177 @code{tags-search} returns. | |
2178 | |
2179 @kindex M-, | |
2180 @findex tags-loop-continue | |
2181 Having found one match, you probably want to find all the rest. To find | |
2182 one more match, type @kbd{M-,} (@code{tags-loop-continue}) to resume the | |
2183 @code{tags-search}. This searches the rest of the current buffer, followed | |
2184 by the remaining files of the tags table.@refill | |
2185 | |
2186 @findex tags-query-replace | |
2187 @kbd{M-x tags-query-replace} performs a single | |
2188 @code{query-replace-regexp} through all the files in the tags table. It | |
2189 reads a regexp to search for and a string to replace with, just like | |
2190 ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x | |
2191 tags-search}, but repeatedly, processing matches according to your | |
2192 input. @xref{Replace}, for more information on query replace. | |
2193 | |
2194 @vindex tags-case-fold-search | |
2195 @cindex case-sensitivity and tags search | |
2196 You can control the case-sensitivity of tags search commands by | |
2197 customizing the value of the variable @code{tags-case-fold-search}. The | |
2198 default is to use the same setting as the value of | |
2199 @code{case-fold-search} (@pxref{Search Case}). | |
2200 | |
2201 It is possible to get through all the files in the tags table with a | |
2202 single invocation of @kbd{M-x tags-query-replace}. But often it is | |
2203 useful to exit temporarily, which you can do with any input event that | |
88056 | 2204 has no special query replace meaning. You can resume the query |
2205 replace subsequently by typing @kbd{M-,}; this command resumes the | |
2206 last tags search or replace command that you did. For instance, to | |
2207 skip the rest of the current file, you can type @kbd{M-> M-,}. | |
84252 | 2208 |
2209 The commands in this section carry out much broader searches than the | |
2210 @code{find-tag} family. The @code{find-tag} commands search only for | |
2211 definitions of tags that match your substring or regexp. The commands | |
2212 @code{tags-search} and @code{tags-query-replace} find every occurrence | |
2213 of the regexp, as ordinary search commands and replace commands do in | |
2214 the current buffer. | |
2215 | |
2216 These commands create buffers only temporarily for the files that they | |
2217 have to search (those which are not already visited in Emacs buffers). | |
2218 Buffers in which no match is found are quickly killed; the others | |
2219 continue to exist. | |
2220 | |
2221 It may have struck you that @code{tags-search} is a lot like | |
2222 @code{grep}. You can also run @code{grep} itself as an inferior of | |
2223 Emacs and have Emacs show you the matching lines one by one. | |
2224 @xref{Grep Searching}. | |
2225 | |
2226 @node List Tags | |
2227 @subsection Tags Table Inquiries | |
2228 | |
2229 @table @kbd | |
2230 @item M-x list-tags @key{RET} @var{file} @key{RET} | |
2231 Display a list of the tags defined in the program file @var{file}. | |
2232 @item M-x tags-apropos @key{RET} @var{regexp} @key{RET} | |
2233 Display a list of all tags matching @var{regexp}. | |
2234 @end table | |
2235 | |
2236 @findex list-tags | |
2237 @kbd{M-x list-tags} reads the name of one of the files described by | |
2238 the selected tags table, and displays a list of all the tags defined in | |
2239 that file. The ``file name'' argument is really just a string to | |
2240 compare against the file names recorded in the tags table; it is read as | |
2241 a string rather than as a file name. Therefore, completion and | |
2242 defaulting are not available, and you must enter the file name the same | |
2243 way it appears in the tags table. Do not include a directory as part of | |
2244 the file name unless the file name recorded in the tags table includes a | |
2245 directory. | |
2246 | |
2247 @findex tags-apropos | |
2248 @vindex tags-apropos-verbose | |
2249 @kbd{M-x tags-apropos} is like @code{apropos} for tags | |
2250 (@pxref{Apropos}). It finds all the tags in the selected tags table | |
2251 whose entries match @var{regexp}, and displays them. If the variable | |
2252 @code{tags-apropos-verbose} is non-@code{nil}, it displays the names | |
2253 of the tags files together with the tag names. | |
2254 | |
2255 @vindex tags-tag-face | |
2256 @vindex tags-apropos-additional-actions | |
2257 You can customize the appearance of the output by setting the | |
2258 variable @code{tags-tag-face} to a face. You can display additional | |
2259 output with @kbd{M-x tags-apropos} by customizing the variable | |
2260 @code{tags-apropos-additional-actions}---see its documentation for | |
2261 details. | |
2262 | |
2263 You can also use the collection of tag names to complete a symbol | |
2264 name in the buffer. @xref{Symbol Completion}. | |
2265 | |
2266 @ifnottex | |
2267 @include emerge-xtra.texi | |
2268 @end ifnottex | |
2269 | |
2270 @ignore | |
2271 arch-tag: b9d83dfb-82ea-4ff6-bab5-05a3617091fb | |
2272 @end ignore |