|
O Projeto FreeBSD se prepara para substituir CVS por Subversion, assim como diversos outros projetos de Software Livre já fizeram. Confira nessa notícia uma introdução ao Subversion, conheça alguns dos maiores usuários desse sistema de controle de versões e saiba como o Projeto FreeBSD está se preparando para substituir o CVS pelo SVN.
Subversion é um sistema de código aberto para controle de versão de arquivos, especialmente utilizado para controle de versão de software. Subversion gerencia o ciclo de vida cronológico de arquivos e diretórios, em formato de árvore, disposto em um repositório central. O repositório é similar a um sistema de arquivos, exceto pelo fato dele manter as informações de cada modificação feita em todos arquivos e diretórios, e distinguir essas modificações entre versões distintas desses arquivos ao longo do tempo. Enfim, é um sistema de controle de versões, como é o CVS, como é RCS, como Perforce, como Clear Case, como Star Team, como Microsoft Team Foundation, entre outros sistemas com o mesmo objetivo. O Projeto FreeBSD utiliza para controle de versões o CVS - isso é público e notório - e o Perforce (isso não é tão sabido, especialmente porque o Perforce é um sistema de controle de versões comercial - de fato o Perforce é fornecido para o Projeto FreeBSD e para a FreeBSD Foundation sem quaisquer ônus financeiro. Por dois motivos, primeiro, porque alguns dos desenvolvedores do Performance são commiters FreeBSD, e segundo porque o Projeto FreeBSD é um dos maiores e mais complexos projetos de desenvolvimento distribuído, com uma das mais interessantes e ramificadas estruturas organizacionais, segundo a empresa criadora do Perforce o Projeto FreeBSD é diferente e especial no que tange ao desenvolvimento concorrente pois envolve três projetos completamente distintos, o desenvolvimento do sistema (desenvolvimento no src), desenvolvimento da Coleção de Ports, e desenvolvimento de Documentação (man pages, handbooks, FAQs, web site, e SGMLs em geral como releases, anúncios, etc), cada subprojeto com suas peculiaridades, com nomenclaturas de tags e branches (ramos) distintos nas árvores concorrentes, e com classificações em comum. Subprojetos distintos e independentes que em determinado momento se reagrupam para formar o FreeBSD como conhecemos. Perforce considera o Projeto FreeBSD um de seus maiores cases de utilização). Muitos desenvolvedores preferem o Perforce à opção livre em uso no Projeto FreeBSD hoje, o CVS. Mas muitos prefeririam o Subversion ao Perforce, e quase todos o Subversion ao CVS. Mas, o que o subversion tem de tão especial, e porque o Projeto FreeBSD não o utiliza? O subversion (SVN) tem muito mais recursos que o CVS, e alguns recursos comum a ambos são melhor implementados no SVN. Por exemplo, o suporte a formato binário no SVN é automático, a identificação do tipo de arquivo se faz durante o manuseio deste, não é necessário um comando especial de classificação como no CVS. SVN consegue fazer diffs binários, algo que o CVS não consegue, e consegue fazê-lo melhor que sistemas comerciais como Clear Case, Microsoft Team Foundation ou mesmo o Perforce. Isso porque SVN utiliza um algorítimo baseado no BSDiff e bspatch criados por Colin Percival (Security Officer do FreeBSD). E BSD não é só a base da tecnologia do SVN; Subversion utiliza Berkeley DB como database em seu backend, e a licença desse sistema de controle de versões é do tipo BSD Clássica, diferente do CVS que é GPL. Isso garante possibilidades mais flexíveis de uso do Subversion em ambiente corporativo e similares em ambiente livre. Subversion ainda tem diversos plugins de extensão de suas funcionalidades e permite fácil integração com outros subsistemas e softwares, como diretórios WebDAV e Apache2. Se você está curioso sobre o Subversion especialmente como ele se compara com outros sistemas de versionamento, dê uma olhada aqui. Para o usuário avançado acostumado com o CVS, pode se deparar com uma mudança teórica bastante grande. O SVN não trata tags como o CVS. SVN considera tag apenas uma variação secundário de um branch, e na prática é exatamente como um branch, apenas uma cópia da ramificação atual da árvore. Isso pode gerar alguma confusão ou dificuldade de discernimento de usuários acostumados demais com o uso de tags ou dependentes disso. Por outro lado em um sistema SVN não existe como no CVS a "revisão" de um determinado arquivo. Os arquivos não tem versões independentes. Todos os arquivos são parte de uma mesma revisão, e a modificação em um único arquivo altera a revisão de todos. Isso significa que não tratamos "este arquivo na revisão número X", por exemplo, /usr/src/sys/netinet/ip_fw2.c na revisão 1.106.2.15. Agora os arquivos são tratados " como na revisão X da árvore", por exemplo, /usr/src/sys/netinet/ip_fw2.c da revisão 2.275 do ramo -CURRENT. Isso é outra grande diferença, mas ela traz mais consistência ao sistema de controle de versões, e acaba resolvendo a questão das tags. Esses fatos, em combinação de fatores técnicos - Projeto FreeBSD é taltamente dependente de tag e branches - aliados a fatores humanos - usuários e desenvolvedores são muito acostumados a tags e branches - tornam a mudança de uma solução de controle de versões para outra, processo não muito trivial. Diversas empresas estâo migrando de soluções diversas de controle de versões para SVN, bem como projetos livres. A Apache Foundation há algum tempo substituiu CVS pelo SVN. O KDE também vai de SVN há algum tempo. O UOL (Universo Online) vem migrando de Clear Case para SVN aos poucos. A Conectiva conta com mais de 30GB em repositório SVN e mais de 50000 revisões. Também no Brasil a Universidade FUMEC, em especial o I-NETI , setor de ensino a distância, optou por SVN como sua solução de controle de versões. Outros grandes usuários de SVN são o Projeto GCC, a Oracle e a Teledata. A Apple incorporou trechos do SVN (fato possível devido a sua licença BSD) especialmente modificado para a versão Leopard do Mac OS X - em uso no recurso Time Machine do Leopard. Outros usuários podem ser encontrados no site do Subversion. A maioria dos mais dependentes usuários de CVS se acostumaram com SVN e agora encontram vantagens nesse segundo sistema sobre o primeiro, no Projeto FreeBSD. Isso quer dizer que a migração de CVS para SVN no Projeto FreeBSD é mais que eminente. Recentemente Nik Clayton (
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
) preparou no http://wikitest.freebsd.org/SVN_Repo_Layout documentação e propostas para organização do Projeto FreeBSD em base de versionamento Subversion. A estrutura será próxima de: / freebsd / src / {trunk, branches, tags } www / " " " doc / " " " ports / " " "
/ vendor / sendmail / 8.13.7 / 8.13.8 / current / bind /
/ projects / trustedbsd / {trunk, branches, tags} snmpng / " " " kse / " " " / user / n / nik / r / rwatson / Esse layout não é final. Modificações devem existir, mas não são esperadas grandes mudanças na organização acima. Por algum tempo ainda o repositório CVS será mantido, mesmo depois da efetivação do SVN, mas em algum momento no futuro o CVS será completamente descontinuado e inclusive removido da base do FreeBSD. Esta notícia foi contribuída pela FreeBSD Brasil LTDA , que presta consultoria em implementação e capacitação de uso do Subversion, tendo implementando SVN em inúmeros instituições, inclusive citadas ao longo da notícia como a Universidade FUMEC. |