Tracking versions with SCCS

Concurrent edits of different SID

The ability to retrieve different versions of an SCCS file allows several deltas to be in progress at any given time. This means that several get -e commands may be executed on the same file as long as no two executions retrieve the same version (unless multiple concurrent edits are allowed).

The p.file created by get -e is created in the same directory as the SCCS file, given mode 644 (readable by everyone, writable only by the owner), and owned by the effective user. It contains the following information for each delta that is still in progress:

The first execution of get -e causes the creation of p.file for the corresponding SCCS file. Subsequent executions only update p.file with a line containing the above information. Before updating, however, get checks to assure that no entry already in p.file specifies that the SID of the version to be retrieved is already retrieved (unless multiple concurrent edits are allowed). If the check succeeds, the user is informed that other deltas are in progress and processing continues. If the check fails, an error message results.

It should be noted that concurrent executions of get must be carried out from different directories. Subsequent executions from the same directory will attempt to overwrite the g-file, which is an SCCS error condition. In practice, this problem does not arise because each user normally has a different working directory. See ``Protection'' for a discussion of how different users are permitted to use SCCS commands on the same files.

``Determination of new SID'' shows the possible SID components a user can specify with get (left-most column), the version that will then be retrieved by get, and the resulting SID for the delta, which delta will create (right-most column). In the table

Determination of new SID

SID specified
in get
-b keyletter
SID retrieved
by get
SID of delta to be
created by delta
none no R defaults to mR mR.mL mR.(mL+1)
none yes R defaults to mR mR.mL mR.mL.(mB+1).1
R no R > mR mR.mL R.1
R no R = mR mR.mL mR.(mL+1)
R yes R > mR mR.mL mR.mL.(mB+1).1
R yes R = mR mR.mL mR.mL.(mB+1).1
R - R< mR and R does not exist hR.mL hR.mL.(mB+1).1
R - Trunk successor number in release > R and R exists R.mL R.mL.(mB+1).1
R.L no No trunk successor R.L R.(L+1)
R.L yes No trunk successor R.L R.L.(mB+1).1
R.L - Trunk successor in release GREATER THAN OR EQUAL TO R R.L R.L.(mB+1).1
R.L.B no No branch successor R.L.B.mS R.L.B.(mS+1)
R.L.B yes No branch successor R.L.B.mS R.L.(mB+1).1
R.L.B.S no No branch successor R.L.B.S R.L.B.(S+1)
R.L.B.S yes No branch successor R.L.B.S R.L.(mB+1).1
R.L.B.S - Branch successor R.L.B.S R.L.(mB+1).1

Next topic: Concurrent edits of same SID
Previous topic: Additional get options

© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 27 April 2004