Sistem de control al codului sursă - Source Code Control System

Sistem de control al codului sursă (SCCS)
Autori originali Marc J. Rochkind
Dezvoltatori Laboratoarele Bell
Eliberarea inițială 1973 ; Acum 48 de ani ( 1973 )
Repertoriu Site oficial
Scris in Prima versiune: SNOBOL4
Rescrie: C
Sistem de operare OS / 360 , Unix , de tip Unix
Platformă IBM System / 370 , PDP-11 , IA-32
Tip Controlul versiunii
Licență licențe proprietare, licență comună de dezvoltare și distribuție
Site-ul web Specificațiile de bază ale grupului deschis numărul 7, IEEE Std 1003.1-2008, ediția 2016

Sistemul de control al codului sursă ( SCCS ) este un sistem de control al versiunilor conceput pentru a urmări modificările din codul sursă și alte fișiere text în timpul dezvoltării unui software. Aceasta permite utilizatorului să recupereze oricare dintre versiunile anterioare ale codului sursă original și modificările stocate. A fost inițial dezvoltat la Bell Labs începând cu sfârșitul anului 1972 de Marc Rochkind pentru un computer IBM System / 370 care rulează OS / 360 .

O caracteristică caracteristică a SCCS este șirul sccsid care este încorporat în codul sursă și actualizat automat de SCCS pentru fiecare revizuire. Acest exemplu ilustrează utilizarea sa în limbajul de programare C :

 static char sccsid[] = "@(#)ls.c        8.1 (Berkeley) 6/11/93";

