Saltar para o conteúdo

Wikipédia:Desenvolvimento técnico/Sistemas de controlo de versão

Origem: Wikipédia, a enciclopédia livre.


Desenvolvimento técnico | Sistemas de controlo de versão


Sistemas de controlo de versão são pequenos programas que ajudam a manter e a gerir os códigos fontes de programas, funcionando de forma similar ao histórico das páginas do mediawiki. Nos casos onde o código fonte não fica alojado na wikipedia, sendo o caso dos bots o mais evidente, torna-se extremamente útil não só para manter alguns códigos actualizados, como na publicação externa. No pywikipediabot, por exemplo, para fazer o download do framework basta na linha de comandos navegar até ao directório pretendido, e, tendo o svn instalado, fazer "svn checkout http://svn.wikimedia.org/svnroot/pywikipedia/trunk/pywikipedia/" que os ficheiros são transferidos. Posteriormente, para actualizar o pywikipediabot, basta navegar novamente até à pasta onde está instalado pela linha de comandos, e escrever "svn update", que o svn verifica as alterações ocorridas no repositório oficial e actualiza os ficheiros alterados.


Há no entanto vários sistemas de controlo de versão, sendo que abordaremos aqui três deles, os mais utilizados, e que se dividem em duas categorias. O SVN, ou subversion, que durante muito tempo foi amplamente usado, o git, um dos sucessores e o mais utilizado no movimento wikimedia (o git é suado pela wikimedia para a gestão dos vários códigos fonte, desde ao mediawiki até as extensões mw:Git), e o mercurial, um sistema semelhante ao git, normalmente associado a uma menor curva de aprendizagem.

Para alojamento público e gratuito dos códigos, há várias alternativas, desde o GitHub, bitbucket ou Google Code, que à excepção do GitHub que funciona exclusivamente com Git, permitem usar outros sistemas de controlo de versão.

mw:Gerrit/Tutorial

Em windows, é aconselhado o tortoisehg with mercurial, que instala não só o mercurial (hg), como o tortoisehg, uma interface gráfica. O link para o download é o seguinte: http://tortoisehg.bitbucket.org/download/index.html, para sistemas unix, as indicações de instalação encontram-se em http://mercurial.selenic.com/wiki/UnixInstall, e a configuração do mercurial pode ser efectuada segundo a descrição em http://mercurial.selenic.com/wiki/TutorialInstall.

Uma vez instalado e configurado, a forma mais fácil de trabalhar com um novo repositório através do mercurial, é criar um repositório online vazio, e depois fazer um clone no computador local. Utilizando o bitbucket, podendo ser outro serviço que suporte mercurial, criamos um repositório, e após a sua criação, quando aparecer a opção "I'm starting from scratch", selecioná-la. Ai temos as indicações para fazer um clone local. Um clone local é uma cópia do repositório, com toda a sua história. Um pouco como se fosse feito o download de uma página da wiki, com as várias edições que foram feitas ao longo do tempo, quem as fez, ou o que foi adicionado.

A partir daqui, o processo é bem mais simples e repetitivo, e baseia-se nos seguintes comandos:

  • hg clone link_para_o_repositório -> faz uma cópia local do repositório online.
  • hg add -> adiciona todos os ficheiros do directório ao controlo do hg. Convém ter em conta que o hg monitoriza apenas os ficheiros que lhe são assinalados, um pouco como caso na wikipédia não houve-se a página das mudanças recentes e houve-se apenas disponível as páginas vigiadas.
  • hg commit -m 'Sumario do commit'
    • Usando a wikipédia como exemplo, isto é o que equivale ao botão salvar. Após fazer alterações a um ou vários ficheiros, convém que o hg "guarde" essas alterações no repositório local. Isto não faz com que apareçam automáticamente no repositório online, porque para serem enviadas para esse repositório é preciso outro comando, o "hg push".
  • hg push -> envia as alterações que estão no repo local, para o repo online.

Links úteis[editar código-fonte]