RCS + modification time?
David Brown
david at varian.UUCP
Thu Nov 1 15:18:17 AEST 1984
We have recently converted from using SCCS to RCS on a large (6 programmers)
project, and have come across a problem involving RCS and make:
When a user checks out a file for edit, the lock information is placed
in the ,v file itself (as opposed to SCCS, which created a separate
lock file with a p. prefix). This changes the modification time of the
,v file, and if someone else does a make on the system before the
editing user does a check-in (ci) , that file will be recompiled
unnecessarily. As the cross assembler we are using (Microtec Z80
cross assembler, written in Fortran) is very slow, we would prefer
to avoid unnecessary compilations.
I have thought of a modification to co that would avoid unnecessary
recompilations, but I want to get opinions from the net in case there
are holes, security problems, etc.. I would also be interested in
hearing from anyone who has made a similar change or found a better
way around this problem. It seems to me that someone else should have
run into this by now.
Proposal:
There is a system call (utime(2)) that allows you to set the times
on a file to whatever you want, rather than the actual time. A quick
grep through /usr/src/cmd/*.c found this call used only by the mv(1)
command.
Modify co to:
call stat(2) to find out original modification time of the ,v file
do normal processing (write lock info into file & close)
call utime(2) to set the modification time of the ,v file
back to the original time
There will be a short window after the file is closed but before the
modification time is set back, but it shouldn't be large enough to
worry about a make coming through.
Possible problems:
1) How does this affect dumps (my guess is that an incremental dump will not
pick up the ,v file, so if we had to do a total restor, the ,v file will
no longer be locked. I think I could live with that).
2) utime must be called by superuser or by the owner of the file
(at least according to the manual); this implies to me that utime can't
be called by someone who only has group write permission on the ,v file.
We do use group write permission sometimes, but I think we can avoid that.
3) You will not be able to find out the latest files that have been checked
out by doing ls -lt in the RCS directory; you will need to use rlog.
We could live with this too.
--
David Brown (415) 945-2199
Varian Instruments 2700 Mitchell Dr. Walnut Creek, Ca. 94598
{zehntel,amd,fortune,resonex}!varian!david
More information about the Comp.unix
mailing list