fbpx
Wikipedia

Source Code Control System

Source Code Control System (SCCS) is a version control system designed to track changes in source code and other text files during the development of a piece of software. This allows the user to retrieve any of the previous versions of the original source code and the changes which are stored. It was originally developed at Bell Labs beginning in late 1972 by Marc Rochkind for an IBM System/370 computer running OS/360.[1]

Source Code Control System (SCCS)
Original author(s)Marc J. Rochkind
Developer(s)Bell Labs
Initial release1973; 51 years ago (1973)[discuss]
RepositoryN/A
Written inFirst version: SNOBOL4
Rewrite: C
Operating systemOS/360, Unix, Unix-like
PlatformIBM System/370, PDP-11, IA-32
TypeVersion control
Licenseproprietary licenses, Common Development and Distribution License
WebsiteThe Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008, 2016 Edition

A characteristic feature of SCCS is the sccsid string that is embedded into source code, and automatically updated by SCCS for each revision.[2] This example illustrates its use in the C programming language:

 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 is available to automate this search for version strings.[3]

History edit

In 1972, Marc Rochkind developed SCCS in SNOBOL4 at Bell Labs for an IBM System/370 computer running OS/360 MVT.[1] He rewrote SCCS in the C programming language for use under UNIX, then running on a PDP-11, in 1973.

The first publicly released version was SCCS version 4 from February 18, 1977.[4] 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 Marc 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 BSD.[5] 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 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 2016-07-22 at the Wayback Machine has been developed from a modified version of SCCS[6] 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[7]). This storage technique is now considered by many version control system developers as foundational to advanced merging and versioning techniques,[8] such as the "Precise Codeville" ("pcdv") merge.

Apart from correcting Year 2000 problems in 1999, no active development has taken place on the various UNIX vendor-specific SCCS versions.[9] In 2006, Sun Microsystems (today part of Oracle) released their Solaris version of SCCS as open-source under the CDDL license as part of their efforts to open-source Solaris.[10]

Background edit

The Source Code Control System (SCCS) is a system for controlling file and history changes. Software is typically upgraded to a new version by fixing bugs, optimizing algorithms and adding extra functions.[11] Changing software causes problems that require version control to solve.[1]

  • Source code takes up too much space because it is repeated in every version.
  • It is hard to acquire information about when and where changes occurred.
  • Finding the exact version which the client has problems with is difficult.

SCCS was built to solve these problems. SCCS from AT&T had five major versions for the IBM OS and five major versions for UNIX[12] Two specific implementations using SCCS are: PDP 11 under Unix and IBM 370 under the OS.[1]

Composition edit

SCCS consists of two parts: SCCS commands and SCCS files.[13] All basic operations (e.g., create, delete, edit) can be realized by SCCS commands.[13] SCCS files have a unique format prefix s., which is controlled by SCCS commands.[2]

SCCS files edit

An SCCS file consists of three parts:[14]

  • Delta table
  • Access and tracking flags
  • Body of the text

Delta table edit

In SCCS, a delta is a single revision in an SCCS file. Deltas are stored in a delta table, so each SCCS file has its own record of changes.[14]

Control and tracking flags in SCCS files edit

Every operation of each SCCS file is tracked by flags. Their functions are as below:[14]

  • 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 edit

SCCS uses three types of control records for keeping track of insertions and deletions applied in different deltas. They are the insertion control record, the deletion control record, and the end control record. Whenever a user changes some part of the text, a control record is inserted surrounding the change. The control records are stored in the body along with the original text records.[1]

SCCS basic commands edit

SCCS provides a set of commands in the form of macro invocations that perform or initiate source code management functions with a simple syntax, such as create, get, edit, prt.[15][16] It also provides access to the revision history of files under management. These commands are implemented as argument verbs to the driver program sccs.

Create edit

The sccs command create uses the text of a 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 command is a macro that expands to admin to create the new history file followed by get to retrieve the file.

Edit edit

$ sccs edit program.c 1.1 new delta 1.2 87 lines 

