Versionamento Concorrente Completo com Subversion
Ao longo deste documento de aproximadamente 100 páginas, você será guiado pelo processo e
aprendizado de implantação e uso de um ambiente completo de
versionamento paralelo concorrente no FreeBSD com Subversion, TRAC,
Apache2, mod_python, TortoiseSVN e RapidSVN, entre outros.
Introdução
A cada dia sistemas de versão concorrente vem sendo utilizados para os mais diversos fins. No passado era realidade apenas em grandes ambientes de desenvolvimento paralelo, onde literalmente dezenas de desenvolvedores demandavam acesso simultâneo aos mesmos arquivos, e ter um sistema de versão concorrente era imperativo para garantir adequadamente um ambiente de trabalho concorrente, e principalmente, garantir segurança desses dados, de forma que se um desenvolvedor interferisse negativamente no trabalho de outro, as mudanças em questão pudessem ser facilmente revertidas ao estado anterior.
Hoje a popularização do ambiente de versão concorrentes é maior, e o uso dessas aplicações não torna-se mais simples ou acessível, mas sim, mais necessária. O ambiente de versionamento hoje é parecido com o que era, em termos operacionais, há uma década atrás.
Porém os conceitos de desenvolvimento evoluíram, e hoje até mesmo projetos com um ou dois desenvolvedores são mantidos em base de versão concorrente, pois garante segurança e acompanhamento histórico da evolução de cada projeto.Mais que isso, não apenas projetos de desenvolvimento de software usam sistemas de versionamento hoje. Desde desenvolvimento de websites até documentos de editoração eletrônica, como Corel Draw ou Photoshop, incluindo documentos de texto formado Word ou OpenOffice, são mantidos em sistemas de versão concorrente.
A possibilidade de backup automatizado e fácil, garantindo aumento de segurança, e reversão de modificações, são o principal motivador para a adoção desse tipo de ambiente de desenvolvimento.
Hoje existem dezenas de opções de sistemas de versionamento de projetos, esses sistemas são conhecidos com SCM ou apenas VCS (Version Control System). Alguns sistemas VCS comerciais, mais conhecidos são:
-
Clear Case
- Microsoft Team Foundation
E alguns sistemas de controle de versão livres, mais conhecidos são:
Outros sistemas menos conhecidos:
-
Visual Source Safe
-
PVCS
-
SVK
-
HG
-
BZR
- Perforce
Entre os sistemas proprietários, o Clear Case é o mais conhecido, porém de forma geral oferece uma boa relação entre custo e recursos, apesar de não ter performance como outros concorrentes, e portanto não indicado para ambientes de desenvolvimento muito grandes (e muito grandes nos referimos a centenas de modificações por dia, literalmente por centenas de desenvolvedores simultânea/paralelamente).
Entre os desenvolvedores que trabalham com diversos sistemas de versionamento, a opção comercial mais adotada, e considerada a melhor no quesito funcionalidades, facilidade de uso e performance é o Perforce. Porém, o Perforce é conhecido por ser um sistema de alto custo em suas versões mais completas.O sistema aberto mais conhecido é o CVS, exatamente por existir há mais tempo, e ser a primeira implementação livre com um número de recursos que o tornasse viável a ser utilizado em todo tipo de ambiente, de qualquer porte, de projetos pequenos a gigantescos. O CVS é a opção de escolha mais comum, entre livres e comerciais. Ao menos por enquanto.
O Projeto FreeBSD é um dos mais compexos, dinâmicos e organizados projetos de desenvolvimento de Software no mundo. É o único projeto que já teve tese de pós-graduação defendida, pois seu modelo exclusivo mostra-se diferente e muito eficiente.
No Projeto FreeBSD, existe um time central, chamado Core Team, composto de 7 a 9 desenvolvedores, que coordenam as políticas e objetivos do Projeto. Porém, o desenvolvimento ativo acontece paralelamente em um ambiente de versionamento concorrente em três árvores independentes, são elas:
-
A árvore do src (o FreeBSD de fato);
-
A árvore de Ports;
- A árvore de Documentação;
E, diferente de outros projetos livres ou proprietários, o acesso efetivo a essas árvores de desenvolvimento não é coordenado ou supervisionado por um, ou um time de desenvolvedores chefe. Cada um dos cerca de 400 desenvolvedores FreeBSD tem liberdade, e são responsáveis por suas modificações, e podem realizar essas mudanças nos ramos de desenvolvimento, segurança ou produção do sistema, sem nenhuma supervisão, sendo os único responsáveis por suas mudanças.
Esse é um modelo regido por normas e regras bem estabelecidas, e principalmente, apesar de a primeira vista parecer caótico e anárquico, é muito bem projetado, rígido em procedimentos, e principalmente funcional, oferece liberdade para evolução distribuída do Projeto, sem depender de decisões centralizadas.
Exatamente por isso o Projeto FreeBSD é um dos maiores exemplos de desenvolvimento paralelo de software no mundo hoje. Todos os outros projetos, como Linux, NetBSD, OpenBSD, ou até mesmo de desenvolvimento de software proprietário seguem os padrões convencionais, tendo um líder, ou um supervisor responsável pela auditoria e controle de tudo que acontece, das atividades de cada desenvolvedor, ou tem um time responsável por essa tarefa.
Exatamente por isso o Projeto FreeBSD é conhecido como o ambiente que mais põe a prova sistemas de desenvolvimento e versionamento concorrente.
O CVS há anos tem sido o principal sistema de versionamento utilizado, e tem atendido o Projeto muito bem. Contudo, não é o único. Oficialmente os sistemas utilizados no Projeto são CVS e Perforce. Sim, o comercial e caríssimo Perforce.
O Projeto FreeBSD não adquire licenças do Perforce, tão pouco usa versões ilegais. O Perforce é doado ao Projeto FreeBSD, pois vários desenvolvedores FreeBSD são financiados pela Perforce, e principalmente também porque o Perforce gosta de ter um dos maiores projetos de Software do mundo, com características tão peculiares ao ponto de existir tese de pós graduação estudando-o, que usa o Projeto FreeBSD como referência, pois de forma geral poucos projetos tem esse nível de complexidade.
Inúmeros commiters FreeBSD preferem trabalhar no Perforce do que no CVS. Quase metade. As desvantagens do CVS são o fraco suporte a versionamento binário, ausência de alguns recursos adotados recentemente em outros sistemas, e também menor performance geral que outras soluções, como o próprio Perforce.
Não oficialmente, árvores alternativas são usadas por commiters com outros sistemas, como GIT. Porém, não são iniciativas oficais, e de forma geral são usadas por poucos desenvolvedores.
Contudo, o CVS tem sua liderança ameaçada a cada dia por um novo sistema: Subversion (ou apenas SVN).
O Subversion apresenta, entre todas as opções, uma das melhores implementações no quesito performance, concorrendo lado-a-lado com Perforce. Apresenta o melhor suporte a versionamento de arquivos binários do mundo, pois utiliza o BSDiff e BSDPatch criados por Colin Percival, commiter FreeBSD.
Tem ainda a vantagem de ser licença BSD, trabalhar com um conceito mais simples de árvore genealógica de versões, oferecer recursos modernos, e ter o desenvolvimento muito mais ativo que qualquer outro sistema de versionamento livre.
O Projeto FreeBSD planeja migrar para os próximos 18 meses sua estrutura primária de CVS para SVN. Hoje o SVN já é utilizado, experimentalmente. Nestes endereços:
http://wiki.freebsd.org/VersionControl
http://wiki.freebsd.org/SVN_Repo_Layout
http://wiki.freebsd.org/SVN_Merging
É possível acompanhar o minucioso trabalho de avaliação das alternativas ao CVS, suas limitações, suas vantagens, e seus recursos.
E também é possível observar o maior trabalho, realizado por Nik Clayton, acerca da migração para SVN.
Exatamente pelo destaque maior que SVN tem hoje em dia, qualquer nova implantação de sistemas de versionamento utiliza SVN.
CVS é sistema legado, e todos os projetos tendem a migrar de CVS para SVN. Alguns dos mais famosos projetos que já realizaram essa migração são:
- Apache - Apache Foundation
- SpamAssassin - Apache Foundation
- KDE - KDE Project
- Mono
- Samba
- Conectiva/Mandriva
- Outros...
Um comparativo entre Subversion e outros sistemas de versão concorrente, pode ser encontrado aqui: http://www.szabgab.com/subversion_vs_xyz.html
Objetivo Deste Artigo
Ao longo deste documento configuraremos o mais completo ambiente de trabalho utilizando Subversion, que inclui:
-
Subversion;
-
Apache2 com suporte a DB4.2
-
Módulo mod_dav para Apache2
-
Módulo mod_dav_svn para Apache2
-
Módulo mod_authz_svn para Apache2
-
TRAC
- Plugin Webadmin para TRAC
- Plugin Gantt Chart para TRAC
- Outros Plugins
- TortoiseSVN
- RapidSVN
O artigo continua, em formato PDF, em uma apostila com aproximadamente 100 páginas que o guia ao longo do processo e aprendizado de implantação e uso de um ambiente completo de versionamento paralelo concorrente.
Documento exclusivo à Clientes FreeBSD Brasil LTDA que pode ser acessado através do Portal Corporativo, clicando aqui.
Nota: desde Outubro de 2007 o documento encontra-se disponível publicamente na Área de Documentos de nosso site.
Por: Equipe de Consultoria FreeBSD Brasil LTDA em 2007-10-23 10:43:18