Articulo de referencia

Sistema de control de código fuente

Rewrite: [[C (programming language)|C]]"},"operating system":{"wt":"[[OS/360]], [[Unix]], [[Unix-like]]"},"platform":{"wt":"[[IBM System/370]], [[PDP-11]], [[IA-32]]"},"genre":{...

El Sistema de Control de Código Fuente ( SCCS ) es un sistema de control de versiones diseñado para rastrear 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 almacenados. Fue desarrollado originalmente en Bell Labs a finales de 1972 por Marc Rochkind para una computadora IBM System/370 con sistema operativo OS/360 . [ 1 ]

Una característica distintiva de SCCS es la cadena sccsid que está integrada en el código fuente y que SCCS actualiza automáticamente en 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 los 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 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 bajo UNIX , que entonces se ejecutaba en un PDP-11 , en 1973.

La primera versión publicada públicamente fue SCCS versión 4 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 que utilizó un formato de archivo de historial basado en texto; las versiones anteriores utilizaban formatos de archivo de historial binarios. Marc Rochkind dejó de escribir y mantener la versión 4. Posteriormente, SCCS se incluyó en las distribuciones comerciales System III y System V de AT&T . No se licenció con 32V , el antecesor de BSD . [ 5 ] El conjunto de comandos de SCCS ahora forma parte de la Especificación Única de UNIX .

SCCS fue el sistema de control de versiones dominante para Unix hasta que sistemas posteriores , en particular RCS y CVS , lograron una adopción más generalizada. Hoy en día, estos primeros sistemas de control de versiones se consideran generalmente obsoletos, especialmente en la comunidad de código abierto , que ha adoptado en gran medida sistemas de control de versiones distribuidos . Sin embargo, el formato de archivo SCCS todavía se utiliza internamente en algunos programas de control de versiones más recientes, como BitKeeper y TeamWare . Este último es una interfaz para SCCS. Sablime [ 6 ] se desarrolló a partir de una versión modificada de SCCS [ 7 ] , pero utiliza un formato de archivo de historial incompatible con SCCS. El formato de archivo SCCS utiliza una técnica de almacenamiento llamada deltas intercalados (o tejido [ 8 ] ). Esta técnica de almacenamiento es considerada por muchos desarrolladores de sistemas de control de versiones como fundamental para técnicas avanzadas de fusión y versionado [ 9 ] , como la fusión "Precise Codeville" ("pcdv").

Aparte de corregir los problemas del año 2000 en 1999, no se ha producido 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 ) publicó su versión de Solaris de SCCS como código abierto bajo la licencia CDDL como parte de sus esfuerzos por liberar 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 archivos e historial. El software generalmente se actualiza a una nueva versión corrigiendo errores, optimizando algoritmos y agregando funciones adicionales. [ 12 ] Los cambios en el software causan problemas que requieren control de versiones para su solución. [ 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 se produjeron los cambios.
  • Resulta difícil encontrar la versión exacta con la que el cliente tiene problemas.

SCCS se creó para resolver estos problemas. SCCS de AT&T tuvo 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 (p. ej., 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
  • Indicadores 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 de deltas, 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 ]

  • Configurar permisos para la edición de cada archivo SCCS.
  • Controla cada lanzamiento de cada archivo SCCS.
  • Permite la edición colaborativa de todos los archivos 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. Estos son el registro de control de inserción, el registro de control de eliminación y el registro de control final. Cada vez que un usuario modifica alguna parte del texto, se inserta un registro de control alrededor de la modificación. Los registros de control se almacenan en el cuerpo junto con los registros de texto originales. [ 1 ]

Comandos básicos de SCCS

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

Crear

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

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

Los resultados 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 nuevo 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 insertado 0 eliminado 87 sin cambios 1.2 97 líneas

Comprueba la nueva versión y obtén la nueva versión de sccs.

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

Conseguir

$ sccs obtener programa.c 1.1 87 líneas

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

Prt

$ sccs prt program.c 

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

Implementaciones

Versiones de 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. [ 18 ]

El tenedor de Jörg Schilling

El difunto Jörg Schilling (quien solicitó la publicación de SCCS en los inicios del proyecto OpenSolaris ) [ 19 ] mantuvo una bifurcación de SCCS [ 20 ] [ 21 ] basada en el código fuente de OpenSolaris. Ha recibido importantes mejoras de funcionalidades, pero sigue siendo compatible con las versiones originales de SCCS, salvo que se utilice el modo de "nuevo proyecto". [ 22 ]

Proyecto de herencia

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, sino que está pensado principalmente para 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 sistemas de control de versiones nuevos , diseñados para gestionar proyectos con 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 lanzamientos y control de versiones distribuido . Bitkeeper y TeamWare utilizan internamente el formato de archivo SCCS 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 es utilizado originalmente por RCS y se agrega automáticamente al extraer. 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 como __FBSDID .

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

Referencias

  1. 1 2 3 4 5 Rochkind, Marc J. (diciembre de 1975), "The Source Code Control System" (PDF) , IEEE Transactions on Software Engineering , vol.  SE-1, n.º  4, págs. 364–370 , Bibcode : 1975ITSEn...1..364R , doi : 10.1109/tse.1975.6312866 , S2CID 10006076 , archivado del original (PDF) el 25 de mayo de 2011 , recuperado el 8 de julio de 2005  
  2. 1 2 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. s.f. . Consultado el 28 de noviembre de 2022 .
  4. https://sccs.sourceforge.net/PWB.html Anuncio de AT&T para SCCSv4
  5. SCCS what(1) manpage de 4BSD, 1980, en el sitio web de The Unix Heritage Society Archivado el 31-08-2005 en Wayback Machine .
  6. "Página web de Sablime" . Alcatel-Lucent . Archivado del 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 la 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 inéditas
  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 la 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" . Archivado del 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. 1 2 "SCCS" . www-h.eng.cam.ac.uk . Consultado el 12 de septiembre de 2016 .
  15. 1 2 3 IBM (7 de junio de 2018). "Conceptos generales de programación: escritura y depuración de programas" . Centro de conocimiento de IBM .
  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 interactivos tridimensionales». Visual Languages, 1997. Actas del Simposio IEEE de 1997. IEEE, 1997.
  19. "os.solaris.opensolaris.rfe - Re: estrella - msg#00001 - Discusión reciente OSDir.com" . osdir.com . Consultado el 10 de septiembre de 2016 .
  20. Sitio web de desarrollo de SCCS de Jörg Schilling
  21. "Una colección de herramientas escritas o gestionadas anteriormente por Jörg Schilling" . Codeberg . 22 de octubre de 2022. Consultado el 28 de noviembre de 2022. El desarrollo ha sido retomado por un grupo de voluntarios que desean mantener el proyecto vivo y en buen estado.
  22. Sitio web de Schily SCCS : "¿Seguirá siendo compatible la próxima versión de SCCSv6 con POSIX y con las implementaciones históricas de SCCS?"
  23. Gunnar Ritter (20 de junio de 2010). "Las herramientas de desarrollo de Heirloom" . Recuperado el 4 de noviembre de 2011 .
  24. https://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ ver historial de CVS
  25. Utilidad de conversión SCCS2SVN Archivada el 22/12/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. Manual de comandos generales de NetBSDident(1)  
  30. "src/share/misc/style revisión 1.64" . Repositorio CVS de NetBSD.
  31. Manual del desarrollador del kernel de FreeBSDstyle(9)  
  32. "Página de recursos para src 1.29" . 21 de enero de 2022. Consultado el 28 de noviembre de 2022 .

Lecturas adicionales

  • El SCCS de Schily en Codeberg