Acest șir conține numele fișierului, data și poate conține și un comentariu. După compilare, șirul poate fi găsit în fișiere binare și obiecte, căutând modelul „@ (#)” și poate fi utilizat pentru a determina ce fișiere de cod sursă au fost utilizate în timpul compilării. Comanda „ce” [1] este disponibilă pentru a automatiza această căutare a șirurilor de versiuni.

Istorie

În 1972, Marc Rochkind a dezvoltat SCCS în SNOBOL4 la Bell Labs pentru un computer IBM System / 370 care rulează OS / 360 MVT . A rescris SCCS în limbajul de programare C pentru utilizare sub UNIX , apoi rulând pe un PDP-11 , în 1973.

Prima versiune publicată a fost versiunea SCCS 4 din 18 februarie 1977. A fost disponibilă împreună cu ediția Programmer's Workbench (PWB) a sistemului de operare . Versiunea 4 a SCCS a fost prima versiune care a folosit un format de fișier istoric bazat pe text, versiunile anterioare au folosit formate de fișiere istorice binare. Versiunea 4 nu a mai fost scrisă sau menținută de Marc Rochkind. Ulterior, SCCS a fost inclus în distribuțiile comerciale System III și System V ale AT&T . Nu a fost licențiat cu 32V , strămoșul BSD . Setul de comenzi SCCS face acum parte din Specificația unică UNIX .

SCCS a fost sistemul dominant de control al versiunii pentru Unix până când sistemele de control de versiune ulterioare , în special RCS și CVS ulterior , au obținut adoptarea mai răspândită. Astăzi, aceste sisteme timpurii de control al versiunilor sunt în general considerate învechite, în special în comunitatea open-source , care a îmbrățișat în mare măsură sistemele distribuite de control al versiunilor . Cu toate acestea, formatul de fișier SCCS este încă utilizat intern de câteva programe de control de versiune mai noi, inclusiv BitKeeper și TeamWare . Acesta din urmă este un frontend pentru SCCS. Sablime a fost dezvoltat dintr-o versiune modificată a SCCS, dar folosește un format de fișier istoric care este incompatibil cu SCCS. Formatul de fișier SCCS utilizează o tehnică de stocare numită delta intercalată (sau țesătura). Această tehnică de stocare este considerată acum de mulți dezvoltatori de sisteme de control al versiunilor drept tehnici fundamentale până la tehnici avansate de fuzionare și versiune, cum ar fi fuziunea „Precise Codeville ” („pcdv”).

În afară de corectarea problemelor din anul 2000 în 1999, nu a avut loc nicio dezvoltare activă pentru diferitele versiuni SCCS specifice furnizorilor UNIX. În 2006, Sun Microsystems (astăzi parte a Oracle ) a lansat versiunea Solaris a SCCS ca open-source sub licență CDDL ca parte a eforturilor lor de a deschide Solaris.

fundal

Sistemul de control al codului sursă (SCCS) este un sistem pentru controlul modificărilor de fișiere și istoric. Software-ul este de obicei actualizat la o nouă versiune prin remedierea erorilor, optimizarea algoritmilor și adăugarea de funcții suplimentare. Schimbarea software-ului cauzează probleme care necesită controlul versiunilor pentru rezolvare.

  • Codul sursă ocupă prea mult spațiu, deoarece este repetat în fiecare versiune.
  • Este greu să obțineți informații despre când și unde s-au produs modificări.
  • Găsirea versiunii exacte cu care are probleme clientul este dificilă.

SCCS a fost construit pentru a rezolva aceste probleme. SCCS de la AT&T avea cinci versiuni majore pentru IBM OS și cinci versiuni majore pentru UNIX Două implementări specifice care utilizează SCCS sunt: ​​PDP 11 sub Unix și IBM 370 sub OS.

Compoziţie

SCCS constă din două părți: comenzi SCCS și fișiere SCCS. Toate operațiile de bază (de exemplu, creați, ștergeți, editați) pot fi realizate prin comenzi SCCS. Fișierele SCCS au un prefix de format unic s., care este controlat de comenzile SCCS.

Fișiere SCCS

Un fișier SCCS este format din trei părți:

  • Masa Delta
  • Steaguri de acces și urmărire
  • Corpul textului

Masa Delta

În SCCS, un delta este o singură revizuire într-un fișier SCCS. Deltele sunt stocate într-un tabel delta, astfel încât fiecare fișier SCCS are propria sa înregistrare a modificărilor.

Control și urmărire steaguri în fișiere SCCS

Fiecare operație a fiecărui fișier SCCS este urmărită de semnalizatoare. Funcțiile lor sunt următoarele:

  • Setarea permisiunilor pentru editarea fiecărui fișier SCCS.
  • Controlați fiecare versiune a fiecărui fișier SCCS.
  • Permiterea editării în colaborare a fiecărui fișier SCCS.
  • Modificări de referință reciprocă ale fiecărui fișier SCCS.

Corp

SCCS utilizează trei tipuri de înregistrări de control pentru a urmări inserțiile și ștergerile aplicate în diferite delte. Acestea sunt înregistrarea de control a inserției, înregistrarea de control a ștergerii și înregistrarea de control final. Ori de câte ori un utilizator modifică o parte a textului, se introduce o înregistrare de control în jurul modificării. Înregistrările de control sunt stocate în corp împreună cu înregistrările text originale.

Comenzi de bază SCCS

SCCS oferă un set de comenzi sub formă de invocații macro care efectuează sau inițiază funcții de gestionare a codului sursă cu o sintaxă simplă, cum ar fi create, get, edit, prt. De asemenea, oferă acces la istoricul reviziilor fișierelor aflate în administrare. Aceste comenzi sunt implementate ca verbe argument la SCC-urile programului driver .

Crea

Comanda sccs create utilizează textul unui fișier sursă pentru a crea un nou fișier istoric. De exemplu:

$ sccs create program.c
program.c:
1.1
87 lines

Ieșirile sunt numele, versiunea și liniile.

Comanda este o macrocomandă care se extinde la admin pentru a crea noul fișier istoric urmat de get pentru a prelua fișierul.

Editați | ×

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

Editați un anumit fișier.

Comanda este o macro care se extinde la obținerea -e .

Delgetează

$ sccs delget program.c
comments? main function enhanced
1.2
10 inserted
0 deleted
87 unchanged
1.2
97 lines

Verificați versiunea nouă și obțineți versiunea nouă de la SCCS.

Comanda este o macrocomandă care se extinde până la delta pentru a verifica fișierul noua versiune urmat de get pentru a prelua fișierul.

obține

$ sccs get program.c
1.1
87 lines

Ieșirile sunt versiunea și liniile pe care doriți să le obțineți dintr-un anumit fișier.

Prt

$ sccs prt program.c

Această comandă produce un raport al modificărilor codului sursă.

Implementări

Versiuni SCIX SC UNS

Majoritatea versiunilor UNIX includ o versiune a SCCS, care, însă, deseori nu mai este dezvoltată activ.

Furculița lui Jörg Schilling

Jörg Schilling (care a solicitat eliberarea SCCS în primele zile ale proiectului OpenSolaris ) a menținut un fork al SCCS care se bazează pe codul sursă OpenSolaris. A primit îmbunătățiri majore ale caracteristicilor, dar rămâne compatibil cu versiunile originale SCCS, cu excepția cazului în care se utilizează modul „proiect nou”.

Heirloom Project

Proiectul Heirloom include o versiune a CSSC derivat din OpenSolaris codul sursă și menținut între decembrie 2006 și aprilie 2007.

Utilitar de conversie GNU

GNU oferă programul compatibil SCCS GNU CSSC ("Controlul sursei compatibile stupide"), care este folosit ocazional pentru a converti arhivele SCCS în sisteme mai noi precum CVS sau Subversion ; nu este o implementare completă SCCS și nu este recomandată pentru utilizare în proiecte noi, dar este destinată în principal convertirii într-un sistem modern de control al versiunilor.

Alte sisteme de control al versiunilor

Începând cu anii 1990, au fost dezvoltate și au devenit populare multe sisteme noi de control al versiunilor, care sunt concepute pentru gestionarea proiectelor cu un număr mare de fișiere și care oferă funcționalități avansate, cum ar fi funcționarea multi-utilizator, controlul accesului, construirea automată, suportul rețelei, gestionarea lansărilor și controlul versiunii distribuite . Bitkeeper și TeamWare utilizează formatul de fișier SCCS intern și pot fi considerați succesori ai SCCS.

Pe sistemele BSD, SCCSID este înlocuit cu un RCSID care începe și se termină cu $ ; instrumentul corespunzător este ident . Acest sistem este utilizat inițial de RCS și adăugat automat la finalizarea comenzii, dar de atunci a devenit o parte integrantă a ghidului de stil din baza de coduri FreeBSD , care definește un cuvânt cheie personalizat $ FreeBSD: ... $ și o macro redenumită __FBSDID .

Sistemul de control al versiunii SRC poate utiliza, de asemenea, formatul de fișier SCCS intern (sau RCS ) și își propune să ofere o interfață de utilizator mai bună pentru SCCS, gestionând în același timp doar proiecte cu un singur fișier.

Referințe

Lecturi suplimentare