|
Chapter 20 Backing Up Files
|
|
rcsrevs
|
The rcsrevs
script tells you all the revision numbers that are
stored in an
RCS (20.14
)
file.
For instance: |
% rcsrevs myprog
1.3
1.2
1.1
1.2.1.1
What good is that?
Here are two examples.
rcsgrep -a
(27.10
)
uses rcsrevs
when it's searching all revisions of an RCS file.
If you want to print all revisions, run a program across all revisions
to do some kind of check, and so on, rcsrevs
can give you the
revision numbers to use in a
loop (9.12
, 9.11
)
.
The shell loop below gets all the revision numbers and stores them in
the revnum
shell variable one by one; it runs
co -p
(20.14
)
to send each revision to the
pr -h
(43.7
)
command for formatting with a custom header;
the output of the commands in the loop goes to the printer.
`...`
>
done|lpr
|
$ for revnum in `rcsrevs
somefile
`
> do
> co -p -r$revnum
somefile
| pr -h "
somefile
revision #$revnum"
> done | lpr
|
You'd like to compare the two most recent revisions of several RCS files
to see what the last change was.
But the revision numbers in each file are different.
(One file's latest revision might be 2.4, another file could be at 1.7,
etc.)
Use
head
(25.20
)
to grab the two highest revision numbers from the rcsrevs
output,
tail -r
(25.15
)
to reverse the order (put the older revision number first),
use sed
to make the revision numbers into a pair of -r
options
(like -r1.6 -r1.7
),
then run rcsdiff
to do the comparisons and
email (1.33
)
them to bigboss
:
?
|
% foreach file (*.cc *.h Makefile)
? set revs=`rcsrevs $f | head -2 | tail -r | sed 's/^/-r/'`
? rcsdiff $revs $f | mail -s "changes to $file" bigboss
? end
|
rcsrevs
accepts rlog
options to control what revisions are
shown.
So rcsrevs -r2 somefile
would list only revisions 2.0 and above,
rcsrevs -sbeta
would list the revisions in beta
state,
and so on.
|
|