Hack 23 Getting Started with RCS
 
Let RCS manage your system files, and keep a revision history
RCS is a revision
control system, useful for keeping multiple revisions of
configuration files, shell scripts, and any other text files you have
lying around. Unlike CVS, there is no functionality for using RCS
with remote machines; in RCS, everything is intended to be kept in
the local filesystem.
RCS keeps all of its revisions in a directory called
RCS/ (under the directory
you're currently in). To start a new RCS repository, simply
make the directory:
root@catlin:/etc# mkdir RCS
There, that wasn't so
bad, was it? Now, we'll need to initialize a file
into the new RCS repository before working with it.
Let's work with syslog.conf:
root@catlin:/etc# ci -i syslog.conf
RCS/syslog.conf,v <-- syslog.conf
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> Here's the syslog.conf for Catlin
initial revision: 1.1
done
The initial ci -i does a
"check in and initialize," to give
RCS a good first copy of the file. RCS prompts for an initial
description, and then removes the file from the current directory.
You probably don't want to leave it like that for
too long, so after you've initialized the file in
RCS, check it out:
root@catlin:/etc# co syslog.conf
RCS/syslog.conf,v --> syslog.conf
revision 1.1
done
That copies the file back into the current directory. But
we're not ready to start working on it just yet.
First, let's check it
out with a lock to prevent other people from making updates while we
work on it.
root@catlin:/etc# co -l syslog.conf
RCS/syslog.conf,v --> syslog.conf
revision 1.1 (locked)
done
Now you can edit the file to your heart's content.
Once you're finished with it,
check it back in and unlock it
with ci -u:
root@catlin:/etc# ci -u syslog.conf
syslog.conf,v <-- syslog.conf
new revision: 1.3; previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> Added remote logging to the new security log host
>> .
done
Be
sure to use meaningful log entries, because you
won't remember what you meant
by "made a couple of edits" in six
months, when your code starts doing strange things.
If you have trouble checking anything in or out,
you've probably forgotten the -l (on co) or -u (on
ci) switch at some point. You can usually start over by making a
backup copy, then checking the file back out again, and copying it
back, assuming that you've just edited
syslog.conf:
root@catlin:/etc# ci -u syslog.conf
syslog.conf,v <-- syslog.conf
ci: syslog.conf,v: no lock set by root
root@catlin:/etc#
Uh-oh. Better back it up and start again from scratch:
root@catlin:/etc# cp syslog.conf syslog.conf.backup
root@catlin:/etc# co -l syslog.conf
syslog.conf,v --> syslog.conf
revision 1.4 (locked)
done
root@catlin:/etc# cp syslog.conf.backup syslog.conf
root@catlin:/etc# ci -u syslog.conf
syslog.conf,v <-- syslog.conf
new revision: 1.5; previous revision: 1.4
enter log message, terminated with single '.' or end of file:
>> commented out the FIFO line
>> .
done
We'll see some more fun things to do with RCS in the
next couple of hacks.
|