RCS vs SCCS The majority of the replies (in a recent poll) were in favor of RCS, a few for SCCS, and a few suggested alternatives such as CVS. Functionally RCS and SCCS are practically equal, with RCS having a bit more features since it continues to be updated. Note that RCS learned from the mistakes of SCCS... 1. Interface RCS has an easier interface for first time users. There are less commands, it is more intuitive and consistent, and it provides more useful arguments. Branches have to be specifically created in SCCS. In RCS, they are checked in as any other version. 2. What's in a Revision File? RCS keeps history in files with a ",v" suffix. SCCS keeps history in files with a "s." prefix. RCS looks for RCS files automatically in the current directory or in a RCS subdirectory, or you can specify an alternate RCS file. The sccs front end to SCCS always uses the SCCS directory. If you don't use the sccs front end, you must specify the full SCCS filename. RCS stores its revisions by holding a copy of the latest version and storing backward deltas. SCCS uses a "merged delta" concept. All RCS activity takes place within a single RCS file. SCCS maintains several files. This can be messy and confusing. Editing either RCS or SCCS files is a bad idea because mistakes are so easy to make and so fatal to the history of the file. Revision information is easy to edit in both types, whereas one would not want to edit the actual text of a version in RCS. If you edit an SCCS file, you will have to recalculate the checksum using the admin program. 3. Keywords RCS and SCCS use different keywords that are expanded in the text. For SCCS the keyword "%I%" is replaced with the revision number if the file is checked out for reading. The RCS keywords are easier to remember, but keyword expansion is more easily customized in SCCS. In SCCS, keywords are expanded on a read-only get. If a version with expanded keywords is copied into a file that will be deltaed, the keywords will be lost and the version information in the file will not be updated. On the other hand, RCS retains the keywords when they are expanded so this is avoided. 4. Symbolic Names RCS allows you treat a set of files as a family of files while SCCS is meant primarily for keeping the revision history of files. RCS accomplishes that with symbolic names: you can mark all the source files associated with an application version with `rcs -n', and then easily retrieve them later as a cohesive unit. In SCCS you would have to do this by writing a script to write or read all file names and versions to or from a file. 5. Performance Since RCS stores the latest version in full, it is much faster in retrieving the latest version. After RCS version 5.6, it is also faster than SCCS in retrieving older versions. 6. Version Identification SCCS is able to determine when a specific line of code was added to a system. 7. Problems If you are missing the sccs or rcs tools, or the RCS or SCCS file is corrupt and the tools don't work on it, you can still retrieve the latest version in RCS. Not true with SCCS. 8. Conversion RCS provides a program to convert from SCCS to RCS. One would have to write his own program to convert from RCS to SCCS. 9. Support SCCS is supported by AT&T. RCS is supported by the Free Software Foundation. Therefore RCS runs on many more platforms, including PCs. Most make programs recognize SCCS's "s." prefix while GNU make is one of the few that handles RCS's ",v" suffix. Some tar programs have a -F option that ignores either RCS directories, or SCCS directories or both. 10. Command Comparison SCCS RCS Explanation sccs admin -i -nfile file ci file Checks in the file for the first time, creating the revision history file. sccs get file co file Check out a file for reading. sccs edit file co -l file Check out a file for modification. sccs delta file ci file Check in a file previously locked. what file ident file Print keyword information. sccs prs file rlog file Print a history of the file. sccs sccsdiff -rx -ry file rcsdiff -rx -ry file Compare two revisions. sccs diffs file rcsdiff file Compare current with last revision. sccs edit -ix-y file rcsmerge -rx-y file Merge changes between two versions into file. ??? rcs -l file Lock the latest revision. ??? rcs -u file Unlock the latest revision. Possible to break another's lock, but mail is sent to the other person explaining why.