Le système de contrôle du code source ( SCCS ) est un système de contrôle de version conçu pour suivre les modifications apportées au code source et à d'autres fichiers texte au cours du développement d'un logiciel. Cela permet à l'utilisateur de récupérer l'une des versions précédentes du code source d'origine et les modifications qui y sont stockées. Il a été développé à l'origine aux Bell Labs à partir de la fin de 1972 par Marc Rochkind pour un ordinateur IBM System/370 exécutant OS/360 .
Une caractéristique de SCCS est la chaîne sccsid qui est intégrée au code source et automatiquement mise à jour par SCCS à chaque révision. Cet exemple illustre son utilisation dans le langage de programmation C :
char statique sccsid [] = "@(#)ls.c 8.1 (Berkeley) 11/06/93" ;
Cette chaîne contient le nom du fichier, la date et peut également contenir un commentaire. Après la compilation, la chaîne peut être trouvée dans les fichiers binaires et objets en recherchant le modèle @(#)et peut être utilisée pour déterminer quels fichiers de code source ont été utilisés pendant la compilation. La whatcommande est disponible pour automatiser cette recherche de chaînes de version.
Histoire
En 1972, Marc Rochkind a développé SCCS en SNOBOL4 aux Bell Labs pour un ordinateur IBM System/370 exécutant OS/360 MVT . Il a réécrit SCCS dans le langage de programmation C pour une utilisation sous UNIX , alors exécuté sur un PDP-11 , en 1973.
La première version publiée publiquement fut la version 4 de SCCS, du 18 février 1977. Elle était disponible avec l' édition Programmer's Workbench (PWB) du système d'exploitation . La version 4 de SCCS fut la première version à utiliser un format de fichier d'historique basé sur du texte, les versions antérieures utilisaient des formats de fichier d'historique binaires. La version 4 n'a plus été écrite ni maintenue par Marc Rochkind. Par la suite, SCCS a été inclus dans les distributions commerciales System III et System V d' AT&T . Il n'était pas sous licence 32V , l'ancêtre de BSD . L'ensemble de commandes SCCS fait désormais partie de la Single UNIX Specification .
SCCS était le système de contrôle de version dominant pour Unix jusqu'à ce que les systèmes de contrôle de version ultérieurs , notamment RCS et plus tard CVS , soient plus largement adoptés. Aujourd'hui, ces premiers systèmes de contrôle de version sont généralement considérés comme obsolètes, en particulier dans la communauté open source , qui a largement adopté les systèmes de contrôle de version distribués . Cependant, le format de fichier SCCS est toujours utilisé en interne par quelques programmes de contrôle de version plus récents, notamment BitKeeper et TeamWare . Ce dernier est une interface de SCCS. Sablime a été développé à partir d'une version modifiée de SCCS mais utilise un format de fichier d'historique incompatible avec SCCS. Le format de fichier SCCS utilise une technique de stockage appelée deltas entrelacés (ou tissage ). Cette technique de stockage est désormais considérée par de nombreux développeurs de systèmes de contrôle de version comme fondamentale pour les techniques avancées de fusion et de gestion de versions, telles que la fusion « Precise Codeville » (« pcdv »).
Hormis la correction des problèmes de l'an 2000 en 1999, aucun développement actif n'a eu lieu sur les différentes versions SCCS spécifiques aux fournisseurs UNIX. En 2006, Sun Microsystems (aujourd'hui une partie d' Oracle ) a publié sa version Solaris de SCCS en open source sous la licence CDDL dans le cadre de ses efforts pour ouvrir le code source de Solaris.
Arrière-plan
Le système de contrôle du code source (SCCS) est un système de contrôle des modifications de fichiers et d'historique. La mise à niveau d'un logiciel vers une nouvelle version consiste généralement à corriger des bogues, à optimiser des algorithmes et à ajouter des fonctions supplémentaires. Le changement de logiciel entraîne des problèmes qui nécessitent un contrôle de version pour être résolus.
- Le code source prend trop de place car il est répété dans chaque version.
- Il est difficile d’obtenir des informations sur le moment et le lieu où les changements se sont produits.
- Il est difficile de trouver la version exacte avec laquelle le client rencontre des problèmes.
SCCS a été conçu pour résoudre ces problèmes. SCCS d'AT&T avait cinq versions principales pour le système d'exploitation IBM et cinq versions principales pour UNIX Deux implémentations spécifiques utilisant SCCS sont : PDP 11 sous Unix et IBM 370 sous le système d'exploitation.
Composition
SCCS se compose de deux parties : les commandes SCCS et les fichiers SCCS. Toutes les opérations de base (par exemple, créer, supprimer, modifier) peuvent être réalisées par des commandes SCCS. Les fichiers SCCS ont un préfixe de format unique s., qui est contrôlé par des commandes SCCS.
Fichiers SCCS
Un fichier SCCS se compose de trois parties :
- Tableau Delta
- Drapeaux d'accès et de suivi
- Corps du texte
Tableau Delta
Dans SCCS, un delta est une révision unique dans un fichier SCCS. Les deltas sont stockés dans une table delta, de sorte que chaque fichier SCCS possède son propre enregistrement des modifications.
Indicateurs de contrôle et de suivi dans les fichiers SCCS
Chaque opération de chaque fichier SCCS est suivie par des indicateurs. Leurs fonctions sont les suivantes :
- Définition des autorisations pour l'édition de chaque fichier SCCS.
- Contrôlez chaque version de chaque fichier SCCS.
- Permettre l'édition collaborative de chaque fichier SCCS.
- Modifications de référencement mutuel de chaque fichier SCCS.
Corps
Le SCCS utilise trois types d'enregistrements de contrôle pour suivre les insertions et les suppressions appliquées dans différents deltas. Il s'agit de l'enregistrement de contrôle d'insertion, de l'enregistrement de contrôle de suppression et de l'enregistrement de contrôle de fin. Chaque fois qu'un utilisateur modifie une partie du texte, un enregistrement de contrôle est inséré autour de la modification. Les enregistrements de contrôle sont stockés dans le corps avec les enregistrements de texte d'origine.
Commandes de base SCCS
SCCS fournit un ensemble de commandes sous forme d'invocations de macros qui exécutent ou initient des fonctions de gestion de code source avec une syntaxe simple, telle que create, get, edit, prt. Il donne également accès à l'historique des révisions des fichiers sous gestion. Ces commandes sont implémentées sous forme de verbes d'arguments pour le programme pilote sccs .
Créer
La commande sccs create utilise le texte d'un fichier source pour créer un nouveau fichier d'historique. Par exemple :
$ sccs crée le programme.c programme.c : 1.1 87 lignes
Les sorties sont le nom, la version et les lignes.
La commande est une macro qui s'étend à admin pour créer le nouveau fichier d'historique suivi de get pour récupérer le fichier.
Modifier
$ sccs éditer le programme.c 1.1 nouveau delta 1.2 87 lignes
Modifier un fichier spécifique.
La commande est une macro qui se développe pour obtenir -e .
Délègue
$ sccs delget program.c commentaires ? fonction principale améliorée 1.2 10 insérée 0 supprimée 87 inchangée 1.2 97 lignes
Enregistrez la nouvelle version et obtenez la nouvelle version auprès de sccs.
La commande est une macro qui se développe en delta pour vérifier le nouveau fichier de version suivi de get pour récupérer le fichier.
Obtenir
$ sccs obtient le programme.c 1.1 87 lignes
Les sorties sont la version et les lignes que vous souhaitez obtenir à partir d'un fichier spécifique.
Prt
programme $ sccs prt.cCette commande produit un rapport des modifications du code source.
Implémentations
Versions SCCS UNIX
La plupart des versions d'UNIX incluent une version de SCCS, qui, cependant, n'est souvent plus activement développée.
La fourchette de Jörg Schilling
Le regretté Jörg Schilling (qui a demandé la publication de SCCS au début du projet OpenSolaris ) a maintenu un fork de SCCS basé sur le code source d'OpenSolaris. Il a reçu des améliorations de fonctionnalités majeures mais reste compatible avec les versions SCCS originales à moins d'utiliser le mode « nouveau projet ».
Projet d'héritage
Le projet Heirloom comprend une version de SCCS dérivée du code source d'OpenSolaris et maintenue entre décembre 2006 et avril 2007.
Utilitaire de conversion GNU
GNU propose le programme compatible SCCS GNU CSSC (« Compatible Stupid Source Control »), qui est parfois utilisé pour convertir les archives SCCS vers des systèmes plus récents comme CVS ou Subversion ; ce n'est pas une implémentation SCCS complète et n'est pas recommandé pour une utilisation dans de nouveaux projets, mais principalement destiné à la conversion vers un système de contrôle de version moderne.
Autres systèmes de contrôle de version
Depuis les années 1990, de nombreux nouveaux systèmes de contrôle de version ont été développés et sont devenus populaires. Ils sont conçus pour gérer des projets comportant un grand nombre de fichiers et offrent des fonctionnalités avancées telles que le fonctionnement multi-utilisateur, le contrôle d'accès, la construction automatique, la prise en charge réseau, la gestion des versions et le contrôle de version distribué . Bitkeeper et TeamWare utilisent le format de fichier SCCS en interne et peuvent être considérés comme les successeurs de SCCS.
Sur les systèmes BSD, le SCCSID est remplacé par un RCSID commençant et finissant par $ ; l'outil correspondant est ident . Ce système est utilisé à l'origine par RCS et ajouté automatiquement lors de l'extraction. Les identifiants de contrôle de révision du code source résultants sont documentés dans les guides de style NetBSD et FreeBSD pour leurs propres bases de code. NetBSD définit le mot-clé personnalisé $NetBSD: ...$ tandis que FreeBSD définit $FreeBSD: ...$ et une macro renommée __FBSDID .
Le système de contrôle de version SRC peut également utiliser le format de fichier SCCS en interne (ou RCS ) et vise à fournir une meilleure interface utilisateur pour SCCS tout en gérant uniquement des projets à fichier unique.
Lectures complémentaires
- Essai de Marc Rochkind sur l'invention du SCCS
sccs– Référence Shell et utilitaires, la spécification UNIX unique , version 4 de The Open Groupsccs(1)– Manuel des commandes générales de FreeBSDsccs(1)– Manuel de référence des commandes utilisateur de Solaris 11.4sccs(1)– Page de manuel AIX 7.3sccs(1)– Manuel des commandes utilisateur HP-UX 11isccs(1)– Manuel des commandes utilisateur IRIX 6.5