CVS para Desenvolvedores do Moodle

Um sistema CVS (Concurrent Versioning System) geralmente é usado como uma maneira de gerenciar códigos-fontes para grandes projetos de softwares. Guardam-se todas as versões de todos os arquivos não sendo nada perdido, e o uso por diferentes pessoas é rastreado. Ele também fornece maneiras de unir códigos se duas ou mais pessoas estão trabalhando no mesmo arquivo. Todos os códigos e todas as versões são armazenadas em um servidor central (no caso do Moodle, no Sourceforge).

Se você desejar somente baixar o Moodle usando o CVS para rodar um site, provavelmente você não precisará desta página – apenas siga as instruções do CVS na página de download do Moodle.

  1. Filiando-se ao projeto como um desenvolvedor
  2. Módulos CVS
  3. Comandos básicos CVS
    3.1. CVS no Unix
    3.2. CVS no Windows
  4. Trabalhando com Ramos
    4.1. Tronco de Desenvolvimento
    4.2. Ramos estáveis de cada edição
    4.3. Ramos especiais para grandes alterações

1. Filiando-se ao projeto como um desenvolvedor

Você foi autorizado a escrever no CVS para ajudar-nos a desenvolver e a manter o Moodle! Benvindo a bordo !

Para estar apto a escrever mudanças no arquivo CVS do Moodle, você precisa ter uma conta no Sourceforge (o registro é livre e fácil). Para os exemplos desta página, vamos assumir o nome de usuário myusername e a senha mypassword. Preste atenção especialmente nas instruções sourceforge para criar seu diretório CVS principal local - você tem que fazer isto com cada nova conta para habilitá-la no CVS. Basicamente você tem que usar o ssh para conectar-se interativamente ao cvs.sourceforge.net.

Uma vez que tenha uma conta aberta no Sourceforge, contate Martin Dougiamas para que ele possa configurar as permissões de acesso da sua conta em certos diretórios do CVS.

Para evitar o pedido continuo de mypassword todas as vezes que rodar um comando do CVS, siga as diretrizes do Sourceforge para usar as chaves autorizadas. Este passo é opcional, mas pode tornar sua experiência com o CVS muito mais agradável.

Feito isto, você deve ter todas as permissões que precisa, basta configurara o seu PC e baixar os códigos atualizados para trabalhar com eles.

 

2. Modulos CVS

No CVS, a palavra módulos se refere a coleções separadas de códigos. No Moodle nós temos os seguintes módulos no repositório:

moodle - o código fonte principal do Moodle

contrib - contribuições de usuários e outros códigos variados em desenvolvimento

mysql - um phpMyAdmin customizado para plugar ao Moodle para administração do banco de dados

windows-cron - um pequeno pacote que faz o cron possível nos sistemas Windows

docs - vários documentos extras de contribuição de usuários

A maioria das pessoas estão trabalhando nas características existentes no módulo moodle, mas muitos também estão contribuindo com novas idéias nos módulos contrib. Uma vez que o código atinge um certo nível de maturidade na área contrib, pode ser migrado para a árvore principal moodle.

 

3. Comandos básicos CVS

3.1 CVS no Unix

Sourceforge CVS usa ssh como uma camada de transporte para segurança, assim você terá que setar a variável CVS_RSH em seu shell Unix. É melhor colocar estes comandos em seu .bashrc ou .cshrc assim você não terá que digitá-lo todas as vezes:

setenv CVS_RSH ssh (for csh, tcsh etc)
export CVS_RSH=ssh (for sh, bash etc)

Depois, você pode checar a última versão de desenvolvimento do Moodle usando isto (tudo em uma linha):

cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co moodle

O comando é similar para outros módulos CVS:

cvs -z3 -d:ext:myusername@cvs.sourceforge.net:/cvsroot/moodle co contrib

Não tente rodar este primeiro comando CVS sobre uma instalação existente do moodle; comece com um novo diretório.

