Sistema de control de código fuente - Source Code Control System

Sistema de control de código fuente (SCCS)
Autor (es) original (es) Marc J. Rochkind
Desarrollador (es) Laboratorios Bell
Versión inicial 1973 ; Hace 48 años ( 1973 )
Repositorio Página web oficial
Escrito en Primera versión: SNOBOL4
Reescritura: C
Sistema operativo OS / 360 , Unix , similar a Unix
Plataforma IBM System / 370 , PDP-11 , IA-32
Escribe Control de versiones
Licencia licencias propietarias, licencia común de desarrollo y distribución
Sitio web Especificaciones básicas de Open Group, edición 7, IEEE Std 1003.1-2008, edición de 2016

El sistema de control de código fuente ( SCCS ) es un sistema de control de versiones diseñado para rastrear cambios en el código fuente y otros archivos de texto durante el desarrollo de una pieza de software. Esto permite al usuario recuperar cualquiera de las versiones anteriores del código fuente original y los cambios que están almacenados. Fue desarrollado originalmente en Bell Labs a finales de 1972 por Marc Rochkind para una computadora IBM System / 370 con OS / 360 .

Un rasgo característico de SCCS es la cadena sccsid que está incrustada en el código fuente y que SCCS actualiza automáticamente para cada revisión. Este ejemplo ilustra su uso en el lenguaje de programación C :

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

Esta cadena contiene el nombre del archivo, la fecha y también puede contener un comentario. Después de la compilación, la cadena se puede encontrar en archivos binarios y de objeto buscando el patrón "@ (#)" y se puede usar para determinar qué archivos de código fuente se usaron durante la compilación. El comando "qué" [1] está disponible para automatizar esta búsqueda de cadenas de versiones.

Historia

En 1972, Marc Rochkind desarrolló SCCS en SNOBOL4 en Bell Labs para una computadora IBM System / 370 con OS / 360 MVT . Reescribió SCCS en el lenguaje de programación C para usarlo bajo UNIX , luego ejecutándolo en un PDP-11 , en 1973.

La primera versión publicada fue SCCS versión 4 del 18 de febrero de 1977. Estaba disponible con la edición Programmer's Workbench (PWB) del sistema operativo . La versión 4 de SCCS fue la primera versión que usó un formato de archivo de historial basado en texto, las versiones anteriores usaban formatos de archivo de historial binario. La versión 4 ya no fue escrita ni mantenida por Marc Rochkind. Posteriormente, SCCS se incluyó en las distribuciones comerciales System III y System V de AT&T . No tenía licencia con 32V , el antepasado de BSD . El conjunto de comandos SCCS ahora es parte de la Especificación Única de UNIX .

SCCS fue el sistema de control de versiones dominante para Unix hasta que los sistemas de control de versiones posteriores , especialmente el RCS y el CVS posterior , obtuvieron una adopción más generalizada. Hoy en día, estos primeros sistemas de control de versiones generalmente se consideran obsoletos, particularmente en la comunidad de código abierto , que ha adoptado en gran medida los sistemas de control de versiones distribuidos . Sin embargo, el formato de archivo SCCS todavía se usa internamente en algunos programas de control de versiones más recientes, incluidos BitKeeper y TeamWare . Este último es una interfaz de SCCS. Sablime se ha desarrollado a partir de una versión modificada de SCCS, pero utiliza un formato de archivo histórico que es incompatible con SCCS. El formato de archivo SCCS utiliza una técnica de almacenamiento llamada deltas intercaladas (o el tejido). Muchos desarrolladores de sistemas de control de versiones consideran ahora esta técnica de almacenamiento como fundamental para las técnicas avanzadas de fusión y control de versiones, como la fusión "Precise Codeville " ("pcdv").

Aparte de corregir los problemas del año 2000 en 1999, no se ha llevado a cabo ningún desarrollo activo en las diversas versiones de SCCS específicas del proveedor de UNIX. En 2006, Sun Microsystems (hoy parte de Oracle ) lanzó su versión Solaris de SCCS como código abierto bajo la licencia CDDL como parte de sus esfuerzos por el código abierto de Solaris.

Fondo

El Sistema de control de código fuente (SCCS) es un sistema para controlar los cambios de archivos e historial. El software generalmente se actualiza a una nueva versión corrigiendo errores, optimizando algoritmos y agregando funciones adicionales. El cambio de software provoca problemas que requieren control de versiones para resolverlos.

  • El código fuente ocupa demasiado espacio porque se repite en todas las versiones.
  • Es difícil obtener información sobre cuándo y dónde ocurrieron los cambios.
  • Encontrar la versión exacta con la que el cliente tiene problemas es difícil.

SCCS fue construido para resolver estos problemas. SCCS de AT&T tenía cinco versiones principales para el sistema operativo IBM y cinco versiones principales para UNIX. Dos implementaciones específicas que utilizan SCCS son: PDP 11 bajo Unix e IBM 370 bajo el sistema operativo.

Composición

