-@c This is part of the Emacs manual.
-@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2013 Free Software
+@c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2014 Free Software
@c Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Maintaining
time of each version, who made it, and a description of what was
changed.
- The Emacs version control interface is called @dfn{VC}@. VC commands
-work with several different version control systems; currently, it
-supports GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS,
+ The Emacs version control interface is called @dfn{VC}@. VC
+commands work with several different version control systems;
+currently, it supports Bazaar, CVS, Git, Mercurial, Monotone, RCS,
SCCS/CSSC, and Subversion. Of these, the GNU project distributes CVS,
-Arch, RCS, and Bazaar.
+RCS, and Bazaar.
VC is enabled automatically whenever you visit a file governed by a
version control system. To disable VC entirely, set the customizable
* Old Revisions:: Examining and comparing old versions.
* VC Change Log:: Viewing the VC Change Log.
* VC Undo:: Canceling changes before or after committing.
+* VC Ignore:: Ignore files under version control system.
* VC Directory Mode:: Listing files managed by version control.
* Branches:: Multiple lines of development.
@ifnottex
commits of filesets, and versioning of directories, symbolic links,
meta-data, renames, copies, and deletes).
-@cindex GNU Arch
-@cindex Arch
-@item
-GNU Arch is one of the earliest @dfn{decentralized} version control
-systems (the other being Monotone). @xref{VCS Concepts}, for a
-description of decentralized version control systems. It is no longer
-under active development, and has been deprecated in favor of Bazaar.
-
@cindex git
@item
Git is a decentralized version control system originally invented by
Bazaar (bzr) is a decentralized version control system that supports
both repository-based and decentralized versioning. VC supports most
basic editing operations under Bazaar.
+
+@cindex SRC
+@cindex src
+@item
+SRC (src) is RCS, reloaded - a specialized version-control system
+designed for single-file projects worked on by only one person. It
+allows multiple files with independent version-control histories to
+exist in one directory, and is thus particularly well suited for
+maintaining small documents, scripts, and dotfiles. While it uses RCS
+for revision storage, it presents a modern user interface featuring
+lockless operation and integer sequential version numbers. VC
+supports almost all SRC operations.
@end itemize
@node VCS Concepts
SCCS always uses locking. RCS is lock-based by default but can be
told to operate in a merging style. CVS and Subversion are
merge-based by default but can be told to operate in a locking mode.
-Decentralized version control systems, such as GNU Arch, Git, and
-Mercurial, are exclusively merging-based.
+Decentralized version control systems, such as Git and Mercurial, are
+exclusively merging-based.
VC mode supports both locking and merging version control. The
terms ``commit'' and ``update'' are used in newer version control
@cindex Log Edit mode
@cindex mode, Log Edit
@vindex vc-log-mode-hook
+@c FIXME: Mention log-edit-mode-hook here? --xfq
The major mode for the @file{*vc-log*} buffer is Log Edit mode, a
variant of Text mode (@pxref{Text Mode}). On entering Log Edit mode,
Emacs runs the hooks @code{text-mode-hook} and @code{vc-log-mode-hook}
Edit buffer.
@end ifnottex
- To abort a commit, just @strong{don't} type @kbd{C-c C-c} in that
+ To abort a commit, just @emph{don't} type @kbd{C-c C-c} in that
buffer. You can switch buffers and do other editing. As long as you
don't try to make another commit, the entry you were editing remains
in the @file{*vc-log*} buffer, and you can go back to that buffer at
(@code{vc-revert}).
@end table
-@c `C-x v c' (vc-rollback) was removed, since it's RCS/SCCS specific.
-
@kindex C-x v u
@findex vc-revert
@vindex vc-revert-show-diff
@kbd{C-x v u} to unlock a file if you lock it and then decide not to
change it.
+@node VC Ignore
+@subsection Ignore Version Control Files
+
+@table @kbd
+@item C-x v G
+Ignore a file under current version control system. (@code{vc-ignore}).
+@end table
+
+@kindex C-x v G
+@findex vc-ignore
+ Many source trees contain some files that do not need to be
+versioned, such as editor backups, object or bytecode files, and built
+programs. You can simply not add them, but then they'll always crop
+up as unknown files. You can also tell the version control system to
+ignore these files by adding them to the ignore file at the top of the
+tree. @kbd{C-x v G} (@code{vc-ignore}) can help you do this. When
+called with a prefix argument, you can remove a file from the ignored
+file list.
+
@node VC Directory Mode
@subsection VC Directory Mode
The VC Directory buffer also defines some single-key shortcuts for
VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l},
-@kbd{i}, and @kbd{v}.
+@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G}, @kbd{I} and @kbd{v}.
For example, you can commit a set of edited files by opening a VC
Directory buffer, where the files are listed with the @samp{edited}
On some decentralized version control systems, including Bazaar and
Mercurial in its normal mode of operation, each branch has its own
working directory tree, so switching between branches just involves
-switching directories. On Git, switching between branches is done
-using the @command{git branch} command, which changes the contents of
-the working tree itself.
-
- On centralized version control systems, you can switch between
+switching directories. On Git, branches are normally @dfn{co-located}
+in the same directory, and switching between branches is done using
+the @command{git checkout} command, which changes the contents of the
+working tree to match the branch you switch to. Bazaar also supports
+co-located branches, in which case the @command{bzr switch} command
+will switch branches in the current directory. With Subversion, you
+switch to another branch using the @command{svn switch} command.
+
+ The VC command to switch to another branch in the current directory
+is @kbd{C-x v r @var{branch-name} @key{RET}} (@code{vc-retrieve-tag}).
+
+ On centralized version control systems, you can also switch between
branches by typing @kbd{C-u C-x v v} in an up-to-date work file
(@pxref{Advanced C-x v v}), and entering the revision ID for a
revision on another branch. On CVS, for instance, revisions on the
@cindex change log
Many software projects keep a @dfn{change log}. This is a file,
normally named @file{ChangeLog}, containing a chronological record of
-when and how the program was changed. Sometimes, there are several
-change log files, each recording the changes in one directory or
-directory tree.
+when and how the program was changed. Sometimes, these files are
+automatically generated from the change log entries stored in version
+control systems, or are used to generate these change log entries.
+Sometimes, there are several change log files, each recording the
+changes in one directory or directory tree.
@menu
* Change Log Commands:: Commands for editing change log files.
project. To define a new project, visit a file in the desired project
root and type @kbd{M-x ede-new}. This command prompts for a
@dfn{project type}, which refers to the underlying method that EDE
-will use to manage the project (@pxref{Creating a Project, EDE,, ede,
+will use to manage the project (@pxref{Creating a project, EDE,, ede,
Emacs Development Environment}). The most common project types are
@samp{Make}, which uses Makefiles, and @samp{Automake}, which uses GNU
Automake (@pxref{Top, Automake,, automake, Automake}). In both cases,