Note que você terá que digitar mypassword para cada comando a menos que você configure chaves autorizadas.

Agora, você deve ter um novo diretório moodle. Você pode renomeá-lo e movê-lo se você desejar. Faça assim para entrar:

cd moodle

Todos os últimos arquivos Moodle devem estar lá. Você pode agora alterar os arquivos em sua cópia. Para comparar seus arquivos e diretórios em relação a cópia principal CVS no servidor use cvs diff, por exemplo:

cvs diff -c config-dist.php
cvs diff -c lang

Para buscar as últimas atualizações do servidor use:

cvs update -dP

Para copiar seus novos arquivos de volta ao servidor você pode fazer algo como:

cd lang/ca
cvs commit

Você será solicitado a adicionar alguns comentários (dependendo do editor de texto padrão) ... adicionar um comentário significativo e fechar o editor ... os arquivos serão enviados ao Sourceforge e armazenados. Feito!

Para economizar mais tempo você pode colocar argumentos padrões dentro de um arquivo chamado .cvsrc em seu diretório local. Por exemplo:

diff -c
update -dP

Tente cvs help para mais detalhes ...

 

3.2 CVS em Windows

Primeiro você precisa fazer o download de uma cópia completa do Moodle utilizando a sua conta de desenvolvedor.

  1. Baixe TortoiseCVS em tortoisecvs.org e instale o programa, reinicialize.
  2. Encontre ou crie uma nova pasta onde você deseje fazer o download do Moodle.
  3. Clique com o botão direito do mouse sobre a pasta e escolha CVS Checkout no menu. Você deve visualizar uma caixa de diálogo.
  4. Copie este texto dentro do campo CVSROOT (utilizando seu próprio nome de usuário!):
     :ext:myusername@cvs.sourceforge.net:/cvsroot/moodle
  5. No campo "Module" , digite "moodle" para obter a última versão em desenvolvimento de Moodle, "contrib" para obter o diretório de contribuições ou "mysql" para obter o módulo MySQL Admin.
  6. Aperte o botão: "OK" e será feito o download de tudo.

Uma caixa de diálogo deve mostrar todos os arquivos que estão sendo descarregados, e depois de um tempo você terá uma cópia completa do Moodle. Após este primeiro checkout, você pode buscar os arquivos mais recentes do servidor CVS:

  1. Clique com o botão direito sobre a pasta do Moodle (ou qualquer arquivo) e selecione CVS Update.
  2. Aguarde e observe os logs que irão aparecendo. Preste atenção nos conflitos que possam ocorrer caso seu código local tiver alterações que conflitam com as versões vigentes - você precisará editar estes arquivos e resolver os conflitos manualmente.

Depois de modificar os arquivos (você notará a mudança dos ícones de verde para vermelho!), você pode encerrar enviando-os de volta ao CVS:

  1. Clique como botão direito sobre a pasta do Moodle (ou qualquer arquivo) e selecione CVS Commit... .
  2. Na caixa de diálogo, digite uma descrição clara das alterações que você está enviando.
  3. Clique "OK". Suas alterações serão enviadas ao servidor.

4. Trabalhando com ramos

Este diagrama mosta como o módulo principal Moodle ramifica em diferentes versões com o passar do tempo.

Para visualizar todos os tags atuais e os ramos que estão ativados, utilize este comando em qualquer arquivo antigo (tal como index.php no diretório superior do moodle):

cvs status -v index.php

Algumas diretrizes para Tags:


4.1 Tronco de desenvolvimento

O tronco do CVS é a versão de desenvolvimento principal do Moodle. No CVS ele também é conhecido como HEAD, ou branch default.

Desenvolvedores do Moodle tentam conservá-lo tão estável quanto possível, mas como geralmente ele contém novos códigos, podem ser presentes bugs e pequenas instabilidades.

De vez em quando nós decidimos que o produto tem características suficientes para se fazer uma nova versão. Neste momento, o tronco é marcado com um tag MOODLE_XX_BETA (para o caso de desejarmos retornar àquele ponto) e um novo ramo é formado para a versão, chamado MOODLE_XX_STABLE.

