sccs-delta(1)

πŸ“¦ version 2022.10.16, in opensuse-leap 16.0

okay bestie, welcome to sccs-delta(1) β€” straight out of the User Commands section of the manual, and yes it's the one and only delta πŸ’…

🌸 NAME 🌸

sccs-delta, delta β€” make a delta to an SCCS file. that's it, that's the whole name πŸŽ€

✨ SYNOPSIS ✨

/usr/ccs/bin/delta [-dfhknopsz] [-g sid-list | -gsid-list]
    [-m mr-list | -mmr-list] [-q[nsedelim]] [-r sid | -rsid]
    [-y [comment]] [-D diff-file]
    [-Xextended-options] [-Nbulk-spec] s.filename...

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so picture this: you've got a file under SCCS control, you checked it out, you edited it, and now you want all those line-by-line differences actually recorded. that's what delta does β€” it checks in a record of the line-by-line differences made to a checked-out version of a file under SCCS control. main character behavior honestly πŸ‘‘

where do the changes come from? they're taken from the writable working copy that was retrieved using the SCCS get command (see sccs-get(1)). and here's the lil detail everyone forgets: this working copy does not have the s. prefix, and it's also referred to as a g-file. iykyk 🌈

if a directory name is used in place of the s.filename argument, the delta command applies to all s.files in that directory. unreadable s.files produce an error; processing continues with the next file (if any). no cap, it just keeps going 🫢

the use of - as the s.filename argument indicates that the names of files are to be read from the standard input, one s.file per line (requires -y, and in some cases, -m). literally a little conveyor belt of file names ✨

delta may issue prompts on the standard output depending upon the options specified and the flags that are set in the s.file (see sccs-admin(1), and the -m and -y options below, for details). so if it starts talking to you, that's normal, it's just being chatty πŸ’¬


πŸ’… OPTIONS πŸ’…

the following options are supported:

  • -b β€” use command bdiff(1) instead of fsdiff(1). this version of delta(1) by default uses fsdiff(1) that is faster than bdiff(1) and does not slow down as much with larger file size. speed demon energy ⚑
  • -d β€” use command diff(1) instead of bdiff(1). returns exit status 2 instead of 1 if the s.filename argument is not specified. noted, bestie, that's a whole different number πŸ“Œ
  • -f β€” in NSE mode, this option allows one to enforce a delta even when no p.file exists. the new SID is assigned using the same rules as with get -e.

this option is usually used together with the -q and -n options.

this option is an undocumented SUN extension that does not exist in historic sccs implementations. so don't go looking for it in the old archives πŸ’€
  • -h β€” in NSE mode, this option allows one to use diffh(1) for large files.

this option is currently defunct. it's giving "retired but still in the group chat" πŸ™ˆ

this option is an undocumented SUN extension that does not exist in historic sccs implementations.
  • -k β€” suppresses expansion of ID keywords when delta(1) is doing an implicit get(1) operation because -N+... was specified.
