En los sistemas de control de versiones , un repositorio es una estructura de datos que almacena metadatos para un conjunto de archivos o una estructura de directorios . [1] Dependiendo de si el sistema de control de versiones en uso es distribuido, como Git o Mercurial , o centralizado, como Subversion , CVS o Perforce , todo el conjunto de información en el repositorio puede estar duplicado en el sistema de cada usuario o puede mantenerse en un solo servidor . [2] Algunos de los metadatos que contiene un repositorio incluyen, entre otras cosas, un registro histórico de cambios en el repositorio, un conjunto de objetos de confirmación y un conjunto de referencias a objetos de confirmación, llamados encabezados .
El objetivo principal de un repositorio es almacenar un conjunto de archivos, así como el historial de cambios realizados en esos archivos. [3] Sin embargo, la forma exacta en que cada sistema de control de versiones maneja el almacenamiento de esos cambios difiere enormemente. Por ejemplo, Subversion en el pasado dependía de una instancia de base de datos, pero desde entonces ha pasado a almacenar sus cambios directamente en el sistema de archivos. [4] Estas diferencias en las técnicas de almacenamiento generalmente han llevado a diversos usos del control de versiones por parte de diferentes grupos, según sus necesidades. [5]
En ingeniería de software, se utiliza un sistema de control de versiones para realizar un seguimiento de las versiones de un conjunto de archivos, generalmente para permitir que varios desarrolladores colaboren en un proyecto. El repositorio realiza un seguimiento de los archivos del proyecto, que se representa como un gráfico .
Un sistema de control de versiones distribuido se compone de repositorios centrales y sucursales . Un repositorio central existe en el servidor. Para realizar cambios en él, un desarrollador primero trabaja en un repositorio de sucursales y procede a confirmar el cambio en el primero.
Un forjador de código es una interfaz web para un sistema de control de versiones. Un usuario puede explorar repositorios y sus archivos constituyentes en la propia página.
Si bien las forjas se utilizan principalmente para realizar operaciones de control de versiones, algunas permiten a los usuarios alojar páginas web estáticas cargando su código fuente (como HTML y JavaScript , pero no PHP ) a un repositorio. Esto se hace generalmente para proporcionar documentación o una página de destino para un proyecto de software.
El uso de repositorios como un lugar para cargar documentos web permite integrar el control de versiones y, además, permite una iteración rápida porque los cambios se envían a través del sistema de control de versiones en lugar de tener que cargar el archivo a través de un protocolo como FTP . [6]
Ejemplos de este tipo de servicio incluyen GitHub Pages y GitLab Pages .