Sistema de control de código fuente

Sistema de control de código fuente (SCCS)
Autor(es) original(es)Marc J. Rochkind
Desarrollador(es)Laboratorios Bell
Lanzamiento inicial1973 ; hace 51 años [ discutir ] (1973)
RepositorioN / A
Escrito enPrimera versión: SNOBOL4
Reescritura: C
Sistema operativoOS/360 , Unix , similar a Unix
PlataformaSistema IBM/370 , PDP-11 , IA-32
TipoControl de versiones
Licencialicencias propietarias, Licencia Común de Desarrollo y Distribución
Sitio webEspecificaciones básicas de Open Group, número 7, IEEE Std 1003.1-2008, edición 2016

El Sistema de Control de Código Fuente ( SCCS ) es un sistema de control de versiones diseñado para realizar un seguimiento de los cambios en el código fuente y otros archivos de texto durante el desarrollo de un software. Esto permite al usuario recuperar cualquiera de las versiones anteriores del código fuente original y los cambios que se almacenan. Fue desarrollado originalmente en Bell Labs a fines de 1972 por Marc Rochkind para una computadora IBM System/370 que ejecutaba OS/360 . [1]

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

 carácter estático 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 objetos buscando el patrón @(#)y se puede utilizar para determinar qué archivos de código fuente se utilizaron durante la compilación. El whatcomando está disponible para automatizar esta búsqueda de cadenas de versión. [3]

Historia

En 1972, Marc Rochkind desarrolló SCCS en SNOBOL4 en Bell Labs para una computadora IBM System/370 que ejecutaba OS/360 MVT . [1] Reescribió SCCS en el lenguaje de programación C para su uso en UNIX , que entonces se ejecutaba en un PDP-11 , en 1973.

La primera versión publicada públicamente fue la versión 4 de SCCS del 18 de febrero de 1977. [4] 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 utilizó un formato de archivo de historial basado en texto, las versiones anteriores sí 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 fue licenciado con 32V , el antecesor de BSD . [5] 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 , en particular el RCS y más tarde el CVS , ganaron 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 nuevos, incluidos BitKeeper y TeamWare . Este último es una interfaz para SCCS. Sablime [6] se ha desarrollado a partir de una versión modificada de SCCS [7] pero utiliza un formato de archivo de historial que es incompatible con SCCS. El formato de archivo SCCS utiliza una técnica de almacenamiento llamada deltas intercalados (o el tejido [8] ). Esta técnica de almacenamiento ahora es considerada por muchos desarrolladores de sistemas de control de versiones como fundamental para las técnicas avanzadas de fusión y control de versiones, [9] 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 distintas versiones de SCCS específicas de los proveedores de UNIX. [10] 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 abrir el código fuente de Solaris. [11]

Fondo

El sistema de control de código fuente (SCCS) es un sistema para controlar los cambios en los archivos y en el historial. El software se actualiza normalmente a una nueva versión corrigiendo errores, optimizando algoritmos y añadiendo funciones adicionales. [12] Los cambios en el software provocan problemas que requieren un control de versiones para resolverlos. [1]

  • El código fuente ocupa demasiado espacio porque se repite en cada versión.
  • 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 creado para resolver estos problemas. SCCS de AT&T tenía cinco versiones principales para el sistema operativo IBM y cinco versiones principales para UNIX [13]. Dos implementaciones específicas que utilizan SCCS son: PDP 11 bajo Unix e IBM 370 bajo el sistema operativo. [1]

Composición

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

Archivos SCCS

Un archivo SCCS consta de tres partes: [15]

  • 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. [15]

Indicadores de control y seguimiento en archivos SCCS

Cada operación de cada archivo SCCS se rastrea mediante indicadores. Sus funciones son las siguientes: [15]

  • Establecer permisos para la edición de cada archivo SCCS.
  • Controlar cada versión de cada archivo SCCS.
  • Permitir 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 de finalización. 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. [1]

Comandos básicos del SCCS

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

Crear

El comando sccs create utiliza el texto de un archivo de origen para crear un nuevo archivo de historial. Por ejemplo:

$ sccs  create  program.c program.c: 1.1 87 líneas

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

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

Editar

$ sccs  edit  program.c 1.1 new delta 1.2 87 líneas

Editar un archivo específico.

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

Delget

$ sccs  delget  program.c comentarios? función principal mejorada 1.2 10 insertada 0 eliminada 87 sin cambios 1.2 97 líneas

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.

Conseguir

$ sccs  get  program.c 1.1 87 líneas

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

Parte

$ sccs  prt  programa.c

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

Implementaciones

Versiones de SCCS de UNIX

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

El tenedor de Jörg Schilling

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

Proyecto de reliquia

El Proyecto Heirloom incluye una versión de SCCS derivada del código fuente de OpenSolaris [23] y mantenida entre diciembre de 2006 y abril de 2007. [24]

Utilidad de conversión GNU

GNU ofrece el programa compatible con SCCS GNU CSSC ("Compatibly Stupid Source Control"), que se utiliza ocasionalmente para convertir archivos SCCS a sistemas más nuevos como CVS o Subversion ; [25] no es una implementación completa [26] de SCCS y no se recomienda su uso en proyectos nuevos, pero está destinado principalmente a la conversión a un sistema de control de versiones moderno.

Otros sistemas de control de versiones

Desde la década de 1990, se han desarrollado y popularizado muchos nuevos sistemas de control de versiones diseñados para gestionar proyectos con una gran cantidad de archivos y que ofrecen funcionalidades avanzadas como operación multiusuario, control de acceso, compilación automática, soporte de red, gestión de versiones y control de versiones distribuido . Bitkeeper y TeamWare utilizan el formato de archivo SCCS internamente y pueden considerarse sucesores de SCCS. [27] [28]

En los sistemas BSD, el SCCSID se reemplaza por un RCSID que comienza y termina con $ ; la herramienta correspondiente es ident . [29] Este sistema lo usaba originalmente RCS y se agregaba automáticamente al finalizar la compra. Los identificadores de control de revisión de código fuente resultantes están documentados en las guías de estilo de NetBSD [30] y FreeBSD [31] para sus propias bases de código. NetBSD define la palabra clave personalizada $NetBSD: ...$ mientras que FreeBSD define $FreeBSD: ...$ y una macro renombrada __FBSDID .

El sistema de control de versiones SRC también puede utilizar internamente el formato de archivo SCCS (o RCS ) y tiene como objetivo proporcionar una mejor interfaz de usuario para SCCS mientras sigue administrando solo proyectos de un solo archivo. [32]

Referencias

  1. ^ abcde Rochkind, Marc J. (diciembre de 1975), "The Source Code Control System" (PDF) , IEEE Transactions on Software Engineering , vol. SE-1, núm. 4, pp. 364–370, doi :10.1109/tse.1975.6312866, S2CID  10006076, archivado desde el original (PDF) el 25 de mayo de 2011 , consultado el 8 de julio de 2005
  2. ^ ab Oracle. "Capítulo 5 Sistema de control de código fuente SCCS". Guía de utilidades de programación .
  3. ^ "qué". IEEE y The Open Group. nd . Consultado el 28 de noviembre de 2022 .
  4. ^ http://sccs.sourceforge.net/PWB.html Anuncio de AT&T para SCCSv4
  5. ^ Página de manual SCCS what(1) de 4BSD, 1980, en el sitio web de The Unix Heritage Society Archivado el 31 de agosto de 2005 en Wayback Machine .
  6. ^ "Página web de Sablime". Alcatel-Lucent . Archivado desde el original el 22 de julio de 2016.
  7. ^ Estublier, Jacky, David Leblang, André van der Hoek , Reidar Conradi, Geoffrey Clemm, Walter Tichy y Darcy Wiborg-Weber. “Impacto de la investigación en ingeniería de software en la práctica de la gestión de configuración de software”. ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (octubre de 2005): 383–430.
  8. ^ Hudson, Greg (3 de octubre de 2002), Notas sobre cómo mantener historiales de versiones de archivos, Notas personales no publicadas
  9. ^ Estublier, Jacky, David Leblang, André van der Hoek , Reidar Conradi, Geoffrey Clemm, Walter Tichy y Darcy Wiborg-Weber. “Impacto de la investigación en ingeniería de software en la práctica de la gestión de configuración de software”. ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (octubre de 2005): pág. 398.
  10. ^ ¿Qué es SCCS, el sistema operativo GNU?
  11. ^ Stephen Lau, Sun Microsystems (19 de diciembre de 2006). «SCCS/make source available» (SCCS/hacer que el código fuente esté disponible). Archivado desde el original el 25 de abril de 2012. Consultado el 14 de noviembre de 2011 .
  12. ^ Selección de organización del hogar ProQuest  215925387
  13. ^ La evolución de un sistema de control de código fuente. Alan L.Glasser, publicado en sigmetrics, noviembre de 1978, cuando SCCS en UNIX era una versión 4
  14. ^ ab "SCCS". www-h.eng.cam.ac.uk . Consultado el 12 de septiembre de 2016 .
  15. ^ abc IBM (7 de junio de 2018). "Conceptos generales de programación: escritura y depuración de programas". IBM Knowledge Center .
  16. ^ Introducción al sistema de control de código fuente Eric Allman, Proyecto Ingres, Universidad de California en Berkeley
  17. ^ Guía de utilidades de programación del sistema de control de código fuente
  18. ^ Koike, Hideki y Hui-Chu Chu. "VRCS: Integración del control de versiones y la gestión de módulos mediante gráficos tridimensionales interactivos". Visual Languages, 1997. Actas. Simposio IEEE de 1997. IEEE, 1997.
  19. ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Discusión reciente OSDir.com". osdir.com . Consultado el 10 de septiembre de 2016 .
  20. ^ Sitio web de desarrollo del SCCS de Jörg Schilling
  21. ^ "Una colección de herramientas escritas o anteriormente administradas por Jörg Schilling". Codeberg . 22 de octubre de 2022 . Consultado el 28 de noviembre de 2022 . Un grupo de voluntarios se ha hecho cargo del desarrollo y desea que el proyecto siga vivo y en buen estado
  22. ^ Sitio web de SCCS de Schily: "¿El próximo SCCSv6 seguirá siendo compatible con POSIX y con las implementaciones históricas de SCCS?"
  23. ^ Gunnar Ritter (20 de junio de 2010). "Las herramientas de desarrollo de Heirloom" . Consultado el 4 de noviembre de 2011 .
  24. ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ ver historial de CVS
  25. ^ Utilidad de conversión SCCS2SVN Archivado el 22 de diciembre de 2009 en Wayback Machine , que funciona tanto con SCCS como con CSSC
  26. ^ Lista de limitaciones de GNU CSSC en su documentación
  27. ^ "revtool". Documentación de BitKeeper .
  28. ^ "Introducción a Sun WorkShop TeamWare". docs.oracle.com . Consultado el 10 de septiembre de 2016 .
  29. ^ ident(1)  –  Manual de comandos generales de NetBSD
  30. ^ "src/share/misc/style revisión 1.64". Repositorio CVS de NetBSD.
  31. ^ style(9)  –  Manual del desarrollador del kernel de FreeBSD
  32. ^ "Página de recursos para src 1.29". 21 de enero de 2022. Consultado el 28 de noviembre de 2022 .

Lectura adicional

  • SCCS de Schily en Codeberg
Retrieved from "https://en.wikipedia.org/w/index.php?title=Source_Code_Control_System&oldid=1249019655"