this option is a SCHILY extension that does not exist in historic sccs implementations.
  • -n β€” retain the edited g-file, which is normally removed at the completion of processing. keep it, bestie, don't let it go πŸ₯Ί
  • -p β€” display line-by-line differences (in diff(1) format) on the standard output. look at all those little lines go πŸ‘€
  • -q[nsedelim] β€” enable NSE mode. if NSE mode is enabled, several NSE related extensions may be used. in this release, the value of nsedelim is ignored. (yes, ignored. we don't ask questions πŸ’€)

in NSE mode, delta behaves as if the -o option was specified and never issues a warning about missing id keywords.

this option is an undocumented SUN extension that does not exist in historic sccs implementations.
  • -s β€” silent. do not display warning or confirmation messages. do not suppress error messages (which are written to standard error). silence, but not that kind of silence πŸ”‡
  • -g sid-list | -gsid-list β€” specify a list of deltas to omit when the file is accessed at the SCCS version ID (SID) created by this delta. this causes the file to be checked out later to differ from the checked in file unless get -isid-list with the same sid-list is specified during checkout. sid-list is a comma-separated list of SIDs. to specify a range of deltas, use a - separator instead of a comma, between two SIDs in the list. carrot-and-stick but for deltas πŸ₯•
  • -m mr-list | -mmr-list β€” if the SCCS file has the v flag set (see sccs-admin(1)), you must supply one or more Modification Request (MR) numbers for the new delta. when specifying more than one MR number on the command line, mr-list takes the form of a quoted, space-separated list. if -m is not used and the standard input is a terminal, delta prompts with MRs? for the list (before issuing the comments? prompt). if the v flag in the s.file has a value, it is taken to be the name of a program to validate the MR numbers. if that validation program returns a non-zero exit status, delta terminates without checking in the changes. gatekept by a whole validation program, iconic πŸ”₯
  • -o β€” use the original time of the edited file for the delta time when applying the delta. in NSE mode this is the default behavior. nostalgia timestamp πŸ•°οΈ
this option is a SCHILY extension that does not exist in historic sccs implementations.
  • -r sid | -rsid β€” when two or more versions are checked out, specify the version to check in. this SID value can be either the SID specified on the get command line, or the SID of the new version to be checked in as reported by get. a diagnostic results if the specified SID is ambiguous, or if one is required but not supplied. choose wisely bestie, the ambiguity will find you 😭
  • -y[comment] β€” supply a comment for the delta table (version log). a null comment is accepted, and produces an empty commentary in the log. if -y is not specified and the standard input is a terminal, delta prompts with comments? . an unescaped NEWLINE terminates the comment. so don't hit enter mid-thought, unless you meant to ✍️
  • -z β€” enable CMF extensions for MR number handling.
this option is an undocumented SUN extension that does not exist in historic sccs implementations.
  • -Cdir β€” specify the base directory for the g-file relative to the current working directory. by default, the g-file is searched for in the current directory (independent from the location of the s.file. 🫢
this option is a SCHILY extension that does not exist in historic sccs implementations.
  • -Ddiff-file β€” provide a file with prepared diff output to delta(1). if this option is present, delta(1) will not get the previous file content and call diff(1) on the previous file content and the current file content, but read the diff-file instead. pre-prepped diff, we love a meal-prep moment πŸ“
this option is a SCHILY extension that does not exist in historic sccs implementations.
  • -Nbulk-spec β€” processes a bulk of SCCS history files. this option allows one to do an efficient mass processing of SCCS history files. group project energy πŸ‘―β€β™€οΈ

the bulk-spec parameter is composed from an optional list of flag parameters followed by an optional path specifier.

the following flag types are supported:

  • + β€” if bulk-spec is preceded by a +, delta(1) removes the original g-files and replaces them by file content that is retrieved by a get(1) operation on the related s.file. this option is ignored if -n has been specified. swapsies πŸ”„
  • space β€” this is a placeholder dummy flag that allows one to use a prepared string for the -N option and to replace the space character by one of the supported flags on demand. the humble space bar, doing important work ␣

the following path specifier types are supported:

  • -N β€” the file name parameters to the delta command are not s.filename files but the names of the g-files. the s.filename names are automatically derived from the g-file names by prepending s. to the last path name component. both, s.filename and the g-file are in the same directory.
  • -Ns. β€” the file name parameters to the delta command are s.filename files. the g-files names are automatically derived by removing s. from the beginning of last path name component of the s.filename. both, s.filename and the g-file are in the same directory.
  • -Ndir β€” the file name parameters to the delta command are not s.filename files but the names of the g-files. the s.filename names are put into directory dir, the names are automatically derived from the g-file names by prepending dir/s. to the last path name component.
  • -Ndir/s. β€” the file name parameters to the delta command are s.filename files in directory dir. the g-files names are automatically derived by removing dir/s. from the beginning of last path name component of the s.filename.

a typical value for dir is SCCS. πŸŽ€

in order to overcome the limited number of exec(2) arguments, it is recommended to use - as the file name parameter for delta(1) and to send a list of path names to stdin. no cap, that's the move πŸ’―

this option is a SCHILY extension that does not exist in historic sccs implementations.
  • -Xextended-options β€” specify extended options. the argument extended-options may be a comma separated list of extended option names. ✨

the following extended options are supported, they may be abbreviated as long as the abbreviation is still unique:

  • date=datetime β€” allows one to overwrite the usual methods to determine the time stamp used for a new delta. this is needed to e.g. convert a historic SCCS history into a new project oriented bundle history. the format of the datetime argument is the same as for cutoff times but nanoseconds and a time zone offset are permitted in addition. yes, nanoseconds, we're fancy like that ⏱️
  • gpath=g-path β€” okay so lowkey sometimes the algorithm that derives the g-file path from the s-file just does not apply to your specific case, and that's not a you problem. This hands over a totally different path to the g-file instead of letting it derive one, and bestie you **need it to manage the changeset file. πŸ’…
  • nobulk β€” disables the -N (bulkmode) filename translations, periodt. Why? Because sccs(1) in NewMode will just ✨automatically✨ add a -N for you, and with that in play it would otherwise be straight-up impossible to deal with the changeset file .sccs/SCCS/s.changeset. So yeah. Necessary.
  • *mail=address* β€” sets address as the e-mail address in the delta table for the SID you just created πŸ’Œ
  • prepend β€” sticks the current content of the g-file onto the front of the previous content of that file. The whole point: with this option you do not need to unpack the old reference version and diff the current version against it. That's a major performance win, no cap, and it's the one used for updating the sccschangeset(5) file when in project mode. πŸ”₯
  • user=name β€” uses a different user name for the programmer field in the delta table. By default, the logname is used for that field. Small warning though: using a different name may later **deny the permission to modify a delta by programs like cdc(1). πŸ™ˆ
  • 0 β€” when reading filenames from stdin (triggered by a file name argument of -), the filename separator becomes a null byte instead of a newline. Which slays, because it lets you use long lists of arbitrary filenames.
  • help β€” prints a short online help for available options. We love a self-aware icon.
The -X option is a SCHILY extension that does not exist in historic sccs implementations. Just so we're clear 🫢
  • -V, -version, --version β€” prints the delta version number string, and exists. That's the whole bit. ⭐
This option is a SCHILY extension that does not exist in historic sccs implementations. Same energy.

✨ ENVIRONMENT VARIABLES ✨

See environ(7) for descriptions of the following environment variables that affect the execution of delta(1): LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.

  • SCCS_NO_HELP β€” if this is set, delta(1) will not automatically call help(1) with the SCCS error code in order to print a more helpful error message. Scripts that depend on the exact error messages of SCCS commands should set the environment variable SCCS_NO_HELP and set LC_ALL=C. You've been warned, and it's giving very much "I know what I'm doing" energy πŸ’€

🌸 STDOUT 🌸

If the -s option was not specified, delta prints statistics about file activities in the following format:

new-sid
nn inserted
nn deleted
nn unchanged

Look at her go. Numbers!! πŸ“Š


πŸ’– EXIT STATUS πŸ’–

The following exit values are returned:

  1. 0 β€” successful completion. We love a happy ending πŸŽ€
  2. 1 β€” an error occurred and the -d option had not been specified.
  3. 2 β€” an error occurred, the -d option had been specified, and the s.filename argument was not specified. Yes, the vibes are different for each one. Memorise them, iykyk.

πŸ¦‹ FILES πŸ¦‹

  • d.file β€” temporary file created by the delta(1) program with the content of the previous version, used to compute differences to the current version.
  • e.file β€” temporary file to hold an uuencoded version of the g-file in case of an encoded history file.
  • p.file β€” permission (lock) file for checked-out versions. See sccs-get(1) for a description of the layout of the p.file.
  • q.file β€” temporary copy of the p.file; renamed to the p.file after completion.
  • s.file β€” SCCS history file, see sccsfile(5).
  • x.file β€” temporary copy of the s.file; renamed to the s.file after completion.
  • z.file β€” temporary lock file, contains the binary process id in host byte order followed by the host name.
  • dump.core β€” if the file dump.core exists in the current directory and a fatal signal is received, a coredump is initiated via abort(3). That's the whole feature. Just a little guy in your directory deciding whether you get a coredump today 😭

πŸ’œ ATTRIBUTES πŸ’œ

See attributes(7) for descriptions of the following attributes:

/usr/ccs/bin/delta

  • Availability β†’ SUNWsprot

That's it, that's the whole table bestie πŸ’…


🌈 SEE ALSO 🌈

sccs(1), sccs-add(1), sccs-admin(1), sccs-branch(1), sccs-cdc(1), sccs-check(1), sccs-clean(1), sccs-comb(1), sccs-commit(1), sccs-create(1), sccs-cvt(1), sccs-deledit(1), sccs-delget(1), sccs-diffs(1), sccs-edit(1), sccs-editor(1), sccs-enter(1), sccs-fix(1), sccs-get(1), sccs-help(1), sccs-histfile(1), sccs-info(1), sccs-init(1), sccs-istext(1), sccs-ldiffs(1), sccs-log(1), sccs-print(1), sccs-prs(1), sccs-prt(1), sccs-rcs2sccs(1), sccs-remove(1), sccs-rename(1), sccs-rmdel(1), sccs-root(1), sccs-sact(1), sccs-sccsdiff(1), sccs-status(1), sccs-tell(1), sccs-unedit(1), sccs-unget(1), sccs-val(1), bdiff(1), diff(1), fsdiff(1), what(1), sccschangeset(5), sccsfile(5), attributes(7), environ(7), standards(7).

A whole friend group, honestly πŸ‘‘πŸ’–


🧚 DIAGNOSTICS 🧚

Use the SCCS help command for explanations (see sccs-help(1)). It's literally the designated explainer.


⚠️ WARNINGS ⚠️

Lines beginning with an ASCII SOH character (binary 001) cannot be placed in the SCCS file if the SCCS v4 history file format is used, unless the SOH is escaped. This character has special meaning to SCCS (see sccsfile(5)) and produces an error in SCCS v4 mode. Good news though: SCCS v6 automatically escapes such characters and thus allows you to use ASCII SOH at any place in a file. Upgrade your vibes, upgrade your format 🌸

Real talk: if delta(1) is used in force mode (using delta -q -f -n s.file), using the option -gsid-list in addition will result in unexpected behavior. Why? Because the file content used for delta(1) differs from what is extracted using get(1). And since in force delta mode, get(1) is usually not used, the next delta will revert the effect of the delta -g... call. So it's giving chaos. Don't do it πŸ˜­πŸ’€

πŸ“ BUGS πŸ“

None currently known. Iconic behaviour, honestly ✨

Mail bugs and suggestions to schilytools@mlists.in-berlin.de or open a ticket at https://codeberg.org/schilytools/schilytools/issues.

The mailing list archive may be found at:


---

# πŸ‘‘ AUTHORS πŸ‘‘

The SCCS suite was originally written by Marc J. Rochkind at Bell Labs in 1972. Release 4.0 of SCCS, introducing new versions of the programs `admin(1)`, `get(1)`, `prt(1)`, and `delta(1)` was published on February 18, 1977; it introduced the new text based SCCS v4 history file format (previous SCCS releases used a binary history file format). The SCCS suite was later maintained by various people at AT&T and Sun Microsystems. Since 2006, the SCCS suite has been maintained by Joerg Schilling and is now maintained by the schilytools project authors.

Literal legends. All of them. πŸ«ΆπŸ’œ

---

# ⭐ SOURCE DOWNLOAD ⭐

The source code for SCCS is included in the schilytools project and may be retrieved from the schilytools project at Codeberg at

The download directory is


---

And that's the whole page, bestie! This one shipped on `SunOS 5.11` and the date on it is `2022/10/06`, filed under `sccs-delta(1)` β€” go forth and delta responsibly πŸ’…πŸŽ€πŸ¦‹
πŸ“¦ where this page comes from