Em sistemas de controle de versão, um repositório é uma estrutura de dados que armazena metadados para um conjunto de arquivos ou estrutura de diretórios.[1] Dependendo se o sistema de controle de versão em uso é distribuído, como o Git ou Mercurial, ou centralizado, como o Subversion, CVS ou Perforce, todo o conjunto de informações no repositório pode ser duplicado no sistema de cada usuário ou pode ser mantido em um único servidor.[2] Alguns dos metadados que um repositório contém incluem, entre outras coisas, um registro histórico de alterações no repositório, um conjunto de objetos de commit e um conjunto de referências a objetos de commit, chamados de heads.
O objetivo principal de um repositório é armazenar um conjunto de arquivos, bem como o histórico de alterações feitas nesses arquivos.[3] No entanto, a forma exata como cada sistema de controle de versão lida com o armazenamento dessas alterações difere bastante. Por exemplo, o Subversion no passado dependia de uma instância de banco de dados, mas desde então passou a armazenar suas alterações diretamente no sistema de arquivos.[4] Essas diferenças nas técnicas de armazenamento geralmente levaram a diversos usos do controle de versão por diferentes grupos, dependendo de suas necessidades.[5]
Visão geral
editar
Na engenharia de software, um sistema de controle de versão é usado para acompanhar as versões de um conjunto de arquivos, geralmente para permitir que vários desenvolvedores colaborem em um projeto. O repositório rastreia os arquivos no projeto, que é representado como um grafo.
Um sistema de controle de versão distribuído é composto por repositórios centrais e de ramificação (branch). Um repositório central existe no servidor. Para fazer alterações nele, um desenvolvedor primeiro trabalha em um repositório de ramificação e procede com o commit da alteração para o primeiro.
Forjas
editarUma forja de código é uma interface web para um sistema de controle de versão. Um usuário geralmente pode navegar pelos repositórios e seus arquivos constituintes na própria página.
Hospedagem de web estática
editarEmbora as forjas sejam usadas principalmente para realizar operações de controle de versão, algumas permitem que os usuários hospedem páginas web estáticas ao enviar seu código-fonte (como HTML e JavaScript, mas não PHP) para um repositório. Isso geralmente é feito para fornecer documentação ou uma landing page para um projeto de software.
O uso de repositórios como um local para enviar documentos web permite que o controle de versão seja integrado e, adicionalmente, permite uma iteração rápida, pois as alterações são enviadas (push) através do Sistema de Controle de Versão, em vez de ter que carregar o arquivo através de um protocolo como o FTP.[6]
Exemplos desse tipo de serviço incluem Codeberg Pages, GitHub Pages e GitLab Pages.
Referências
editar- ↑ «SVNBook». Consultado em 20 de abril de 2012
- ↑ «Version control concepts and best practices». 3 de março de 2018. Consultado em 10 de julho de 2020. Cópia arquivada em 27 de abril de 2020
- ↑ «Getting Started - About Version Control». Git SCM
- ↑ Ben Collins-Sussman; Brian W. Fitzpatrick; C. Michael Pilato (2011). «Chapter 5: Strategies for Repository Deployment». Version Control with Subversion: For Subversion 1.7. [S.l.]: O'Reilly
- ↑ «Different approaches to source control branching». Stack Overflow. Consultado em 15 de novembro de 2014
- ↑ «GitHub Pages | Websites for you and your projects, hosted directly from your GitHub repository.». GitHub