Make incompatible with source control?

jlw at ariel.UUCP jlw at ariel.UUCP
Sun Oct 21 02:40:41 AEST 1984


AT&T UNIX make is pretty incompatible with SCCS.
There are two main reasons:

1.  SCCS uses a dating structure internal to the text of the
    file, stored in the delta records of the header.
    Make, on the other hand, uses only UNIX's idea of when
    the file was changed.  This can actually be dangerous
    when combined with the absolutely brain-damaged rule
    supplied with make for dealing with SCCSfiles. To wit:

	get -p SCCSfile > object

    This is diametrically opposed to SCCS's idea of what type
    of file permissions warrant protection.  In SCCS a file
    out for editing, `get -e', and therefore writable is precious
    and not to be overwritten, whereas a file obtained with plain
    `get' is recreatable and does not need to be preserved.
    I think that the rule should be something like:

	if [ ! -w object ] then get SCCSfile

    Think about what happens in the following scenario:

	Monday: Programmer `get -e SCCSfile.c'
		ed file.c; etc.

	Tuesday: Programmer more ed file.c; etc

	Wednesday:  Source Administrator makes global
		change to headers of all project source
		files.

	Thursday: Programmer `make's a new version
		and wipes out two day's work.

	Friday: Programmer realizes what went wrong and
		goes on binge.

	Saturday: Programmer meets Source Administrator
		in bar and wastes him in cold blood and
		we have another tragedy for our criminal court
		system.

2.  SCCS today uses leading context and make uses trailing context.
    For example in SCCS

	get s.file.c -> file.c

    and in make this becomes

	.c~ -> .c -> .o (with perhaps intermediate steps) -> (nothing)

    This is pretty ugly.  Does anyone out there remember
    the first version of SCCS to run on UNIX which had the name
    of the SCCSfile as plain file?

	get file -> file.c (or .a or .s if the internal language flag
	was set to C, unrecognized, or assembler respectively)

    The above statement about SCCS versions means that there was an
    original version of SCCS written by Mark Rochkind at BTL PY which
    was either in spitbol or snobol4 and used the Librarian package
    as its primmary storage medium.  He then transferred this to PWB
    UNIX as SCCS 2 in about 1974 or thereabouts.  This was subsequently
    completely redone by Alan Glasser in say 1976 as SCCS 3 which went
    out to the public as simply SCCS.  As far as I know the original
    version of SCCS is still being used by BCR at PY.



					Joseph L. Wood, III
					AT&T Information Systems
					Laboratories, Holmdel
					(201) 834-3759
					ariel!jlw



More information about the Comp.unix.wizards mailing list