This appendix explains why SCCS Mergeable IDs (SMIDs) are necessary, how to translate SCCS delta IDS (SIDs) to SMIDs, and how to translate SMIDs to SIDs. It contains the following sections:
The use of SCCS Mergeable IDs (SMIDs) ensures that every delta is uniquely identifiable, even if its SCCS delta ID (SID) is changed. A SMID is a number generated using the Xerox Secure Hash Function. When you use Freezepointing to create a freezepoint file, it calculates the SMID for both the current delta and the root delta in the SCCS history file. Using both of these values, Freezepointing can identify a delta in a file even if its SID has been changed.
This section briefly discusses how Configuring merges SCCS history files. For more information, see Chapter 10, How Configuring Merges SCCS Files."
When Configuring encounters a file conflict during a Bringover Update transaction (file is changed in both the parent and child workspaces), it merges the new deltas from the parent workspace into the SCCS history file in the child. When this merge occurs, the deltas that were created in the child are moved to an SCCS branch off of the delta that both deltas have in common (common ancestor).
When Configuring relocates the child deltas to a branch, it changes their SID. If SIDS were used in freezepoint files to identify deltas, this relocation would invalidate the information contained in the freezepoint file. For that reason, SIDs cannot be used to identify deltas after conflicting SCCS histories have been merged.
SMID/SID translation is available only through the Freezepointing CLI.
The freezept command sid and smid subcommands enable you to translate specified SIDs into SMIDs, and to translate specified SMIDs into SIDs. The ability to make these translations is useful if you wish to write your own scripts or programs to track deltas.
Use the freezept smid command to translate SIDs to SMIDs. The syntax is:
freezept smid [-w workspace] [-r SID] [-a] file
Use the -r option to specify the SID (in file file) for which you wish to calculate a SMID.
Use the -a option to calculate a SMID for all of the SIDS in file.
For convenience you can use the -s option to specify a directory from which file is relative.
example% freezept smid -r 1.38 module.c SID 1.38 = SMID "f5b67794 705f0768 a89b1f4 588de104" |
example% freezept smid -a bringover.1 SID 1.1 = SMID "b05b0a2f 1db5246e 1a466014 707e38f5" SID 1.2 = SMID "d6a5c61f 5634f0ef 9847a080 d0d7b212" SID 1.2 = SMID "e31acdd5 6c1232e2 9e81c287 1edb2f41" SID 1.3 = SMID "c34c91b4 a818622a 2457356a 489b2728" SID 1.4 = SMID "98c0fd8d 889563fb cf722c2b 6afc9636" SID 1.5 = SMID "b1e24be3 752fec3e df2d2717 a9b3f1fa" SID 1.6 = SMID "2b93d39 1ea2f6ba 9814320c bc609acb" SID 1.7 = SMID "1db7d640 42b0f009 35c60d7b b230bd85" SID 1.8 = SMID "906dfe9a ca7e2d6c a64da5be 4baef254" |
Use the freezept sid command to translate SMIDs to SIDs. The syntax is:
freezept sid [-w workspace] [-m "SMID"] [-a] file
Use the -m option to specify the SMID (in file file) for which you wish to calculate a SID.
Use the -a option to calculate a SID for all of the deltas in file.
For convenience you can use the -s option to specify a directory from which file is relative.
Because the SMID contains white space, you must enclose it within quotation marks.
example% freezept sid -m "64fdd0df de9d7dd de75812 23da96aa" module.c SMID "64fdd0df de9d7dd de75812 23da96aa" = SID 1.36 |
example% freezept sid -a bringover.1 SMID "b05b0a2f 1db5246e 1a466014 707e38f5" = SID 1.1 SMID "d6a5c61f 5634f0ef 9847a080 d0d7b212" = SID 1.2 SMID "e31acdd5 6c1232e2 9e81c287 1edb2f41" = SID 1.2 SMID "c34c91b4 a818622a 2457356a 489b2728" = SID 1.3 SMID "98c0fd8d 889563fb cf722c2b 6afc9636" = SID 1.4 SMID "b1e24be3 752fec3e df2d2717 a9b3f1fa" = SID 1.5 SMID "2b93d39 1ea2f6ba 9814320c bc609acb" = SID 1.6 SMID "1db7d640 42b0f009 35c60d7b b230bd85" = SID 1.7 SMID "906dfe9a ca7e2d6c a64da5be 4baef254" = SID 1.8 SMID "77481e8a 61542339 cc28f532 e5fc6389" = SID 1.9 SMID "cb97c9a6 d0342cf6 19b7b743 2436ca1c" = SID 1.10 SMID "46de4131 b95b9973 93958a07 b960074c" = SID 1.11 |