sccs-cvt(1)

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

πŸ’… sccs-cvt(1) β€” the sccs-cvt / sccscvt vibe check

okay bestie, so this page is from SchilyΒ΄s USER COMMANDS, and it's literally all about sccs-cvt and its twin alias sccscvt. Buckle up πŸŽ€


✨ NAME ✨

sccs-cvt, sccscvt β€” convert SCCS history files between v4/v6

🌸 SYNOPSIS 🌸

sccscvt [ options ] s.file1 .. s.filen

πŸ¦‹ DESCRIPTION πŸ¦‹

So Sccscvt takes SCCS v4 history files (the ones introduced in February 1977, grandma era fr) and turns them into SCCS v6 history files (introduced in August 2011, glow-up era), and it also does the whole thing in reverse. Both ways. Iconic.

The first line β€” the one holding the SCCS magic number and the checksum β€” gets converted to whatever format is appropriate. And the time format in the delta table? It gets converted too, by either stripping out the SCCS v6 extensions or by adding time zone info while assuming that every single timestamp is from the local time zone. No cap. And when you go from SCCS v6 to SCCS v4, that enhanced timestamp data is retained as the first delta comment line in a delta block, so nothing gets lost πŸ’–

SID-specific SCCS v6 enhancements get converted into a special delta comment, specifically so there's no information loss when converting to SCCS v4.

The SCCS v6 enhancements that live between the SCCS v4 flags indicated by ^Af and the SCCS comment block bracketed between ^At and ^AT are untouched β€” because those enhancements aren't flagged by historic SCCS versions, and they're retained by historic SCCS versions when a history file gets modified. Leave them alone, they're fine ✨

When in old mode, the option -NSCCS is not in effect, and if a file argument refers to a directory, that directory is scanned for file names starting with ``s.'' and it examines all of those files.

When in new mode, the option -NSCCS is in effect, and if a file argument refers to a directory, sccs-cvt opens the corresponding directory with SCCS history files and scans it for file names starting with ``s.'' and examines all of those files.

🫢 Real talk: it is recommended not to call sccs-cvt directly, but via ``sccs cvt'' β€” because that automatically adds the -NSCCS option in new mode. You need that in order to get the path name in as global meta data inside the converted SCCSv6 history file. That's the whole point, iykyk.

🧚 Converting an old mode project into a new mode project

First things first: it is recommended to initialize the project to use an in-tree repository by calling:

sccs init -i .

...in order to prepare the new mode. Get it ready, bestie.

Then, by calling:

SCCS_NMODE= sccs cvt -k -ooo .

all SCCS history files from the current directory are converted. The environment SCCS_NMODE= is currently needed in order to enforce new mode in sccs(1). And then just repeat that last command with other directories from the project. Easy πŸ’…

This program is a SCHILY extension that does not exist in historic sccs implementations. Special girl behavior only πŸ’œ


πŸ‘‘ OPTIONS πŸ‘‘

  • -d β€” when converting from SCCS v6 to SCCS v4, discard the extended SCCS v6 meta data instead of converting it into special degenerated delta comments. Bye bye data πŸ™ˆ
  • -help β€” prints a short summary of the sccscvt options and exists.
  • -k
  • -keep β€” keep the original history file as o.file. When this option is missing, the original file is replaced by the converted file. So like, if you don't say it, your original is gone.
  • -o β€” keep the old time stamp for the converted file.
  • -oo β€” set the time stamp for the converted file to the time stamp of the original file + 1 nanosecond. That's sufficient for modern filesystems like ZFS to get a distinguishable newer time that's still similar to the old time stamp. Nano-era slay ⭐
  • -ooo β€” set the time stamp for the converted file to the time stamp of the original file + 1 microsecond. Sufficient for older filesystems like UFS to get a distinguishable newer time that's still similar to the old time stamp.
  • -oooo β€” set the time stamp for the converted file to the time stamp of the original file + 1 second. Sufficient for historic filesystems to get a distinguishable newer time that's still similar to the old time stamp. Old school πŸŽ€
  • -V4 β€” convert a SCCS v6 history file into a SCCS v4 history file. Going back in time fr.
  • -V6 β€” convert a SCCS v4 history file into a SCCS v6 history file. Moving on up ✨
  • -Nbulk-spec β€” processes a bulk of SCCS history files. This option lets you 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:
      • none
    • The following path specifier types are supported:
      • -N β€” the file name parameters to the sccscvt 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 sccscvt command are s.filename files. The 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 sccscvt command are not s.filename files but the names of the g-files. The s.filename names are put into directory dir, and 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 sccscvt command are s.filename files in directory dir. The 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 sccscvt(1) and to send a list of path names to
  • -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 ad the abbreviation is still unique. Options with parameter may not be abbreviated.
      • 0 β€” when reading filenames from stdin, triggered by a file name argument -, the filename separator is a null byte instead of a newline. This allows one to use long lists with arbitrary filenames. 🫢
      • help β€” print a short online help for available options.
    • The -X option is a SCHILY extension that does not exist in historic sccs implementations.
  • -V
  • -version
  • --version β€” prints the sccscvt version number string and exists.

πŸ“ ENVIRONMENT VARIABLES πŸ“

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

  • SCCS_NO_HELP β€” if set, sccscvt(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. Control freak scripts, we respect you πŸ’…
  • TZ β€” used for the timezone when converting between SCCS v4 and SCCS v6.

πŸ”₯ EXIT STATUS πŸ”₯

The following exit values are returned:

  • 0 β€” successful completion. We love a win πŸŽ‰
  • 1 β€” an error occurred. 😭
  • -1 β€” a wrong option or parameter was specified. Read the options again bestie πŸ’€

🧚 FILES 🧚

  • s.file β€” history file
  • o.file β€” saved original version of the history file
  • 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

⭐ ATTRIBUTES ⭐

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

  • Attribute Type: Availability β€” Attribute Value: SCHILYdeveloper-build-sccs
  • Attribute Type: Interface Stability β€” Attribute Value: Evolving

🌈 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-deledit(1), sccs-delget(1), sccs-delta(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), what(1), sccschangeset(5), sccsfile(5), attributes(7), environ(7), standards(7).

πŸ’œ NOTES πŸ’œ

If a SCCS history file is converted from SCCS v4 to SCCS v6 and there is no retained SCCS v6 timestamp information in the delta comment, it may be a good idea to manually correct time zone information. Just saying 🫢

πŸŽ€ BUGS πŸŽ€

None currently known. (Iconic behavior, 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:

https://mlists.in-berlin.de/mailman/listinfo/schilytools-mlists.in-berlin.de.

🌸 AUTHOR 🌸

sccscvt (1) was originally written by Joerg Schilling in 2011 and is now maintained by the schilytools project authors.

πŸ¦‹ SOURCE DOWNLOAD πŸ¦‹

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

https://codeberg.org/schilytools/schilytools.

The download directory is

https://codeberg.org/schilytools/schilytools/releases.

and that's the whole page bestie πŸ’– written by Joerg Schilling, dated 2022/10/06 β€” go convert some history files, you've got this βœ¨πŸŽ€

πŸ“¦ where this page comes from