SCCS consta de dos partes: comandos SCCS y archivos SCCS. Todas las operaciones básicas (por ejemplo, crear, eliminar, editar) se pueden realizar mediante comandos SCCS. Los archivos SCCS tienen un prefijo de formato único s., que está controlado por comandos SCCS.

Archivos SCCS

Un archivo SCCS consta de tres partes:

  • Tabla delta
  • Banderas de acceso y seguimiento
  • Cuerpo del texto

Tabla delta

En SCCS, un delta es una única revisión en un archivo SCCS. Los deltas se almacenan en una tabla delta, por lo que cada archivo SCCS tiene su propio registro de cambios.

Banderas de control y seguimiento en archivos SCCS

Cada operación de cada archivo SCCS es rastreada por banderas. Sus funciones son las siguientes:

  • Establecer permisos para editar cada archivo SCCS.
  • Controle cada lanzamiento de cada archivo SCCS.
  • Permitiendo la edición colaborativa de cada archivo SCCS.
  • Cambios de referencia mutua de cada archivo SCCS.

Cuerpo

SCCS utiliza tres tipos de registros de control para realizar un seguimiento de las inserciones y eliminaciones aplicadas en diferentes deltas. Son el registro de control de inserción, el registro de control de eliminación y el registro de control final. Siempre que un usuario cambia alguna parte del texto, se inserta un registro de control alrededor del cambio. Los registros de control se almacenan en el cuerpo junto con los registros de texto originales.

Comandos básicos de SCCS

SCCS proporciona un conjunto de comandos en forma de invocaciones de macros que realizan o inician funciones de administración de código fuente con una sintaxis simple, como crear, obtener, editar, prt. También proporciona acceso al historial de revisión de los archivos bajo administración. Estos comandos se implementan como verbos de argumento para el programa controlador sccs .

Crear

El comando sccs create usa el texto de un archivo fuente para crear un nuevo archivo histórico. Por ejemplo:

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

Las salidas son nombre, versión y líneas.

El comando es una macro que se expande a admin para crear el nuevo archivo histórico seguido de get para recuperar el archivo.

Editar

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

Edita un archivo específico.

El comando es una macro que se expande para obtener -e .

Delget

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

Verifique la nueva versión y obtenga la nueva versión de sccs.

El comando es una macro que se expande a delta para registrar el archivo de la nueva versión seguido de get para recuperar el archivo.

Obtener

$ sccs get program.c
1.1
87 lines

Las salidas son la versión y las líneas que desea obtener de un archivo específico.

Prt

$ sccs prt program.c

Este comando produce un informe de cambios en el código fuente.

Implementaciones

Versiones UNIX SCCS

La mayoría de las versiones de UNIX incluyen una versión de SCCS, que, sin embargo, a menudo ya no se desarrolla activamente.

Tenedor de Jörg Schilling

Jörg Schilling (que solicitó el lanzamiento de SCCS en los primeros días del proyecto OpenSolaris ) mantuvo una bifurcación de SCCS que se basa en el código fuente de OpenSolaris. Ha recibido importantes mejoras en las funciones, pero sigue siendo compatible con las versiones originales de SCCS a menos que se utilice el modo "nuevo proyecto".

Proyecto de reliquia

El Proyecto Heirloom incluye una versión de SCCS derivada del código fuente de OpenSolaris y se mantuvo entre diciembre de 2006 y abril de 2007.

Utilidad de conversión GNU

GNU ofrece el programa compatible con SCCS GNU CSSC ("Control de fuente compatible estúpido"), que ocasionalmente se usa para convertir archivos SCCS a sistemas más nuevos como CVS o Subversion ; no es una implementación completa de SCCS y no se recomienda para su uso en nuevos proyectos, pero principalmente para convertirlo a un sistema de control de versiones moderno.

Otros sistemas de control de versiones

Desde la década de 1990, se han desarrollado y se han hecho populares muchos sistemas de control de versiones nuevos que están diseñados para administrar proyectos con una gran cantidad de archivos y que ofrecen funcionalidad avanzada como operación multiusuario, control de acceso, construcción automática, soporte de red, administración de versiones. y control distribuido de versiones . Bitkeeper y TeamWare utilizan el formato de archivo SCCS internamente y pueden considerarse sucesores de SCCS.

En los sistemas BSD, el SCCSID se reemplaza por un RCSID que comienza y termina con $ ; la herramienta correspondiente es ident . Este sistema lo usa originalmente RCS y se agrega automáticamente al finalizar la compra, pero desde entonces se ha convertido en una parte integral de la guía de estilo en la base de código de FreeBSD , que define una palabra clave personalizada $ FreeBSD: ... $ y una macro renombrada como __FBSDID .

El sistema de control de versiones de SRC también puede usar el formato de archivo SCCS internamente (o RCS ) y tiene como objetivo proporcionar una mejor interfaz de usuario para SCCS mientras se administran solo proyectos de un solo archivo.

Referencias

Otras lecturas