Edit a specific file.

The 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 command is a macro that expands to delta to check in the new version file followed by get to retrieve the file.

Get edit

$ sccs get program.c 1.1 87 lines 

The outputs are version and lines you want to get from specific file.

Prt edit

$ sccs prt program.c 

This command produces a report of source code changes.

Implementations edit

UNIX SCCS versions edit

Most UNIX versions include a version of SCCS, which, however, is often no longer actively developed.[17][better source needed]

Jörg Schilling's fork edit

The late Jörg Schilling [de] (who requested the release of SCCS in the early days of the OpenSolaris project)[18] maintained a fork of SCCS[19][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 edit

The 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 edit

GNU 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 edit

Since 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]

On BSD systems, the SCCSID is replaced by a RCSID starting and ending with $; the corresponding tool is ident.[28] This system is originally used by RCS and added automatically on checkout. The resulting source code revision control identifiers are documented in the NetBSD[29] and FreeBSD[30] style guides for their own code bases. NetBSD defines the custom keyword $NetBSD: ...$ while FreeBSD defines $FreeBSD: ...$ and a macro renamed __FBSDID.

The SRC version control system can also use the SCCS file format internally (or RCS's) and aims to provide a better user interface for SCCS while still managing only single-file projects.[31]

References edit

  1. ^ a b c d e Rochkind, Marc J. (December 1975), (PDF), IEEE Transactions on Software Engineering, vol. SE-1, no. 4, pp. 364–370, doi:10.1109/tse.1975.6312866, S2CID 10006076, archived from the original (PDF) on 2011-05-25, retrieved 2005-07-08
  2. ^ a b Oracle. "Chapter 5 SCCS Source Code Control System". Programming Utilities Guide.
  3. ^ "what". IEEE and The Open Group. n.d. Retrieved November 28, 2022.
  4. ^ http://sccs.sourceforge.net/PWB.html AT&T Announcement for SCCSv4
  5. ^ SCCS what(1) manpage from 4BSD, 1980, on the website of The Unix Heritage Society 2005-08-31 at the Wayback Machine.
  6. ^ 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.
  7. ^ Hudson, Greg (2002-10-03), Notes on keeping version histories of files, Unpublished personal notes
  8. ^ 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.
  9. ^ What is SCCS, GNU operating System
  10. ^ Stephen Lau, Sun Microsystems (2006-12-19). . Archived from the original on April 25, 2012. Retrieved 2011-11-14.
  11. ^ Home Organization Selection ProQuest 215925387
  12. ^ The evolution of a Source Code Control System. Alan L.Glasser, published in sigmetrics, Nov 1978 when SCCS on UNIX was a version 4
  13. ^ a b "SCCS". www-h.eng.cam.ac.uk. Retrieved 2016-09-12.
  14. ^ a b c IBM (7 June 2018). "General Programming Concepts: Writing and Debugging Programs". IBM Knowledge Center.
  15. ^ An Introduction to the Source Code Control System Eric Allman, Project Ingres, University of California at Berkeley
  16. ^ Source Code Control System Programming Utilities Guide
  17. ^ 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.
  18. ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Recent Discussion OSDir.com". osdir.com. Retrieved 10 September 2016.
  19. ^ Jörg Schilling's SCCS development website
  20. ^ "A collection of tools written or formerly managed by Jörg Schilling". Codeberg. 22 October 2022. Retrieved 28 November 2022. development has been picked up by a group of volunteers who would like to keep the project alive and well
  21. ^ Schily SCCS web site: "Will the upcoming SCCSv6 stay compatible with POSIX and with historic SCCS implementations?"
  22. ^ Gunnar Ritter (20 June 2010). "The Heirloom Development Tools". Retrieved 4 November 2011.
  23. ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ see CVS history
  24. ^ SCCS2SVN conversion utility 2009-12-22 at the Wayback Machine, which works with both SCCS and CSSC
  25. ^ GNU CSSC list of limitations in its documentation
  26. ^ "revtool". BitKeeper Documentation.
  27. ^ "Introduction to Sun WorkShop TeamWare". docs.oracle.com. Retrieved 10 September 2016.
  28. ^ ident(1) – NetBSD General Commands Manual
  29. ^ "src/share/misc/style revision 1.64". NetBSD CVS repository.
  30. ^ style(9) – FreeBSD Kernel Developer's Manual
  31. ^ "Resource page for src 1.29". January 21, 2022. Retrieved November 28, 2022.

Further reading edit

External links edit

  • Schily's SCCS on Codeberg

source, code, control, system, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, news, newspapers, books, scholar, jst. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Source Code Control System news newspapers books scholar JSTOR March 2010 Learn how and when to remove this message Source Code Control System SCCS is a version control system designed to track changes in source code and other text files during the development of a piece of software This allows the user to retrieve any of the previous versions of the original source code and the changes which are stored It was originally developed at Bell Labs beginning in late 1972 by Marc Rochkind for an IBM System 370 computer running OS 360 1 Source Code Control System SCCS Original author s Marc J RochkindDeveloper s Bell LabsInitial release1973 51 years ago 1973 discuss RepositoryN AWritten inFirst version SNOBOL4Rewrite COperating systemOS 360 Unix Unix likePlatformIBM System 370 PDP 11 IA 32TypeVersion controlLicenseproprietary licenses Common Development and Distribution LicenseWebsiteThe Open Group Base Specifications Issue 7 IEEE Std 1003 1 2008 2016 Edition A characteristic feature of SCCS is the sccsid string that is embedded into source code and automatically updated by SCCS for each revision 2 This example illustrates its use in the C programming language 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 is available to automate this search for version strings 3 Contents 1 History 2 Background 3 Composition 4 SCCS files 4 1 Delta table 4 2 Control and tracking flags in SCCS files 4 3 Body 5 SCCS basic commands 5 1 Create 5 2 Edit 5 3 Delget 5 4 Get 5 5 Prt 6 Implementations 6 1 UNIX SCCS versions 6 2 Jorg Schilling s fork 6 3 Heirloom Project 6 4 GNU conversion utility 6 5 Other version control systems 7 References 8 Further reading 9 External linksHistory editIn 1972 Marc Rochkind developed SCCS in SNOBOL4 at Bell Labs for an IBM System 370 computer running OS 360 MVT 1 He rewrote SCCS in the C programming language for use under UNIX then running on a PDP 11 in 1973 The first publicly released version was SCCS version 4 from February 18 1977 4 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 Marc Rochkind Subsequently SCCS was included in AT amp T s commercial System III and System V distributions It was not licensed with 32V the ancestor to BSD 5 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 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 Archived 2016 07 22 at the Wayback Machine has been developed from a modified version of SCCS 6 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 7 This storage technique is now considered by many version control system developers as foundational to advanced merging and versioning techniques 8 such as the Precise Codeville pcdv merge Apart from correcting Year 2000 problems in 1999 no active development has taken place on the various UNIX vendor specific SCCS versions 9 In 2006 Sun Microsystems today part of Oracle released their Solaris version of SCCS as open source under the CDDL license as part of their efforts to open source Solaris 10 Background editThe Source Code Control System SCCS is a system for controlling file and history changes Software is typically upgraded to a new version by fixing bugs optimizing algorithms and adding extra functions 11 Changing software causes problems that require version control to solve 1 Source code takes up too much space because it is repeated in every version It is hard to acquire information about when and where changes occurred Finding the exact version which the client has problems with is difficult SCCS was built to solve these problems SCCS from AT amp T had five major versions for the IBM OS and five major versions for UNIX 12 Two specific implementations using SCCS are 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 operations e g create delete edit can be realized by SCCS commands 13 SCCS files have a unique format prefix s which is controlled by SCCS commands 2 SCCS files editAn SCCS file consists of three parts 14 Delta table Access and tracking flags Body of the text Delta table edit In SCCS a delta is a single revision in an SCCS file Deltas are stored in a delta table so each SCCS file has its own record of changes 14 Control and tracking flags in SCCS files edit Every operation of each SCCS file is tracked by flags Their functions are as below 14 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 edit SCCS uses three types of control records for keeping track of insertions and deletions applied in different deltas They are the insertion control record the deletion control record and the end control record Whenever a user changes some part of the text a control record is inserted surrounding the change The control records are stored in the body along with the original text records 1 SCCS basic commands editSCCS provides a set of commands in the form of macro invocations that perform or initiate source code management functions with a simple syntax such as create get edit prt 15 16 It also provides access to the revision history of files under management These commands are implemented as argument verbs to the driver program sccs Create edit The sccs command create uses the text of a 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 command is a macro that expands to admin to create the new history file followed by get to retrieve the file Edit edit sccs edit program c 1 1 new delta 1 2 87 lines Edit a specific file The 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 command is a macro that expands to delta to check in the new version file followed by get to retrieve the file Get edit sccs get program c 1 1 87 lines The outputs are version and lines you want to get from specific file Prt edit sccs prt program c This command produces a report of source code changes Implementations editUNIX SCCS versions edit Most UNIX versions include a version of SCCS which however is often no longer actively developed 17 better source needed Jorg Schilling s fork edit The late Jorg Schilling de who requested the release of SCCS in the early days of the OpenSolaris project 18 maintained a fork of SCCS 19 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 edit The 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 edit GNU 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 edit Since 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 On BSD systems the SCCSID is replaced by a RCSID starting and ending with the corresponding tool is ident 28 This system is originally used by RCS and added automatically on checkout The resulting source code revision control identifiers are documented in the NetBSD 29 and FreeBSD 30 style guides for their own code bases NetBSD defines the custom keyword NetBSD while FreeBSD defines FreeBSD and a macro renamed FBSDID The SRC version control system can also use the SCCS file format internally or RCS s and aims to provide a better user interface for SCCS while still managing only single file projects 31 References edit a b c d e 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 archived from the original PDF on 2011 05 25 retrieved 2005 07 08 a b Oracle Chapter 5 SCCS Source Code Control System Programming Utilities Guide what IEEE and The Open Group n d Retrieved November 28 2022 http sccs sourceforge net PWB html AT amp T Announcement for SCCSv4 SCCS what 1 manpage from 4BSD 1980 on the website of The Unix Heritage Society Archived 2005 08 31 at the Wayback Machine Estublier Jacky David Leblang Andre 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 Andre 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 ProQuest 215925387 The evolution of a Source Code Control System Alan L Glasser published in sigmetrics Nov 1978 when SCCS on UNIX was a version 4 a b SCCS www h eng cam ac uk Retrieved 2016 09 12 a b c IBM 7 June 2018 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 Jorg Schilling s SCCS development website A collection of tools written or formerly managed by Jorg Schilling Codeberg 22 October 2022 Retrieved 28 November 2022 development has been picked up by a group of volunteers who would like to keep the project alive and well 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 Archived 2009 12 22 at the Wayback Machine which works with both SCCS and CSSC GNU CSSC list of limitations in its documentation revtool BitKeeper Documentation Introduction to Sun WorkShop TeamWare docs oracle com Retrieved 10 September 2016 ident 1 NetBSD General Commands Manual src share misc style revision 1 64 NetBSD CVS repository style 9 FreeBSD Kernel Developer s Manual Resource page for src 1 29 January 21 2022 Retrieved November 28 2022 Further reading editEssay from Marc Rochkind on how SCCS was invented sccs Shell and Utilities Reference The Single UNIX Specification Version 4 from The Open Group sccs 1 FreeBSD General Commands Manual sccs 1 Solaris 11 4 User Commands Reference Manual sccs 1 AIX 7 3 manual page HP UX 11i User Commands Manual IRIX 6 5 User Commands ManualExternal links editSchily s SCCS on Codeberg Retrieved from https en wikipedia org w index php title Source Code Control System amp oldid 1219493560, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.