Um pacote Beta tem é criado neste ponto - para os desenvolvedores que não utilizam o CVS mas desejam testar as últimas características e reportar os bugs.

 

4.2 Ramos estáveis para cada edição

Tão logo seja criado o ramo estável MOODLE_XX_STABLE, esforços de desenvolvimento seguirão em duas direções por um tempo. Algumas pessoas podem continuar trabalhando em novas características no tronco para a próxima edição, mas a maioria dos desenvolvedores deve se concentrar em usar o ramo corrente STABLE e fixar os bugs que forem achados.

Você pode trocar a sua cópia local do Moodle pela versão estável usando o seguinte comando Unix no diretório raiz:

cvs update -dP -r MOODLE_XX_STABLE

Depois disto, todos os comandos descritos acima serão aplicáveis à versão estável. Para retornar à versão tronco basta digitar:

cvs update -dPA

Os clientes Windows tem um menu para a escolha do ramo.

Uma vez que o novo ramo STABLE realmente estabiliza, uma edição pode ser definida. Os pacotes são criados para distribuição e o ramo será rotulado (por Martin) com um tag nomeado: MOODLE_XXX

Periodicamente, os bugs eliminados no ramo STABLE deverão ser atualizados no tronco para se tornarem disponíveis nas futuras versões do Moodle. Um tag chamado MOODLE_XX_MERGED será mantido para conservar a última atualização. O procedimento para introduzir a atualização é o seguinte:

  1. Obtenha a última versão do tronco:

    cvs update -dPA
  2. Reunir tudo no ramo desde a última reunião na sua versão tronco

    cvs update -kk -j MOODLE_13_MERGED -j MOODLE_13_STABLE
  3. Cuidadosamente visualize os logs da atualização checando os conflitos, e corrija cada arquivo em que se vê um conflito
  4. Mande a cópia reunida ao CVS tronco

    cvs commit
  5. Retorne à versão tronco

    cvs update -dPr MOODLE_13_STABLE
  6. Atualize o tag para que este processo possa ser repetido na próxima vez

    cvs tag -RF MOODLE_13_MERGED


Finalmente, os valores para $version em todos os arquivos version.php dentro do branch estável não deverão ser atualizados na medida do possível (exceto o último dígito se necessário). A razão disto é que alguém atualizando de uma versão muito estável para a próxima versão muito estável poderia perder os upgrades no banco de dados que ocorreram no tronco.


4.3 Ramos especiais para grandes alterações

Ocasionalmente, pode haver uma característica muito grande que precisa ser checada por muitas pessoas, mas é demasiadamente instável para ser incluída no tronco de desenvolvimento principal.

Nestes casos um ramo menor pode ser criado para trabalhar nesta caracterísitca, antes de atualizar o tronco principal. Um exemplo chamado MOODLE_14_WIDGET pode ser visto no diagrama acima.

Se você precisa fazer isto para sua nova característica WIDGET, siga estes passos:

  1. Discuta com outros desenvolvedores para ter certeza que é necessário!
  2. Faça um novo tag no tronco (para tudo no Moodle) chamado MOODLE_XX_WIDGET_PRE

    cvs tag -R MOODLE_XX_WIDGET_PRE
  3. Crie seu ramo chamado MOODLE_XX_WIDGET

    cvs tag -Rb MOODLE_XX_WIDGET
  4. Trabalhe neste ramo até que a característica esteja razoavelmente estável. Use o comando commit quando necessário.

    cvs commit
  5. Quando estiver pronto, reunir todo o ramo no tronco, corrijir conflitos, fazer o commit no tronco e abandonar o ramo.

    cvs update -dPA
    cvs update -kk -j MOODLE_XX_WIDGET
    cvs commit

Boa Sorte, seja cuidadoso e divirta-se!


Documentação do Moodle

Version: $Id$