Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
sccsfile(5)			  File Formats			     sccsfile(5)

NAME
     sccsfile - format of an SCCS history file

DESCRIPTION
     An  SCCS  file  is  an  ASCII file consisting of six logical parts (SCCS v4
     checksum, delta table, usernames, flags, comments, body) or  eight  logical
     parts  (SCCS v6  checksum,  delta	table, usernames, v4 flags, v6 flags, v6
     metadata,	comments, body):

     checksum	 Character sum computed on the rest of the file, used for  error
		 detection.

     delta table
		 Log containing version info and statistics about each delta.

     usernames	 Login names and/or group IDs of users who may add deltas.

     flags	 Definitions of internal keywords and configuration for user de-
		 fined behavior (SCCS v4).

     v6 flags	 Optional further internal definitions.  SCCS v6 only.

     v6 metadata
		 Optional global metadata.  SCCS v6 only.

     extensions  This  is the area where future versions of SCCS will add exten-
		 sions.

     comments	 An arbitrary descriptive information block about the file.

     body	 the Actual text lines intermixed with control lines.  This body
		 is also known as interleaved deltas or the weave.

     Each section is described in detail below.

     This document describes the SCCS v4 history file format that has  been  in-
     troduced  in  February  1977  as well as the SCCS v6 enhancements that have
     been introduced in September 2011.

   Conventions
     Throughout an SCCS file there are lines which  begin  with  the  ASCII  SOH
     (start  of  heading) character (octal 001). This character is hereafter re-
     ferred to as the control character, and will be represented as `^A'.  If  a
     line  described below is not depicted as beginning with the control charac-
     ter, it cannot do so and still be within SCCS file format.

     Entries of the form ddddd represent a decimal number.   In  the  statistics
     line  from  the  delta table, this represents a five digit string (a number
     between 00000 and 99999).	Other numbers are not artificially limited to  a
     specific  range.	Serial	numbers and SID number components may be any non
     negative number representable by a signed 32 bit integer.

     The usable range on a specific machine is however limited by the  available
     virtual  memory.	This implementation needs virtual memory that is approx.
     100 times the highest serial number from the file.  If a SCCS history  file
     contains  one  million deltas, this implementation needs 100 MBytes of vir-
     tual memory to process the deltas.

   Checksum
     The checksum is the first line of an SCCS file. The form of the line is:

       ^Ahddddd

     The value of the checksum is the low 16 bits from the  signed  sum  of  all
     characters,  except those contained in the first line.  When reading files,
     values computed as the unsigned sum of all  characters  are  accepted  too.
     The  ^Ah  provides a 16 bit magic number of (octal) 064001 in PDP-byteorder
     and 000550 in Motorola-byteorder ("\001\150").

   SCCS v6 Checksum
     SCCS v6 introduces a different checksum line:

       ^AhV6,sum=ddddd

     The checksum line was changed in order to prevent historic SCCS implementa-
     tions from accidentally ignoring project-related (project-global) locks. It
     permits future versions to decide on different checksum algorithms  without
     a need to again introduce a new history file format.

     In  SCCS v6,  the ^Ah magic is not directly followed by the checksum but by
     the letter V that is followed by the SCCS version number. The version  num-
     ber  is followed by a comma and the checksum algorithm name. The string sum
     is interpreted as the SCCS v4 checksum method. The SCCS v4  checksum  entry
     must directly follow the SCCS version number.

     Further checksums may be added in the future, e.g.:

       ^AhV6,sum=ddddd,md5=hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

     but  the  sum=  entry  is	mandatory.  SCCS v6 currently does not implement
     checksum algorithms other than sum.  Other entries  are  currently  ignored
     when reading and silently discarded when copying or modifying files.

   Delta Table
     The delta table consists of a variable number of entries of the form:

       ^As inserted/deleted/unchanged
       ^Ad type  sid  yr/mo/da hr:mi:se  username  serial-number \
       predecessor-sn
       ^Ai include-list
       ^Ax exclude-list
       ^Ag ignored-list
       ^Am mr-number
       ...
       ^Ac comments ...
       ...
       ^Ae

     The lines with the entry type ^As, ^Ad and ^Ae are mandatory.

     The  first  line  (^As)  contains	the number of lines inserted/deleted/un-
     changed respectively.  The actual values for inserted/deleted/unchanged are
     five digit numbers.  If an actual value is greater than 99999, then  it  is
     replaced by 99999.

     The second line (^Ad) contains the type of the delta in the second word:

	    D	   for a normal delta

	    R	   for a removed delta

	    U	   for a delta that causes to unlink the g-file

		   If  this delta type is used for the initial release of a SCCS
		   history file, the default SID is set to  1.0  to  permit  the
		   first delta with data to have the typical 1.1.

     The  delta  table	type  is followed by the SCCS ID (SID) of the delta, the
     date and time of creation of the delta as local time, the user-name  corre-
     sponding to the real user ID at the time the delta was created, and the se-
     rial numbers of the delta and its predecessor, respectively.

     The  year is either represented by a two digit year in the range 69..99 for
     1969..1999 or 00..68 for 2000..2068 or by a four digit  year  number.  Year
     numbers  before  1969 are currently not supported.  Older SCCS versions may
     not be able to understand four digit year numbers.

     The user-name must not contain a space character, as  space  is  the  field
     separator	in  this  file	format.  Since some non-POSIX platforms permit a
     space in the username, it is converted into a `_' by the SCCS software  be-
     fore storing it in the history file.

     The  ^Ai, ^Ax, and ^Ag lines contain the serial numbers of deltas included,
     excluded, and ignored, respectively.  These lines do not always appear.

     The ^Am lines (optional) each contain one MR  number  associated  with  the
     delta.

     The ^Ac lines contain comments associated with the delta.	If there is more
     than  one comment line, each comment line appears after a separate ^Ac lead
     in.

     The ^Ae line ends the current delta table entry.

   SCCS v6 Delta Table
     SCCS v6 uses an enhanced delta table:

       ^As inserted/deleted/unchanged
       ^Ad type  sid  yr/mo/da hr:mi:se[.ss]+-hhmm username \
       serial-number predecessor-sn
       ^Ai include-list
       ^Ax exclude-list
       ^Ag ignored-list
       ^Am mr-number
       ...
       ^AS sid-specific metadata
       ...
       ^Ac comments ...
       ...
       ^Ae

     The second line (^Ad) must have a four digit year number, may add	sub-sec-
     ond time stamp granularity and must have a time zone offset.

     Optional  sub-second time stamp granularity is introduced by a dot `.'  and
     adds one to nine decimal digits that represent a fraction of a second up to
     nanosecond granularity. This number must be non-negative.

     The time zone offset starts with a `+' or a `-', the value 0000 starts with
     a `+', negative values start with a `-'.  Positive values are east to  GMT.
     The first two decimal digits represent the hour part of the GMT offset, the
     last  two	decimal  digits  represent  the minute part of the GMT offset. A
     granularity less than a minute cannot be represented.

     The date and time part represents local time as in SCCS v4 entries, but the
     mandatory timezone offset makes the time unique.  The time stamp:

       2012/02/01 13:00:00+0100

     represents 2012, the first of February 12:00 GMT which is 13:00 MET.

     The ^AS lines introduce SID specific SCCS v6 extensions.  SID specific  ex-
     tension lines are in name/value format and take the form:

	     ^AS name optional value text

     The following name parameters are defined:

	    p path    Record  the  current  path of the g-file relatively to the
		      project's file set home directory. A path entry  only  ap-
		      pears  in  case  a rename or remove operation has been ap-
		      plied to the file.

		      The project set home is a directory that holds a directory
		      .sccs for project specific SCCS metadata. The location  of
		      this  directory  .sccs  is  searched  for  by scanning the
		      filesystem towards the root directory, starting  from  the
		      current  working	directory.  All  files	that belong to a
		      project must be below the project's file set  home  direc-
		      tory.

		      See  also the description for the same keyword in the sec-
		      tion for global meta data, where the the initial file name
		      is recorded.

	    s nnnnn   A SID specific additional  checksum.   The  value  of  the
		      checksum	is  the low 16 bits from the unsigned sum of all
		      characters in the SID specific file content  as  retrieved
		      by  `get	-e' (without keyword expansion).  If the file is
		      archived UU-encoded (see `e' flag), the checksum	is  com-
		      puted on the UU-encoded text and not on the original file.

     The  data	format	in  the extended SCCS delta entry (^Ad) and the SCCS SID
     specific metadata (^AS) is not accepted by historic  SCCS	implementations.
     When  converting  a  SCCS v6  history  file back to a SCCS v4 history file,
     these entries are converted into special comment at the  beginning  of  the
     comment  section.	While  converting, a copy of the unmodified ^Ad entry is
     kept as ^Ac_d and ^AS is turned into ^Ac_S.

   User Names
     The list of user-names and/or numerical group IDs	of  users  who	may  add
     deltas  to  the file, separated by NEWLINE characters. The lines containing
     these login names and/or numerical group IDs are surrounded by the bracket-
     ing lines ^Au and ^AU.  An empty list allows anyone to make a delta.

   Flags
     Flags are keywords that are used internally (see sccs-admin(1) for more in-
     formation on their use).  Each flag line takes the form:

	     ^Af flag optional text

     Flags may be selected from the set of 26 lower case characters in the range
     `a'..`z'.	Historical SCCS implementations will dump core in case a charac-
     ter outside the specified range appears as flag character.

     The following flags are defined in order of appearance:

     ^Af t type-of-program   Defines the replacement for the %Y% ID keyword.

     ^Af v program-name      Controls prompting for MR numbers	in  addition  to
			     comments.	If  the optional text is present, it de-
			     fines an MR number validity checking program.

			     The v flag and the z flag are mutually exclusive.

     ^Af i [value]	     Indicates that the `No id keywords' message  is  to
			     generate an error that terminates the SCCS command.
			     Otherwise,  the  message  is  treated  as a warning
			     only.

			     If the parameter value  to  the  `i'  flag  is  not
			     empty,  then it holds a line fragment with keywords
			     starting with a `%', e.g.
				     `%Z%%M%	 %I% %E%'
			     This line fragment needs to exactly match a part of
			     a line in the file and to result in  expanded  key-
			     words. Otherwise an attempt to check in a new delta
			     will  fail.  The parameter to the `i' flag is a SUN
			     extension.

     ^Af b		     Indicates that the -b option may be used  with  the
			     SCCS  get	command  to create a branch in the delta
			     tree.

     ^Af m module-name	     Defines the first choice for the  replacement  text
			     of the %M% ID keyword.

     ^Af f floor	     Defines  the  "floor" release, that is, the release
			     below which no deltas may be added.

     ^Af c ceiling	     Defines the "ceiling" release, that is, the release
			     above which no deltas may be added.

     ^Af d default-sid	     The d flag defines the default SID to be used  when
			     none is specified on an SCCS get command.

     ^Af n		     The n flag enables the SCCS delta command to insert
			     a "null" delta (a delta that applies no changes) in
			     those  releases  that  are  skipped when a delta is
			     made in a new release (for example, when delta  5.1
			     is  made  after  delta  2.7,  releases  3 and 4 are
			     skipped).

     ^Af j		     Enables concurrent get -e calls for editing on  the
			     same  base SID of an SCCS file.  This allows multi-
			     ple concurrent updates to take place  on  the  same
			     version of the SCCS file.

     ^Af l lock-releases     Defines  a list of releases that are locked against
			     editing.

     ^Af q user-defined      Defines the replacement for the %Q% ID keyword.

     ^Af e 0|1		     The e flag indicates whether a source file  is  en-
			     coded  or	not.  A 1 indicates that the file is en-
			     coded.  Source files need to be encoded  when  they
			     contain control characters, or when they do not end
			     with  a  NEWLINE. The e flag allows files that con-
			     tain binary data to be checked in.

     ^Af z application	     The name of an application  for  the  CMF	enhance-
			     ments.  CMF enhancements are currently undocumented
			     and it is not known how they are expected to work.

			     The v flag and the z flag are mutually exclusive.

     ^Af s nnn		     The  number  of lines to be scanned for keyword ex-
			     pansion.

			     This flag is a SUN extension that does not exist in
			     historic sccs implementations.

     ^Af x SCHILY|0	     If the value of the `x' flag is  set  to  `SCHILY',
			     enable  sccs extensions that are not implemented in
			     classical sccs variants. If the  `x'  flag  is  en-
			     abled,  the  keywords %d%, %e%, %g% and %h% are ex-
			     panded even though not explicitly	enabled  by  the
			     `y' flag.

			     This flag is a SCHILY extension that does not exist
			     in historic sccs implementations.

			     This  version of SCCS implements read only compati-
			     bility support for a SCO SCCS extension  that  sets
			     the  executable  bit  in  the file permissions of a
			     gotten file if the x-flag was set	in  the  history
			     file  with  no parameter. This version of SCCS does
			     not allow to set this variant of the x-flag in  the
			     history  file.  If you like to get executable files
			     from SCCS, set the executable bit in the file  per-
			     missions of the history file.

			     If  this version of SCCS is used to create the his-
			     tory file and the executable bit  was  set  in  the
			     original  file,  SCCS  automatically  sets the exe-
			     cutable bit in the history file  and  thus  retains
			     the executable bit in the gotten file.

     ^Af y val ...	     The  list	of sccs keywords to be expanded.  If the
			     y-flag is missing in the sccs historyfile, all sccs
			     keywords are expanded.  If the flag is present  but
			     the  list	is  empty, no keyword is expanded and no
			     `No id keywords' message is generated.   The  value
			     `*'   controls   the  expansion  of  the  %sccs.in-
			     clude.filename% keyword.

			     This flag is a SUN/SCHILY extension that  does  not
			     exist in historic sccs implementations.

   SCCS v6 Flags
     SCCS v6  flags  are additional keywords that are used internally (see sccs-
     admin(1) for more information on their use).   Each  flag	line  takes  the
     form:

	     ^AF flag optional text

     No SCCS v6 flags are currently defined.

     Historical  SCCS  implementations	do not complain about SCCS v6 flags when
     reading SCCS history files and retain SCCS v6 flags when modifying  history
     files.   This is why SCCS v6 flags may be kept unmodified when converting a
     SCCS v6 history file back to a SCCS v4 history file.

   SCCS v6 Metadata
     SCCS v6 metadata is additional global metadata that is used internally (see
     sccs-admin(1) for more information on it's use).  Each metadata line  takes
     the form:

	     ^AG keyword optional text

     The following keywords are defined:

	    p path    Record  the  initial  path of the g-file relatively to the
		      project's file set home directory. Once set up, this  name
		      must never change.

		      See  also  the description for the project set home in the
		      documentation for the same keyword in the section for  SID
		      specific	meta  data of the delta table.	In case of a re-
		      name, the new file name is recorded in in the SID specific
		      meta data of the delta table.

	    r random  A unified pseudo random  number  (see  also  changeset(5))
		      that  is	used to help to identify single files across re-
		      names during the lifetime of the sccs history.

		      The pseudo random number is a hexadecimal string that rep-
		      resents the  microseconds  since	Jul 13 11:01:20 2012 GMT
		      when  initially  creating  the sccs history for a specific
		      file.  Including microseconds gives sufficient  randomness
		      to make clashes rare.

		      With  a 32 bit signed time_t, 52 bits in the pseudo random
		      number are sufficient.  With a 64 bit pseudo  random  num-
		      ber, more than 500000 years are covered.

		      The  minimal  length for the pseudo random number is thir-
		      teen hexadecimal characters. If the number could be repre-
		      sented with less digits, it is left  filled  with  zeroes.
		      This  allows  one  to have a unique length for this number
		      until Mar 31 10:55:07 2155 GMT.

     The random metadata is mandatory for SCCS v6  history  files.  The  initial
     path  tag	may  be recorded later but before the changeset file is created.
     The value for this metadata tags must not change.

     Historical SCCS implementations do not complain about SCCS v6 metadata when
     reading SCCS history files and retain SCCS v6 metadata when modifying  his-
     tory  files.  This is why SCCS v6 metadata may be kept unmodified when con-
     verting a SCCS v6 history file back to a SCCS v4 history file.

   Extensions
     This is the area where future versions of SCCS will add extensions.

     SCCS reserves the area just before the comments section for  extensions  by
     only  checking  the content at this location for syntactic correctness. Un-
     known elements at this location are still copied and kept intact  when  the
     historyfile  is  modified.   SCCS v6  already  introduced SCCS v6 flags and
     global SCCS v6 metadata as extensions, so	future	extensions  must  appear
     past the SCCS v6 metadata.

   Comments
     Arbitrary	text  surrounded  by the bracketing lines ^At and ^AT.	The com-
     ments section typically will contain a description of the file's purpose.

   Body
     The body consists of text lines and control lines.  Text lines do not begin
     with the control character, unless they are  using  SCCS v6  escape  exten-
     sions. Control lines always begin with the control character.

     There  are  three	kinds  of control lines: insert, delete, and end, repre-
     sented by:

       ^AI ddddd
       ^AD ddddd
       ^AE ddddd

     respectively.  The digit string is the serial number corresponding  to  the
     delta for the control line.

     An inserted block of lines looks this way:

     ^AI ddddd
     block of data
     ^AE ddddd

     A deleted block of lines looks this way:

     ^AD ddddd
     block of data
     ^AE ddddd

     The block of data may contain control lines with other serial numbers.

   SCCS v6 Body escape extensions
     There  are  two  additional types of text lines with a control character at
     the beginning that represent features introduced by  SCCS v6.   These  fea-
     tures  are  not understood by SCCS implementations that support the SCCS v4
     history file format only.

       ^A^A	 A line in the interleaved delta block that begins with two con-
		 trol characters represents a text line that begins at the  sec-
		 ond control character.

       ^AN	 A  line in the interleaved delta block that begins with the ^AN
		 sequence represents a text line that does not end with  a  new-
		 line  character.   A line in the form ^AN^Atext is extracted as
		 ^Atext without a need to add another quote.

FILES
     ``g-file''  version retrieved by get

     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.	 Used  by  admin(1)  and
		 delta(1).

     l.file	 file containing extracted delta table info

     o.file	 saved	original  version  of  the history file, created by scc-
		 scvt(1).

     p.file	 permissions (lock) file for checked-out versions.   The  p.file
		 has  an  arbitrary number of lines, each is related to a get -e
		 call. Each line has the following structure:

		    old-sid new-sid username date time \
		    [ -ii-arg ][ -xx-arg ][ -zz-arg ]

		 The old-sid is the SID that was checked out with  get	-e,  the
		 new-sid  is  the SID that will be used for the new version when
		 delta is called. The username is the user-name corresponding to
		 the real user ID at the time get -e was called.  The  date  and
		 time  fields  are in the same format as used in the delta table
		 of the s.file as described in sccsfile(5) for SCCS v4.  In  or-
		 der  to grant POSIX compatibility, a two digit year is used be-
		 tween 1969 and 2068. For years outside that range, a four digit
		 year is used.	The following fields are only present  when  one
		 or  more  of the -i -x or -z options have been specified on the
		 command line, they refer to the list of included  and	excluded
		 deltas or to the CMR list from the NSE enhancements.

     q.file	 temporary  copy of the p.file; renamed to the p.file after com-
		 pletion

     s.file	 SCCS history file, see sccsfile(5).

     SCCS/s.file
		 history file in SCCS subdirectory

     x.file	 temporary copy of the s.file; renamed to the s.file after  com-
		 pletion.   Used  by  admin(1),  cdc(1), delta(1), rmdel(1), and
		 sccscvt(1).

     z.file	 temporary lock file contains the binary process id in host byte
		 order followed by the host name

     projecthome/.sccs/SCCS/s.changeset
		 The project specific changeset file is in the	directory  .sccs
		 in  the  project set home directory.  Only the s.changeset file
		 is present, a related g-file does not exist.

     dump.core	 If the file dump.core exists in the current directory and a fa-
		 tal signal is received, a coredump is initiated via abort(3).

     /usr/ccs/include/
		 If the environment SCCS_INCLUDEPATH  does  not  exist,  include
		 files	for  the  %sccs.include.filename%  keyword directive are
		 searched in this directory.

SEE ALSO
     sccs(1),	 sccs-admin(1),    sccs-cdc(1),    sccs-comb(1),    sccs-cvt(1),
     sccs-delta(1),   sccs-get(1),   sccs-help(1),   sccs-log(1),   sccs-prs(1),
     sccs-prt(1), sccs-rmdel(1), sccs-sact(1), sccs-sccsdiff(1),  sccs-unget(1),
     sccs-val(1), bdiff(1), diff(1), what(1), sccschangeset(5).

NOTES
     The  following  SCCS programs write or modify SCCS history files and create
     lock files for the SCCS history files:

     admin(1)	create and administer SCCS history files

     cdc(1)	change the delta commentary of an SCCS delta

     delta(1)	make a delta to an SCCS file

     rmdel(1)	remove a delta from an SCCS file

     sccscvt(1)
		convert history files between SCCS v4 and SCCS v6

     The following SCCS programs do not write or modify SCCS history  files  but
     create lock files for SCCS history files since they modify p.files:

     get(1)	when using the option -e to check out a file for editing

     unget(1)	undo a previous get of an SCCS file

BUGS
     SCCS v4  uses  local  time without a timezone offset. If a delta is created
     less than an hour after switching from DST to non-DST, it may  look  as  if
     the  clock is going backwards.  SCCS v6 fixes this problem by introducing a
     mandatory timezone offset.

     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.

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  ad-
     min(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 the schilytools
     project authors.

SunOS 5.11			   2022/10/06			     sccsfile(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sccsfile&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help