This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Original author(s) | Marc J. Rochkind |
---|---|
Initial release | 1972 |
Stable release | å
|
Written in | C |
Operating system | Unix-like |
Type | Version control |
License | proprietary licenses, Common Development and Distribution License |
Source Code Control System (SCCS) is a version control system designed to track changes in the source code and other text files during the development of a software. It has functionalities like storing, updating, and recording the changes made. This allows the user to retrieve any of the previous versions using the original source code and the changes which are stored. It was originally developed at Bell Labs in 1972 by Marc Rochkind for an IBM System/370 computer running OS/360 MVT.[1]
SCCS has the following features of version control. Like, all versions are in the same file and all are accessible at any point of time. Also, a programmer can access a version module only through SCCS. The system automatically gives version number, date, time, etc. Lastly, the system automatically tracks the changes that were made by whom, when, where and why.[1]
SCCS is also known for the sccsid
string[2], for example:
static char sccsid[] = "@(#)ls.c 8.1 (Berkeley) 6/11/93";
This string contains the file name, date, and can also contain a comment. After compilation, the string can be found in binary and object files by looking for the pattern "@(#)" and can be used to determine which source code files were used during compilation. The "what" command [1] is available to automate this search for version strings.
History
editIn 1972, Marc Rochkind developed SCCS in SNOBOL4 at Bell Labs for an IBM System/370 computer running OS/360 MVT.[1] It was later rewritten by him in C for UNIX, then running on a PDP-11.
The first publicly released version was SCCS version 4 from February 18, 1977.[3]. It was available with the Programmer's Workbench (PWB) edition of the operating system. Release 4 of SCCS was the first version that used a text-based history file format, earlier versions did use binary history file formats. Release 4 was no longer written or maintained by Mark Rochkind. Subsequently, SCCS was included in AT&T's commercial System III and System V distributions. It was not licensed with 32V, the ancestor to Berkeley Unix.[4] The SCCS command set is now part of the Single UNIX Specification.
SCCS was the dominant version control system for Unix until later version control systems, notably the Revision Control System (RCS) and later CVS, gained more widespread adoption. Today, these early version control systems are generally considered obsolete, particularly in the open source community, which has largely embraced distributed version control systems. However, the SCCS file format is still used internally by a few newer version control programs, including BitKeeper and TeamWare. The latter is a frontend to SCCS. Sablime has been developed from a modified version of SCCS[5] but uses a history file format that is incompatible with SCCS. The SCCS file format uses a storage technique called interleaved deltas (or the weave[6]). This storage technique is now considered by many version control system developers as foundational to advanced merging and versioning techniques,[7] such as the "Precise Codeville" ("pcdv") merge.
Apart from fixing some Year 2000 problems in 1999, there is no active development on the various UNIX vendor specific SCCS versions.[8] In 2006, Sun Microsystems (today part of Oracle Corporation) released their Solaris version of SCCS as open source under the Common Development and Distribution License as part of their efforts to open-source Solaris.[9]
Background
editThe Source Code Control System (SCCS) is a system for controlling file and history changes. Source upgrade is one of the most significant parts in modern software development. In general, software upgraded to be a new version by fixing bugs, optimizing algorithms and adding extra functions.[10] Obviously, many software has a lot of versions,such as Java.[11] However, additional problems occur associated with these changes.[1]
- Source code takes up too much space because it is repeated again and again in every version.
- Passing optimization from one version to other versions is very difficult.
- It is hard to acquire the information about when and where changes occurred.
- Finding the exact version which the client has problems with is not very easy.
Therefore, Source Code Control System, the most powerful weapon to solve these problems, appeared in developers' world. SCCS itself had a lot of changes during the past time.The SCCS has nine different major versions which are designed to help programmers control changes as a software.[12] Two specific successful implementations using SCCS : PDP 11 under Unix and IBM 370 under the OS.[1]
Composition
editSCCS consists of two parts: SCCS commands and SCCS files.[13] All basic operation(e.g., create, delete,edit) can be realized by SCCS commands.[13] SCCS files have a unique format prefix s., which could be easily controlled by SCCS commands.[14]
SCCS Files
editAn SCCS file is composed of three different parts:[15]
- Delta table
- Access and tracking flags
- Body of the Text
Delta Table
editIn SCCS, a delta refers to a change of SCCS file. Deltas are stored in a delta table, so each SCCS file has its own record of changes.[15]
Control and Tracking Flags in SCCS Files
editEvery operation of each SCCS file will be tracked by flags. Their functions are as below:[15]
- Setting permissions for editing of every SCCS file.
- Control each release of every SCCS file.
- Permitting collaborative editing of every SCCS file.
- Mutual-referencing changes of every SCCS file.
Body of the Texts
editThere are three types of control records used to keep track of insertions and deletions applied in different deltas. They are insertion control record, deletion control record and end control record. Whenevr a user changes some part of the text, a control record is inserted surrounding the change. These control records are stored in the body along with the original source code or text records.[1]
SCCS Basic Commands
editThere are lots of commands that can be used in SCCS. These commands helps users to finish what they want to achieve without understanding how they worked.[16] Also, the SCCS allows users to have access to history files. Moreover, it also provides some commands which allow them to edit, monitor and change the source files.[17]
Create
editThe sccs create command uses the text of source file to create a new history file. For example:
$ sccs create program.c program.c: 1.1 87 lines
The outputs are name, version and lines.
The create command is a macro that expands to admin to create the new history file followed by a get to retrieve the file.
Edit
edit$ sccs edit program.c 1.1 new delta 1.2 87 lines
Edit a specific file.
The edit command is a macro that expands to get -e.
Delget
edit$ sccs delget program.c comments? main function enhanced 1.2 10 inserted 0 deleted 87 unchanged 1.2 97 lines
Check in new version and get the new version from sccs.
The delget command is a macro that expands to delta to check in the new version file followed by a get to retrieve the file.
Get
editsccs get program.c 1.1 87 lines
The outputs are version and lines you want to get from specific file.
Prt
editsccs prt program.c
This command produces a report of changes you made.
Alternatives
editUNIX SCCS Versions
editMost UNIX versions include a version of SCCS, which, however, is often no longer actively developed.[18][better source needed]
Jörg Schilling's Fork
editJörg Schilling (who requested the release of SCCS in the early days of the OpenSolaris project)[19] maintains a fork of SCCS[20] that is based on the OpenSolaris source code. It has received major feature enhancements but remains compatible with the original SCCS versions unless using the "new project" mode.[21]
Heirloom Project
editThe Heirloom Project includes a version of SCCS derived from the OpenSolaris source code[22] and maintained between December 2006 and April 2007.[23]
GNU Conversion Utility
editGNU offers the SCCS compatible program GNU CSSC ("Compatibly Stupid Source Control"), which is occasionally used to convert SCCS archives to newer systems like CVS or Subversion;[24] it is not a complete[25] SCCS implementation and not recommended for use in new projects, but mostly meant for converting to a modern version control system.
Other Version Control Systems
editSince the 1990s, many new version control systems have been developed and become popular that are designed for managing projects with a large number of files and that offer advanced functionality such as multi-user operation, access control, automatic building, network support, release management and distributed version control. Bitkeeper and TeamWare use the SCCS file format internally and can be considered successors to SCCS.[26][27]
References
edit- ^ a b c d e f Rochkind, Marc J. (December 1975), "The Source Code Control System" (PDF), IEEE Transactions on Software Engineering, vol. SE-1, no. 4, pp. 364–370, doi:10.1109/tse.1975.6312866, S2CID 10006076
- ^ Oracle. "Chapter 5 SCCS Source Code Control System". Programming Utilities Guide.
- ^ http://sccs.sourceforge.net/PWB.html AT&T Announcement for SCCSv4
- ^ SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society.
- ^ Estublier, Jacky, David Leblang, André van der Hoek, Reidar Conradi, Geoffrey Clemm, Walter Tichy, and Darcy Wiborg-Weber. “Impact of software engineering research on the practice of software configuration management.” ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (October 2005): 383–430.
- ^ Hudson, Greg (2002-10-03), Notes on keeping version histories of files, Unpublished personal notes
- ^ Estublier, Jacky, David Leblang, André van der Hoek, Reidar Conradi, Geoffrey Clemm, Walter Tichy, and Darcy Wiborg-Weber. “Impact of software engineering research on the practice of software configuration management.” ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (October 2005): p.398.
- ^ What is SCCS, GNU operating System
- ^ Stephen Lau, Sun Microsystems (2006-12-19). "SCCS/make source available". Archived from the original on April 25, 2012. Retrieved 2011-11-14.
- ^ "Home Organization Selection". search.proquest.com.prox.lib.ncsu.edu. ProQuest 215925387. Retrieved 2016-09-12.
- ^ "Java Downloads for All Operating Systems". java.com. Retrieved 2016-09-11.
- ^ The evolution of a Source Code Control System. Alan L.Glasser, published in sigmetrics,Nov 1978
- ^ a b "SCCS". www-h.eng.cam.ac.uk. Retrieved 2016-09-12.
- ^ Oracle. "Chapter 5 SCCS Source Code Control System". Programming Utilities Guide.
- ^ a b c IBM. "General Programming Concepts: Writing and Debugging Programs". IBM Knowledge Center.
- ^ An Introduction to the Source Code Control System Eric Allman, Project Ingres, University of California at Berkeley
- ^ Source Code Control System Programming Utilities Guide
- ^ Koike, Hideki, and Hui-Chu Chu. "VRCS: Integrating version control and module management using interactive three-dimensional graphics." Visual Languages, 1997. Proceedings. 1997 IEEE Symposium on. IEEE, 1997.
- ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com". osdir.com. Retrieved 10 September 2016.
- ^ Jörg Schilling's SCCS development website
- ^ Schily SCCS web site: "Will the upcoming SCCSv6 stay compatible with POSIX and with historic SCCS implementations?"
- ^ Gunnar Ritter (20 June 2010). "The Heirloom Development Tools". Retrieved 4 November 2011.
- ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ see CVS history
- ^ SCCS2SVN conversion utility, which works with both SCCS and CSSC
- ^ GNU CSSC list of limitations in its documentation
- ^ "revtool | BitKeeper Documentation". www.bitkeeper.org.
- ^ "Introduction to Sun WorkShop TeamWare". docs.oracle.com. Retrieved 10 September 2016.
Further Reading
editEssay from Mark Rochkind on how SCCS was invented [2]
Category:1972 software Category:Version control systems Category:Free version control software Category:Unix archivers and compression-related utilities Category:Unix SUS2008 utilities Category:Self-hosting software Category:Software using the CDDL license