Uma Breve História do Controle de Versão

Existem dezenas de Sistemas de Controle de Versão (SCVs), desde os proprietários até os de código aberto. Esse pequeno texto tem por objetivo descrever uma sucinta história dividindo-os em três gerações.

A primeira geração 

A característica comum comum da primeira geração de SCVs era que eles eram todos orientados a arquivos e centralizados. A maioria estava baseada em bloqueio, com os sistemas baseados em fusões (merging). 

Os sistemas de controle de versão são vagamente derivados de sistemas de gerenciamento de mudanças e de registro usados ​​em mainframes na década de 1960. É interessante notar que o primeiro SCV, enquanto mais tarde tornou-se estreitamente associado com o sistema operacional Unix, foi escrito originalmente em um computador IBM System/370 com o sistema operacional MVT. 

SCCS (Source Code Control System) foi o primeiro SCV, escrito em 1972 por Marc Rochkind, um dos primeiros desenvolvedores do Unix no Bell Labs. O SCCS tinha como características: bloqueio, orientado a arquivos e centralizado. Na verdade, não tinha suporte para repositórios remotos (em rede), uma capacidade que nem sequer era imaginada até a ascensão pós-1982 da Internet. 

RCS (Revision Control System) foi o segundo SCV a ser construído e o mais antigo ainda em uso - fontes indicam que uma terceira versão foi lançada em 1983, não havendo fontes que documentem versões anteriores. Assim como o SCCS, para o qual foi uma resposta direta, RCS é bloqueante, baseado em arquivo e centralizado sem capacidade para acesso à rede. 

O DSEE (Domain Software Engineering Environment) era um VCS com recursos significativos do SCM, incluindo um mecanismo de compilação e um rastreador de tarefas, lançado pela primeira vez em 1984 em estações de trabalho do Apollo Domain. Depois que a Apollo foi adquirida pela HP em 1989, a DSEE continuou a ser utilizada extensivamente na HP. A equipe DSEE tornou-se Atria, renomeando DSEE para ClearCase. Mais tarde, a Atria foi adquirida pela IBM e continua a ser amplamente utilizada em 2008 sob o nome Rational ClearCase.
 

A segunda geração

Diferentemente da primeira geração, essa nova geração veio com algumas melhorias através do uso de redes centralizadas, uso de multi-arquivos e  merge (fusão) antes do commit (envio). 

Dick Grune, professor da Universidade Livre de Amsterdã, escreveu alguns scripts wrappers de roteiro em torno de RCS em 1984-1985 para resolver problemas relacionados a desenvolvimento colaborativo e escalabilidade. Dois anos depois, Brian Berliner transformou esses scripts em programas em C que se tornaram a base para versões posteriores do que ficou conhecido como o Sistema de Versões Concorrentes (RCS).

Em 2000, um grupo que incluía alguns desenvolvedores anteriores do CVS lançou o Subversion, um projeto que visava explicitamente melhorar e substituir o CVS. O Subversion também é conhecido como SVN, depois do nome do diretório que seus repositórios usam convencionalmente. Embora a sua primeira produção oficial não tenha chegado até 2004, os betas de aproximadamente 2002 em diante foram utilizáveis. Na verdade, o projeto iria ter sucesso em seus principais objetivos bem antes da versão 1.0 enviada.

A terceira geração 

Os SVNs de terceira geração são nativamente descentralizados, ocorre o commit antes do merge e as operações são armazenadas em changesets (conjunto de mudanças). Há muitos projetos concorrentes neste espaço: BitKeeper, git, monotone, darcs, Mercurial e bzr, são alguns dos mais conhecidos

Para complementar, um pequeno vídeo mostrando a linha do tempo dos controles de versão desde 1972 até 2012.



Referências

http://www.catb.org/~esr/writings/version-control/version-control.html#history

http://ericsink.com/vcbe/html/history_of_version_control.html

0 comentários: