# 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:

> - Nomes de Tag e ramos devem sempre ser com letras maiúsculas.
> - Tags e ramos devem SEMPRE ser aplicados no módulo inteiro (em tudo no Moodle). Não coloque tag em arquivos ou diretórios individuais.
> - Nós não permitimos renomear tags porque alguém pode estar contando com eles, então faça-os corretamente já na primeira vez!

### 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$