https://invisible-island.net/ded/sccs_tools/
sccsput - SCCS check-in script
sccsput [options] [file-specifications]
Sccsput is a simple, easy to use interface to sccs (source code control
system). For each file specified as input, it checks differences
against the previously archived version and prompts you for change
history comments.
Sccsput uses the sccs utilities admin and delta to maintain versions of
a given source file in a dependent directory named "SCCS". It is more
than an integration of the admin and delta utilities, however:
o It checks to ensure that each file is indeed a text file (so that
you do not accidentally archive ".o" files, for example).
o If you give sccsput a directory name, it will recur, checking-in
files in the directory.
o For each file which has a corresponding "s." file, sccsput compares
the two (using diff) and pipes the result through the pager.
o An option is provided so that you may direct sccsput to perform the
differencing without checking the file into sccs.
o The "s." file is post-processed by sccsput so that the check-in
date matches the file's modification date.
The last point is the fundamental advantage offered by sccsput. The
ordinary sccs methodology uses the current date as the check-in date.
This works well only for large projects in which a central project
administrator is responsible for controlling the versions of source
files. It does not work well for small projects, for which sccs's
primary advantage is its compact storage of multiple versions of a
file.
By using the file's modification date as a reference, you can more
easily back up to a meaningful version - by date, rather than version
number. (By working exclusively in terms of modification date, you
lose the ability to specify sccs release numbers - given the complexity
of sccs's interface for release and version numbers, this is probably
not such a great loss).
Sccsput integrates all of the functions used in the sccs check-in
process into one utility program.
Some of the options which you may specify to sccsput are passed through
to the underlying utilities. Others represent extensions:
-b is passed to diff, and directs it to ignore trailing blanks on a
line, and to treat repeated blanks as a single blank.
-c directs sccsput to use cat rather than the PAGER (usually more)
to display differences. This is most useful in an Apollo pad,
since the more program would otherwise switch to VT100 emulator
mode.
-f forces a check-in, ignoring the output of the file utility,
which identifies text files.
-l file
causes sccsput to generate a log-file of the files which are
processed, and all differences which are encountered. The log-
file is inherited in recursion to lower directory levels (i.e.,
it is written to the same place).
-n instructs sccsput to test for differences, but not to check the
files into sccs.
-s suppresses some of the messages generated by the sccs delta
utility describing the number of lines changed, etc.
The sccsput utility is designed for use in small development projects.
The methodology for this tool follows:
o Develop source files "normally". Each file should contain sccs
keywords (see get (1)) so that you will be able to distinguish
checked-out files. The sccs keywords should appear at the top of
your source file, for consistency. In C language programs, the
convention is to make a string which will permit the what utility
to show the versions of the modules which make up a program:
#ifndef lint
static char sccs_id[] = "@(#)sccsput.doc 1.1 88/05/05
08:07:16";
#endif
o Periodically archive (with sccsput) those versions of files which
you wish to keep (You should never have programs which have new
features which you wish to keep, while there are defects in other
parts of the program - that would be an unsound approach to
development!).
o When you reach the point of releasing the program, ensure that all
source files have been checked-in. The directory editor (ded) is
useful for reviewing the check-in dates.
o Copy the directory containing your program to the release
directory. Purge all files, except those which are stored in the
sccs subdirectories. Use sccsget to extract the files (the
unadorned get utility will work, of course, but it retains the file
modification dates).
o Ensure that all files have been checked-in and released. You may
use diff to compare the directories - the only differences should
be the substituted sccs keywords.
o Build the released version of your program. All files should be
present. No embedded path names should refer to your development
copy. To ensure good isolation, you may change the permissions on
your development directory temporarily.
Sccsput checks your source file out after the check-in, automatically.
This is done to facilitate development. A check-in simply adds the
latest changes to a file onto the archive.
When checking files into sccs, it is a good idea to make a test run
(using the "-n" option) so that you can inspect the differences. For
example, you may have forgotten to remove (or bypass) debugging stubs.
Or, you may have been editing a checked-out file (with the sccs
keywords substituted). Sccsput would archive this anyway. If you
forget, and wish to kill the check-in, wait until the "comments?"
prompt is issued by the delta utility. At this point you may kill
sccsput without having to clean up temporary files.
If you do not have write-permission on the "SCCS" directory, but wish
to review changes, use the "-n" option. The intermediate files are
written in the /tmp directory.
Sccsput is a Bourne shell script. On Apollo DOMAIN/IX, it uses
System 5 features including dirname (1) and getopt (1).
Environment variables imported by sccsput include:
Sccsput also uses the following environment variables:
NOTE Provides a default value for the delta comments. Normally you
should provide case-by-case comments for each file. This
variable is provided so that other programs can invoke sccsput.
If the NOTE variable is defined (i.e., non-null) it is used; you
will not be prompted for comments.
PAGER identifies the program to use in displaying differences between
the file which is being checked in, and the previously archived
version. There may be a lot of differences - more than can be
shown on one screen.
SCCS_DIR
specifies the directory into which the sccs "s." files are
stored. If no specified, sccsput assumes "SCCS".
Sccsput uses the following files
sccsput
the Bourne shell script
putdelta
A utility which invokes admin or delta as required, and modifies
the sccs "s." file after check-in so that the check-in date
matches the file's modification date.
Make sccsput clean up temporary files if it is interrupted.
Provide a mechanism for inserting dummy version numbers so that sccsput
can bump the release number (for genuine major releases). Currently,
the SID's are restricted to 1.1, 1.2, 1.3, etc.
Thomas Dickey (Software Productivity Consortium).
putdelta, sccsget, ded, admin (1), delta (1), diff (1), get (1),
rmdel (1), what (1)
2025-09-28 SCCSPUT(1)