252 lines
8.3 KiB
Plaintext
252 lines
8.3 KiB
Plaintext
The RCS MINI-HOWTO
|
||
Robert Kiesling
|
||
v1.4, 14 August 1997
|
||
|
||
This document covers basic installation and usage of RCS, the GNU
|
||
Revision Control System, under Linux. It also covers the installation
|
||
of the diff(1) and diff3(1) utilities, which are necessary for RCS to
|
||
operate. This document may be reproduced freely, in whole or in part,
|
||
provided that any usage of this document conforms to the general copy
|
||
right notice of the HOWTO series of the Linux Documentation Project.
|
||
See the file COPYRIGHT for details. Send all complaints, suggestions,
|
||
errata, and any miscellany to kiesling@terracom.net, so I can keep
|
||
this document as complete and up to date as possible.
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
1. Overview of RCS.
|
||
|
||
2. System requirements.
|
||
|
||
3. Compiling RCS from Source.
|
||
|
||
4. Creating and maintaining archives.
|
||
|
||
5.
|
||
ci(1) and co(1).
|
||
6. Revision histories.
|
||
|
||
7. Including RCS data in working files.
|
||
|
||
8. RCS and
|
||
emacs(1) Version Control.
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
1. Overview of RCS.
|
||
|
||
RCS, the revision control system, is a suite of programs that tracks
|
||
changes in text files and controls shared access to files in work
|
||
group situations. It is generally used to maintain source code
|
||
modules. It lends itself to tracking revisions of document files as
|
||
well.
|
||
|
||
RCS was written by Walter F. Tichy and Paul Eggert. The latest
|
||
version which has been ported to Linux is RCS Version 5.7. There is
|
||
also a semi-official, threaded version available. Much of the
|
||
information in this HOWTO is taken from the RCS man pages.
|
||
|
||
RCS includes the rcs(1) program, which controls RCS archive file
|
||
attributes, ci(1) and co(1), which check files in and out of RCS
|
||
archives, ident(1), which searches RCS archives by keyword
|
||
identifiers, rcsclean(1), a program to clean up files that are not
|
||
being worked on or haven't changed, rcsdiff(1), which runs diff(1) to
|
||
compare the revisions, rcsmerge(1), which merges two RCS branches into
|
||
a single working file, and rlog(1), which prints RCS log messages.
|
||
|
||
Files archived by RCS may be text of any format, or binary if the diff
|
||
program used to generate change files handles 8-bit data. Files may
|
||
optionally include identification strings to aid in tracking by
|
||
ident(1). RCS uses the utilities diff(1) and diff3(3) to generate the
|
||
change files between revisions. A RCS archive consists of the initial
|
||
revision of a file, which is version 1.1, and a series of change
|
||
files, one for each revision. Each time a file is checked out of an
|
||
archive with co(1), edited, and checked back into the archive with
|
||
ci(1), the version number is increased, for example, to 1.2, 1.3, 1.4,
|
||
and so on for successive revisions.
|
||
|
||
The archives themselves commonly reside in a ./RCS subdirectory,
|
||
although RCS has other options for archive storage.
|
||
|
||
For an overview of RCS, see the rcsintro(1) manual page.
|
||
|
||
|
||
|
||
2. System requirements.
|
||
|
||
RCS needs diff(1) and diff3(3) to generate the context diff files
|
||
between revisions. The diff utilities suite needs to be installed on
|
||
your system, and when you install RCS, the software will check for its
|
||
presence.
|
||
|
||
Precompiled diffutils binaries are available at:
|
||
|
||
ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gz
|
||
|
||
|
||
and its mirror sites. If you need to compile diff(1), et al., from
|
||
source, it is located at:
|
||
|
||
ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gz
|
||
|
||
|
||
and its mirror sites.
|
||
|
||
You will also need to have the ELF libraries installed on your system
|
||
if you want to install pre-built binaries. See the ELF-HOWTO for
|
||
further details.
|
||
|
||
|
||
|
||
3. Compiling RCS from Source.
|
||
|
||
Get the source distribution of RCS Version 5.7. It is available at
|
||
|
||
ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gz
|
||
|
||
|
||
and its mirrors. After you have unpacked the archive into your source
|
||
tree, you need to configure RCS for your system. This is done via the
|
||
configure script in the source directory, which you need to execute
|
||
first. This will generate a Makefile and the appropriate conf.sh for
|
||
your system. You can then type
|
||
|
||
make install
|
||
|
||
|
||
which will build the binaries. At some point you may need to su to
|
||
root so the binaries can be installed in the correct directories.
|
||
|
||
|
||
|
||
4. Creating and maintaining archives.
|
||
|
||
The program rcs(1) does the work or creating archives and modifying
|
||
their attributes. A summary of rcs(1) options may be found in the
|
||
rcs(1) manual page.
|
||
|
||
The easiest way to create an archive is first to mkdir RCS in the
|
||
current directory, then initialize the archive with the
|
||
rcs -i name_of_work_file
|
||
|
||
|
||
command. This creates and archive with the name
|
||
./RCS/name_of_work_file,v and requests a text message describing the
|
||
archive, but it does not deposit any revisions in the archive. You
|
||
can turn on or off strict archive locking with the commands
|
||
|
||
rcs -L name_of_work_file
|
||
|
||
|
||
and
|
||
|
||
rcs -U name_of_work_file
|
||
|
||
|
||
respectively. There are other options for controlling access to the
|
||
archive, setting its format, and setting revision numbers, which are
|
||
covered in the rcs(1) manual page.
|
||
|
||
|
||
|
||
5. ci(1) and co(1) .
|
||
|
||
ci(1) and co(1) are the commands used to check files in and out of
|
||
their RCS archives. The ci(1) command may also be used to a check a
|
||
file both in and out of an archive. In their simplest forms, ci(1)
|
||
and co(1) take only the name of the working file.
|
||
|
||
ci name_of_work_file
|
||
|
||
|
||
and
|
||
|
||
co name_of_work_file
|
||
|
||
|
||
The command form
|
||
|
||
ci -l name_of_work_file
|
||
|
||
|
||
checks in the file with locking enabled, and
|
||
|
||
co -l name_of_work_file
|
||
|
||
|
||
is performed automatically. That is, ci -l checks the file out again
|
||
with locking enabled.
|
||
|
||
ci -u name_of_work_file
|
||
|
||
|
||
checks the file into the archive, and checks it out again with locking
|
||
disabled. In all cases, the user is prompted for a log message.
|
||
|
||
ci(1) will also create a RCS archive if one does not exist already.
|
||
|
||
If you don't specify a revision, ci(1) increments the version number
|
||
of the last revision locked in the archive, and appends the revised
|
||
working file to it. If you specify a revision on an existing branch,
|
||
it must be higher than the existing revision numbers. ci(1) will also
|
||
create a new branch if you specify the revision of a branch which does
|
||
not exist. See the ci(1) and co(1) man pages for details.
|
||
|
||
|
||
ci(1) and co(1) have various options for interactive and non-
|
||
interactive use. Again, see the ci(1) and co(1) man pages for
|
||
details.
|
||
|
||
|
||
6. Revision histories.
|
||
|
||
The rlog(1) program provides information about the archive file and
|
||
the logs of each revision stored in it. A command like
|
||
|
||
rlog work_file_name
|
||
|
||
|
||
will print the version history of the file, each revision's creation
|
||
date and userids of author and the person who locked the file. You
|
||
can specify archive attributes and revision parameters to view.
|
||
|
||
|
||
|
||
7. Including RCS data in working files.
|
||
|
||
co(1) maintains a list of keywords of the RCS database which are
|
||
expanded when the working file is checked out. The keyword $Id$ in a
|
||
document will expand to a string which contains the file name,
|
||
revision number, the date checked out, the author, the revision
|
||
status, and the locker, if any. Including the keyword $Log$ will
|
||
expand to the document's revision history log.
|
||
|
||
These and other keywords may be used as search criteria of the RCS
|
||
archive. See the ident(1) man page for further details.
|
||
|
||
|
||
8. RCS and emacs(1) Version Control.
|
||
|
||
The Version Control facility of emacs(1) works as a front end to RCS.
|
||
This information applies specifically to Version 19.34 of GNU Emacs,
|
||
which is provided with the major Linux distributions. When editing a
|
||
file with emacs(1) which is registered with RCS, the command vc-
|
||
toggle-read-only (bound to C-x C-q by default) will check a file in to
|
||
the emacs's Version Control, and then into RCS. Emacs will open a
|
||
buffer where you can type a log message to be included in the RCS log.
|
||
When you are finished typing a log entry, type C-c C-c to terminate
|
||
your input and proceed with the check-in process.
|
||
|
||
If you have selected strict locking for the file with RCS, you must
|
||
re-lock the file for editing by emacs(1). You can check the file out
|
||
for emacs's Version Control with the command % in buffer-menu mode.
|
||
|
||
For more information, see the GNU Emacs Manual and the Emacs info
|
||
pages.
|
||
|
||
|
||
|