<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt">
	<id>https://docs.moodle.org/archive/pt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rubenback26</id>
	<title>MoodleDocs - Contribuições do utilizador [pt]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/archive/pt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rubenback26"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/Especial:Contribui%C3%A7%C3%B5es/Rubenback26"/>
	<updated>2026-05-18T11:10:11Z</updated>
	<subtitle>Contribuições do utilizador</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2536</id>
		<title>Guia para interface</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2536"/>
		<updated>2008-05-26T17:57:25Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este Manual de estilo para interface não é (e nem será a curto prazo) definitivo, consiste apenas num conjunto de ideias em desenvolvimento constante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simplicidade ==&lt;br /&gt;
&lt;br /&gt;
Utilize o mínimo de interface necessário para concluir uma tarefa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Páginas Standard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Módulos de actividades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;index.php&#039;&#039;&#039; – Mostra todas as opções de um módulo em curso.&lt;br /&gt;
&#039;&#039;&#039;view.php&#039;&#039;&#039; – Mostra uma opção em particular. &lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – Configura uma opção do módulo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – configura uma opção de um bloco. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Um script por função ou página principal ==&lt;br /&gt;
&lt;br /&gt;
... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout de página ==&lt;br /&gt;
&lt;br /&gt;
#Mostre cabeçalhos com print_heading, use os CSS hooks para IDs e Classes. &lt;br /&gt;
#Mostre as caixas à volta do texto utilizando print_simple_box, use os CSS hooks para IDs e Classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ferramentas de navegação Stardard ==&lt;br /&gt;
&lt;br /&gt;
#Todas as páginas devem chamar a função print_header(), e fornecer um caminho de navegação standard para ser mostrado. Onde for possível, deverá ver-se como: COURSE&amp;gt;&amp;gt; INDEX&amp;gt;&amp;gt; INSTANCE&amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
#As páginas incluídas em módulos de actividade devem chamar a função navmenu() para gerar o menu de navegação apropriado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
#Os URLs devem ser tão curtos quanto possível. &lt;br /&gt;
#Não deverão ser usados undersocres (‘_’) nos nomes dos parametros nem nos nomes dos ficheiros. &lt;br /&gt;
#Nunca se deve usar 2 palavras quando uma só é suficiente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Botões vs Links ==&lt;br /&gt;
&lt;br /&gt;
Isto é algo dificil de definir.&lt;br /&gt;
O Google web accelarator dá algumas sugestões:&lt;br /&gt;
#As acções que podem modificar o estado do Moodle (ficheiros de dados, base de dados, informação da sessão) devem ser realizadas por meios de botões.&lt;br /&gt;
#Como mínimo, as acções que são implementadas usando links devem encaminhar para páginas de confirmação que utilize botões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nomes CSS ==&lt;br /&gt;
&lt;br /&gt;
Ver [[theme_standards]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links de ajuda ==&lt;br /&gt;
&lt;br /&gt;
Os botões de ajuda devem estar posicionados à direita do objecto (excepto quando o objecto esteja alinhado à direita, devendo neste caso estar posicionados à esquerda).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Artigo de interesse ==&lt;br /&gt;
&lt;br /&gt;
O link que se segue apresenta um artigo denominado &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; de 01 de Março de 2005 nas “últimas noticias de Robin Good”.&lt;br /&gt;
&lt;br /&gt;
http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
Este artigo contem uma visão dos espaços virtuais focados nas acções humanas. Isto tem algum paralelismo com as abordagens comunicativas como o Moodle. O interface serve como um gestor de todas ferramentas de comunicação.&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Interface guidelines]]&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2535</id>
		<title>Guia para interface</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2535"/>
		<updated>2008-05-26T17:56:16Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este Manual de estilo para interface não é (e nem será a curto prazo) definitivo, consiste apenas num conjunto de ideias em desenvolvimento constante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simplicidade ==&lt;br /&gt;
&lt;br /&gt;
Utilize o mínimo de interface necessário para concluir uma tarefa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Páginas Standard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Módulos de actividades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;index.php&#039;&#039;&#039; – Mostra todas as opções de um módulo em curso.&lt;br /&gt;
&#039;&#039;&#039;view.php&#039;&#039;&#039; – Mostra uma opção em particular. &lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – Configura uma opção do módulo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – configura uma opção de um bloco. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Um script por função ou página principal ==&lt;br /&gt;
&lt;br /&gt;
... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout de página ==&lt;br /&gt;
&lt;br /&gt;
#Mostre cabeçalhos com print_heading, use os CSS hooks para IDs e Classes &lt;br /&gt;
#Mostre as caixas à volta do texto utilizando print_simple_box, use os CSS hooks para IDs e Classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ferramentas de navegação Stardard ==&lt;br /&gt;
&lt;br /&gt;
#Todas as páginas devem chamar a função print_header(), e fornecer um caminho de navegação standard para ser mostrado. Onde for possível, deverá ver-se como: COURSE&amp;gt;&amp;gt; INDEX&amp;gt;&amp;gt; INSTANCE&amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
#As páginas incluídas em módulos de actividade devem chamar a função navmenu() para gerar o menu de navegação apropriado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
#Os URLs devem ser tão curtos quanto possível. &lt;br /&gt;
#Não deverão ser usados undersocres (‘_’) nos nomes dos parametros nem nos nomes dos ficheiros. &lt;br /&gt;
#Nunca se deve usar 2 palavras quando uma só é suficiente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Botões vs Links ==&lt;br /&gt;
&lt;br /&gt;
Isto é algo dificil de definir.&lt;br /&gt;
O Google web accelarator dá algumas sugestões:&lt;br /&gt;
#As acções que podem modificar o estado do Moodle (ficheiros de dados, base de dados, informação da sessão) devem ser realizadas por meios de botões.&lt;br /&gt;
#Como mínimo, as acções que são implementadas usando links devem encaminhar para páginas de confirmação que utilize botões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nomes CSS ==&lt;br /&gt;
&lt;br /&gt;
Ver [[theme_standards]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links de ajuda ==&lt;br /&gt;
&lt;br /&gt;
Os botões de ajuda devem estar posicionados à direita do objecto (excepto quando o objecto esteja alinhado à direita, devendo neste caso estar posicionados à esquerda).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Artigo de interesse ==&lt;br /&gt;
&lt;br /&gt;
O link que se segue apresenta um artigo denominado &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; de 01 de Março de 2005 nas “últimas noticias de Robin Good”.&lt;br /&gt;
&lt;br /&gt;
http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
Este artigo contem uma visão dos espaços virtuais focados nas acções humanas. Isto tem algum paralelismo com as abordagens comunicativas como o Moodle. O interface serve como um gestor de todas ferramentas de comunicação.&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Interface guidelines]]&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2534</id>
		<title>Guia para interface</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2534"/>
		<updated>2008-05-26T17:53:52Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este Manual de estilo para interface não é (e nem será a curto prazo) definitivo, consiste apenas num conjunto de ideias em desenvolvimento constante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simplicidade ==&lt;br /&gt;
&lt;br /&gt;
Utilize o mínimo de interface necessário para concluir uma tarefa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Páginas Standard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Módulos de actividades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;index.php&#039;&#039;&#039; – Mostra todas as opções de um módulo em curso.&lt;br /&gt;
&#039;&#039;&#039;view.php&#039;&#039;&#039; – Mostra uma opção em particular. &lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – Configura uma opção do módulo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – configura uma opção de um bloco. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Um script por função ou página principal ==&lt;br /&gt;
&lt;br /&gt;
... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout de página ==&lt;br /&gt;
&lt;br /&gt;
#Mostre cabeçalhos com print_heading, use os CSS hooks para IDs e Classes &lt;br /&gt;
#Mostre as caixas à volta do texto utilizando print_simple_box, use os CSS hooks para IDs e Classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ferramentas de navegação Stardard ==&lt;br /&gt;
&lt;br /&gt;
#Todas as páginas devem chamar a função print_header(), e fornecer um caminho de navegação standard para ser mostrado. Onde for possível, deverá ver-se como: COURSE&amp;gt;&amp;gt; INDEX&amp;gt;&amp;gt; INSTANCE&amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
#As páginas incluídas em módulos de actividade devem chamar a função navmenu() para gerar o menu de navegação apropriado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
#Os URLs devem ser tão curtos quanto possível. &lt;br /&gt;
#Não deverão ser usados undersocres (‘_’) nos nomes dos parametros nem nos nomes dos ficheiros. &lt;br /&gt;
#Nunca se deve usar 2 palavras quando uma só é suficiente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Botões vs Links ==&lt;br /&gt;
&lt;br /&gt;
Isto é algo dificil de definir.&lt;br /&gt;
O Google web accelarator dá algumas sugestões:&lt;br /&gt;
#As acções que podem modificar o estado do Moodle (ficheiros de dados, base de dados, informação da sessão) devem ser realizadas por meios de botões.&lt;br /&gt;
#Como mínimo, as acções que são implementadas usando links devem encaminhar para páginas de confirmação que utilize botões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nomes CSS ==&lt;br /&gt;
&lt;br /&gt;
Ver [theme standards]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links de ajuda ==&lt;br /&gt;
&lt;br /&gt;
Os botões de ajuda devem estar posicionados à direita do objecto (excepto quando o objecto esteja alinhado à direita, devendo neste caso estar posicionados à esquerda).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Artigo de interesse ==&lt;br /&gt;
&lt;br /&gt;
O link que se segue apresenta um artigo denominado &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; de 01 de Março de 2005 nas “últimas noticias de Robin Good”.&lt;br /&gt;
&lt;br /&gt;
http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
Este artigo contem uma visão dos espaços virtuais focados nas acções humanas. Isto tem algum paralelismo com as abordagens comunicativas como o Moodle. O interface serve como um gestor de todas ferramentas de comunicação.&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Interface guidelines]]&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2533</id>
		<title>Guia para interface</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Guia_para_interface&amp;diff=2533"/>
		<updated>2008-05-26T17:28:42Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este Manual de estilo para interface não é (e nem será a curto prazo) definitivo, consiste apenas num conjunto de ideias em desenvolvimento constante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simplicidade ==&lt;br /&gt;
&lt;br /&gt;
Utilize o mínimo de interface necessário para concluir uma tarefa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Páginas Standard ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Módulos de actividades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;index.php&#039;&#039;&#039; – Mostra todas as opções de um módulo em curso&lt;br /&gt;
&#039;&#039;&#039;view.php&#039;&#039;&#039; – Mostra uma opção em particular &lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – Configura uma opção do módulo &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Blocos&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;config.html&#039;&#039;&#039; – configura uma opção de um bloco. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Um script por função ou página principal ==&lt;br /&gt;
&lt;br /&gt;
... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout de página ==&lt;br /&gt;
&lt;br /&gt;
#Mostre cabeçalhos com print_heading, use os CSS hooks para IDs e Classes &lt;br /&gt;
#Mostre as caixas à volta do texto utilizando print_simple_box, use os CSS hooks para IDs e Classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ferramentas de navegação Stardard ==&lt;br /&gt;
&lt;br /&gt;
#Todas as páginas devem chamar a função print_header(), e fornecer um caminho de navegação standard para ser mostrado. Onde for possível, deverá ver-se como: COURSE&amp;gt;&amp;gt; INDEX&amp;gt;&amp;gt; INSTANCE&amp;gt;&amp;gt; SUBPAGES...&lt;br /&gt;
#As páginas incluídas em módulos de actividade devem chamar a função navmenu() para gerar o menu de navegação apropriado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== URLs ==&lt;br /&gt;
&lt;br /&gt;
#Os URLs devem ser tão curtos quanto possível. &lt;br /&gt;
#Não deverão ser usados undersocres (‘_’) nos nomes dos parametros nem nos nomes dos ficheiros. &lt;br /&gt;
#Nunca se deve usar 2 palavras quando uma só é suficiente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Botões vs Links ==&lt;br /&gt;
&lt;br /&gt;
Isto é algo dificil de definir.&lt;br /&gt;
O Google web accelarator dá algumas sugestões:&lt;br /&gt;
#As acções que podem modificar o estado do Moodle (ficheiros de dados, base de dados, informação da sessão) devem ser realizadas por meios de botões.&lt;br /&gt;
#Como mínimo, as acções que são implementadas usando links devem encaminhar para páginas de confirmação que utilize botões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nomes CSS ==&lt;br /&gt;
&lt;br /&gt;
Ver theme standards &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links de ajuda ==&lt;br /&gt;
&lt;br /&gt;
Os botões de ajuda devem estar posicionados à direita do objecto (excepto quando o objecto esteja alinhado à direita, devendo neste caso estar posicionados à esquerda).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Artigo de interesse ==&lt;br /&gt;
&lt;br /&gt;
O link que se segue apresenta um artigo denominado &amp;quot;Interaction Design Meets Online Real Estate&amp;quot; de 01 de Março de 2005 nas “últimas noticias de Robin Good”.&lt;br /&gt;
&lt;br /&gt;
http://www.masternewmedia.org/news/2005/03/01/interaction_design_meets_online_real.htm&lt;br /&gt;
&lt;br /&gt;
Este artigo contem uma visão dos espaços virtuais focados nas acções humanas. Isto tem algum paralelismo com as abordagens comunicativas como o Moodle. O interface serve como um gestor de todas ferramentas de comunicação.&lt;br /&gt;
The article presents a view of virtual spaces with the focus on human actions. It reminded me of communicative approaches like Moodle. The interface serves as the handle of all the communication tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Interface guidelines]]&lt;br /&gt;
[[es:Manual de estilo de la interfaz]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2532</id>
		<title>Tracker</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2532"/>
		<updated>2008-05-22T11:37:54Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tracker – Sistema de gestão de bugs do Moodle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A detecção e reparação de bugs constituem um processo contínuo de controlo de qualidade. No caso do Moodle, esta detecção e reparação de bugs, por ser uma plataforma open-source, está aberta a todos quantos queiram participar, constituindo este facto uma vantagem em relação às plataformas proprietárias. O sistema que permite fazer esta detecção e posterior correcção de erros associados à plataforma Moodle chama-se Tracker.&lt;br /&gt;
O ponto interessante do open-source está no facto em que todos os utilizadores interessados podem ajudar de várias formas, quer no código ou na detecção de erros, com o objectivo de trabalhar num produto que seja do agrado da comunidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login no Tracker ==&lt;br /&gt;
&lt;br /&gt;
Caso seja um novo utilizador do Tracker, o processo de registo poderá ser realizado aqui. Recomenda-se aqui que o username usado seja o mesmo do site moode.org. &lt;br /&gt;
Caso a conta de acesso ao Tracker não funcione, a mesma pode ser recuperada aqui: http://tracker.moodle.org&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resumo: Como reportar um erro, um melhoramento, ou um pedido de funcionalidade&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Fazer o login na homepage do Moodle Tracker.&lt;br /&gt;
#Seleccionar “Create New Issue” no menu baixo do logótipo do Moodle Tracker.&lt;br /&gt;
#No passo 1, no menu desdobrável seleccionar o “Issue type”: Erro (bug), Nova Funcionalidade (New Feature), Tarefa (Task) ou Melhoramento (Improvement).&lt;br /&gt;
#No passo 2, será visível várias áreas desdobráveis em branco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Resumo (Summary): Breve descrição do problema. O objectivo aqui é tentar fazer com que a descrição seja o mais precisa possível. A simples expressão do “Não funciona” não se revela de grande importância. È importante também pensar as palavras-chave que identificam o problema, para que o problema seja rapidamente encontrado pelos utilizadores pesquisarem pelo mesmo erro.&lt;br /&gt;
&lt;br /&gt;
*Componentes (Components): usar a teclas Ctrl e com um click do rato seleccionar uma ou mais áreas do Moodle. Por exemplo, pode ser encontrado um erro numa funcionalidade que tenha impacto em vários módulos.&lt;br /&gt;
&lt;br /&gt;
*Seleccionar a versão do Moodle, e caso não esteja listada por informação relativa á versão na descrição.&lt;br /&gt;
&lt;br /&gt;
*O Ambiente (Enviroment) é para a informações relativas ao sistema operativo e outras informações. Ver guias gerais mais abaixo.&lt;br /&gt;
*A Descrição (Descritpion) informa-nos acerca do assunto tratado. Informações sobre este tópico, mais abaixo.&lt;br /&gt;
&lt;br /&gt;
*Base de Dados (Database), se não estiver na lista, por a informação relativa no campo Ambiente(Enviroment)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Guia geral para a submissão de relatórios&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um bom relatório deve incluir:&lt;br /&gt;
*Resumo do problema em uma ou 2 frases&lt;br /&gt;
*Descrição concreta e concisa do problema ou melhoramento em causa&lt;br /&gt;
*Deve ser também feita uma descrição passo-a-passo da sequência de passos a fazer com o objectivo de reproduzir o erro. Se possível, indicar o endereço para o que o programador consiga ver o erro apenas com um click.&lt;br /&gt;
*Resultados actuais: indicar o que é que a aplicação faz após os passos serem executados&lt;br /&gt;
*Resultados esperados: explicitar os resultados que são esperados, caso o erro não estivesse presente. É importante que a explicação seja bastante pormenorizada pois isso ajudará na resolução do erro, bem como no interface que poderá ser ajustado de forma a ser mais amigável.&lt;br /&gt;
&lt;br /&gt;
Se possível, incluir informação adicional que possa ser útil ao programador:&lt;br /&gt;
*Versão do Moodle (se a versão não se encontrar no menu desdobrável no topo do formulário, adicionar essa informação na descrição)&lt;br /&gt;
*Se existir uma mensagem de erro ou outra informação, quer nos logs do PHP ou do servidor web, inclua uma cópia dessa informação no relatório. Se for possível, ligar o modo “debug” na página configuração do Administrador com o objectivo de obter a melhor mensagem de erro possível.&lt;br /&gt;
&lt;br /&gt;
*Os ecrãs capturados podem também ser uma grande ajuda, mas devem ser acompanhados de uma descrição.&lt;br /&gt;
*Fornecer as informações relativas à configuração do sistema operativo, base de dados, etc. Se o espaço disponível na secção Ambiente (Enviroment), pode ser feita a continuação na secção da descrição. Algumas das informações que neste caso podem ser relevantes, são:&lt;br /&gt;
&lt;br /&gt;
**Sistema operativo do servidor e número de versão.&lt;br /&gt;
**Tipo de servidor e número de versão.&lt;br /&gt;
**Versão de PHP usada (e se é usado algum optimizador).&lt;br /&gt;
**Tipo de base de dados e número de versão.&lt;br /&gt;
**Tipo de sistema operativo do cliente e número de versão.&lt;br /&gt;
**Tipo e número de versão do browser utilizado.&lt;br /&gt;
&lt;br /&gt;
*Não é necessário fornecer sempre todos os dados. Por exemplo, se for um problema de layout, será só necessário fornecer informação sobre o sistema operativo e browsers utilizados pelos clientes. Ficam aqui alguns exemplos:&lt;br /&gt;
**Detecção de um erro na última versão do HEAD do Moodle, a correr em PHP5.1.2/Apache 2.2.3 em Linux. A base de dados utilizada é Postgres 8.1.&lt;br /&gt;
**Existe um problema de renderização, utilizando o Internet Explorer 6.0 em Windows XP.&lt;br /&gt;
&lt;br /&gt;
Em resumo, deve fazer-se uma reunião de facto suficientemente boa para que outros utilizadores possam duplicar o problema.&lt;br /&gt;
&lt;br /&gt;
Aqui estão alguns exemplos de boas práticas na submissão de relatórios de erro: MDL-6030, MDL-5688, MDL-12505.&lt;br /&gt;
Muitas vezes a parte difícil neste processo, não consiste na reparação do erro, mas sim na reprodução do mesmo por parte do programador. O programador tem assim de poder conseguir reproduzir o erro submetido, caso contrário nunca o poderá resolver.&lt;br /&gt;
&lt;br /&gt;
Bons relatórios são os que contêm informação o mais detalhada e especifica possível. &lt;br /&gt;
Por exemplo, um relatório de erro que contenha apenas “ O feed RSS não suporta UTF-8” não ajuda em nada. O programador sabe que o UTF-8 e os RSS feeds são compatíveis. Além do mais o programador não faz ideia do que o utilizador vê no seu computador e porque submeteu o erro. Neste caso terá de ser dispendido mais tempo e esforço na determinação de qual será o problema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O processo do Tracker ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Acompanhamento de novas matérias e melhorias&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Qualquer um com uma conta no Tracker pode acompanhar matérias que são submetidas. Acima estão descritas boas práticas sobre como escrever relatórios de erro de boa qualidade. É importante procurar no Tracker para determinar se o seu problema ou sugestão para a melhoria foram já objecto de relatório. Caso exista a intenção de adicionar mais informação (use a função do “comment”), voto para a edição, ou acompanhar para ver mais tarde (watch it).&lt;br /&gt;
Receberá depois um email cada vez que for subscrito um novo erro novo ou forem feitas actualizações aos erros que foram relatados. Será também enviada uma notificação quando são feitas actualizações aos erros que foram marcados para serem acompanhados.&lt;br /&gt;
&lt;br /&gt;
Podem também ser monitorizados ou acompanhados, erros submetidos por outros utilizadores. Para fazer isto, abra o erro em questão, depois seleccione “Watch it” que se encontra na parte esquerda do painel de navegação. Para que outras pessoas sejam adicionadas para acompanhar problemas submetidos por nós, seleccionar a opção “Watching” que se encontra na parte esquerda do painel de navegação. Essas pessoas serão depois notificadas por correio electrónico cada vez que houver uma actualização ao problema.&lt;br /&gt;
&lt;br /&gt;
O Tracker fornece uma facilidade fazer o link entre matérias submetidas. Qualquer usuário registado no Tracker pode ligar matérias. Os tipos de ligação múltipla estão definidos no sistema; será solicitada a escolha de um tipo ao ser feito o link de erros. Veja [nome da secção da inserção] para lista detalhada de tipos da ligação.&lt;br /&gt;
&lt;br /&gt;
Vote em erros que você quer ver abordados no Moodle. Todos os utilizadores podem votar. Para votar para um erro específico, seleccione o erro, seleccionando depois “Vote for it” do painel de navegação esquerdo. Os programadores podem considerar o número dos votos que um erro tem para fazer a escolha entre dois ou mais erros.&lt;br /&gt;
&lt;br /&gt;
O painel (Dashboard) do Tracker é flexível e pode ser modificado conforme as áreas de interesse de cada utilizador. Para mais instruções acerca da configuração do Painel do Tracker clicar aqui.&lt;br /&gt;
O Issue Navigator do Tracker é a ferramenta que permite encontrar e filtrar erros. Para mais instruções sobre o Issue Navigator clicar aqui.&lt;br /&gt;
&lt;br /&gt;
A função de pesquisa rápida (Quick Search) do Tracker está explicada aqui.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolvendo assuntos no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Só os programadores e responsáveis pelos testes ao Moodle têm permissão para mudar o estado dos erros no Tracker para “resolvido” ou “fechado” (&amp;quot;resolved&amp;quot; or &amp;quot;closed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Este é o processo geral que o programador irá seguir, quando mudar o estado de um assunto referido no Tracker:&lt;br /&gt;
#Os assuntos são automaticamente atribuídos no momento da sua criação tendo como base o componente a que são relativos; caso os programadores ou os responsáveis do componente entendam, o assunto pode ser novamente atribuído a outro módulo&lt;br /&gt;
#Os programadores reparam, modificam ou adicionam código e fazzem a verificação do CVS. O número que identifica o assunto no Tracker faz automaticamente a ligação entre a mudanças no CVS ao Tracker.&lt;br /&gt;
#Os patchs estão anexos aos assuntos no Tracker para que possam ser analisados e depois possivelmente adicionados no CVS. &lt;br /&gt;
#Devem ser acrescentados comentários no Tracker com a descrição da reparação feita. O estado do erro é depois alterado para Resolvido (Resolved).&lt;br /&gt;
#O programador deve indicar em que versão do Moodle a alteração irá ser incluída usando o Fix Version/s. Deve depois ser indicado qual o ramo ou ramos nos quais a alteração foi verificada&lt;br /&gt;
#A única excepção que pode existir na alteração de estado de um erro para Resolvido (Resolved) dá-se no caso de o programador entender que não existe valor em testar o assunto resolvido. Neste caso a alteração de estado será para Fechado (Closed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testes á plataforma&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Todos os utilizadores são incentivados a serem participantes activos no que diz respeito a testar o Moodle. Qualquer pessoa que tenha um registo no Tracker pode registar, ver, comentar, votar, e acompanhar erros. Caso existam alguns erros, problemas, ideias para aperfeiçoamentos, o se existir o desejo de que alguma funcionalidade seja adicionada ao Moodle, o utilizador deve reportar isso no Tracker.&lt;br /&gt;
&lt;br /&gt;
Foi formalizado um grupo de pessoas responsáveis por fazer testes no Tracker que são responsáveis por verificar o rigor das alterações feitas pelos programadores. Este grupo de pessoas tem responsabilidades e autoridade no Tracker que vão além do utilizador comum. Além disto são utilizadores com grande conhecimento de toda a estrutura do Moodle, sendo também membros muito activos na comunidade Moodle. É claro que estes devem ter um nível suficiente em termos de atributos e conhecimentos necessários para os testes que realizam – a experiência é muito importante – mas também não pode ser esquecido que existem sempre utilizadores na comunidade dispostos a ajudar em qualquer eventualidade. Se quiser fazer parte da Equipa de Testes do Moodle, manifeste a sua intenção reportando-a no Tracker. Reporte a sua intenção em Moodle.org Sites Tracker project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste de erros no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Este é o processo que a equipa de testes do Moodle deve seguir para alterar o estado dos erros de resolvidos (resolved) para fechados (closed).&lt;br /&gt;
&lt;br /&gt;
*Os membros desta equipa testam os erros que se encontram no estado Resolvido (Resolved). Foram criados filtros global baseados em futuros lançamentos (ex. 1.9 Resolvido) para que a identificação seja feita de uma maneira mais facilitada.&lt;br /&gt;
*Usar o campo QA Assignee para fazer a identificação como inspector (membro responsável pelos testes) do erro.&lt;br /&gt;
*Uma boa ideia será subscrever todos os tópicos relativos aos erros que são testados (ex. todos os erros em que nós fomos responsáveis pela fase de testes).&lt;br /&gt;
*Caso o erro passar a fase de testes, alterar o estado do erro usando o botão “Fechar Assunto” (“Close Issue”). Devem ser adicionados comentários com a descrição do método usado para fazer os testes, todas as incorrecções encontradas, etc.&lt;br /&gt;
*Caso o erro não passe a fase de testes ou se houver o sentimento de que o erro não foi completamente reparado, deve fazer-se a alteração do seu estado através do botão “Reabrir Assunto” (“Reopen Issue”) de forma a este ficar novamente com a indicação que não está completamente resolvido. Certificar-se de que o problema é entregue ao programador correcto. Trabalhar com o programador no sentido de ser encontrada uma resolução que seja acertada para ambas as partes.&lt;br /&gt;
&lt;br /&gt;
*Uma versão será dada como pronta quando todos os erros a ela relativos forem dados como estando fechados.&lt;br /&gt;
*Todos os erros resolvidos devem ser testados. Erros que no final tenham a indicação de reparados (fixed) representam erros sujo o seu código foi actualizado, e provavelmente representaram um maior desafio do que os erros que tenham no final a indicação de sendo duplicados, que não constituem um erro, ou que foi conseguido reproduzir esse erro. É aconselhável a certificação de que os erros foram finalizados com a indicação correcta. Infelizmente não é fácil alterar o código quando ele é posto no Tracker ( a única solução será reabrir e depois fechar o tópico).&lt;br /&gt;
&lt;br /&gt;
*Os processos de teste devem ser discutidos sem receios com os programadores afectos ao erro. Muitas vezes um comentário chama logo a atenção do programador enquanto são notificados de todas as mudanças.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrição detalhada de todos os grupos e campos do Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Em cada campo no Tracker é sempre apresentada uma pequena explicação.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projecto&#039;&#039;&#039; (Project) – Campo obrigatório - o Tracker é constituído por vários projectos. No presente existem 3: &#039;moodle&#039;, &#039;moodle.org sites&#039; and &#039;Non-core contributed modules&#039;. Escolha ‘moodle’ para erros/assuntos relacionados com o software moodle; escolha &#039;moodle.org sites&#039; para erros/assuntos relacionados com tracker.moodle.org, docs.moodle.org, demo.moodle.org, download.moodle.org, ou moodle.org; escolha &#039;Non-core contributed modules&#039; para erros/assuntos relacionados com módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipo de assunto&#039;&#039;&#039; (Issue Type) - Campo obrigatório – os erros são classificados segundo as seguintes categorias:&lt;br /&gt;
*Erro (bug)- um problema que afecta o funcionamento correcto do Moodle.&lt;br /&gt;
*Melhoramento (Improvement) -  uma melhoria a uma funcionalidade já existente no Moodle&lt;br /&gt;
*Nova funcionalidade (New Feature) – uma nova funcionalidade que tem ainda de ser desenvolvida&lt;br /&gt;
*Tarefa (Task) – uma tarefa que necessita de ser completada. Usualmente refere-se a trabalho que tem de ser executado fora do âmbito do produto.&lt;br /&gt;
*Sub-tarefa (Sub-task) – assuntos que por vezes são divididos em assuntos mais pequenos &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sumário&#039;&#039;&#039; (Summary) - Campo obrigatório – uma descrição breve e concisa do problema.&lt;br /&gt;
&lt;br /&gt;
Nível de segurança (Security Level) – Campo opcional. Indica se o erro ou modificação tem implicações de segurança para o Moodle. Erros que tenham seriam implicações a nível de segurança, são reservados para a equipa de segurança do Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prioridade&#039;&#039;&#039; (Priority) – os erros têm os seguintes níveis de prioridade:&lt;br /&gt;
*Blocker – bloqueia o desenvolvimento e/ou trabalho de teste, a produção não pode continuar. &lt;br /&gt;
*Critical - Crashes, perdas de informação, fugas sérias a nível de memória. &lt;br /&gt;
*Major – perda importante de funcionalidade. &lt;br /&gt;
*Minor – perda de uma funcionalidade acessória, ou outro problema de fácil resolução&lt;br /&gt;
*Trivial – problema de nível cosmético como por exemplo erros ortográficos ou texto desalinhado &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Componentes&#039;&#039;&#039; (Components) – Campo obrigatório. Seleccionar a área do Moodle afectada pelo erro. Em caso de incerteza, seleccionar “Unknown”.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versão Afectada&#039;&#039;&#039; (Affects Version) – Campo obrigatório. Esta é a versão do Moodle na qual o erro foi encontrado. Esta informação é inserida pela pessoa que reporta o erro, e normalmente apenas uma versão é apontada. Inserir a versão actual no momento em que se reporta o melhoramento, tarefa ou nova funcionalidade ajudará avaliar o estado do produto quando o pedido foi feito.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Afecto a&#039;&#039;&#039; (Assigned To) – Esta será a pessoa a que irá ser responsável pela resolução do problema. Este campo irá ser preenchido por programadores ou equipas responsáveis por módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reportador&#039;&#039;&#039; (Reporter) – Pessoa que reporta o erro. Este campo é automaticamente preenchido pelo Tracker. &lt;br /&gt;
Ambiente (Environment) – Especifica qual o sistema operative, plataforma de software e/ou especificações de hardware, se aplicáveis ao erro em questão.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Descrição&#039;&#039;&#039; (Description) – Uma descrição complete e concise do problema ou melhoramento. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Base de dados&#039;&#039;&#039; (Database) – Campo opcional. Se for aplicável ao erro, identifica o tipo de base de dados utilizado. &lt;br /&gt;
URL – Campo opcional. Se possivel, fornecer o endereço URL que demonstre um exemplo do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Responsável pelos testes&#039;&#039;&#039; (QA Assignee) – Usado para designer o responsável que irá fazer os testes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versões reparadas&#039;&#039;&#039; (Fixed Version/s) – Versão do Moodle onde o erro esteve ou irá ser reparado. Basicamente deverá ser pensado em que notas de lançamento irão aparecer as alterações. Este campo é normalmente completado pelo programador quando o erro é dado como resolvido, ou então pelas equipas de desenvolvimento que afectaram os erros a determinada versão. Normalmente apenas uma versão é referida neste campo. Temos assim a indicação de qual a primeira versão onde a alteração irá ser visível. &lt;br /&gt;
&lt;br /&gt;
Exemplo: depois da versão 1.9 ser lançada, ser for reparado um erro na versão MOODLE_19_STABLE, ela irá ser marcada como reparada na versão 1.9.1. Se a reparação for a uma versão anterior, como por exemplo MOODLE_18_STABLE, deverá também ser adicionada na versão seguinte 1.8.x .&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro como tudo menos “Reparado” (Não possível de reproduzir, Não Reparado, etc) deixar este campo em branco.&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro anteriormente duplicado, deve ser criado um link para o duplicado do erro.&lt;br /&gt;
&lt;br /&gt;
Este campo é usado automaticamente para construir as notas de lançamento da versão (ver   http://tracker.moodle.org/browse/MDL).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anexos&#039;&#039;&#039; (Attachment) - Opcional. Anexar um ficheiro que possa ajudar os programadores e responsáveis por testes a perceber melhor qual o erro. O tamanho máximo do anexo é de 512 Kb. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comentário&#039;&#039;&#039; (Comment) – O campo destinado aos comentários contém um registo detalhado de  todas as alterações feitas a este erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolution&#039;&#039;&#039; – Este campo apenas está disponível no momento de resolver ou fechar o erro. Deve então ser especificado no cógigo o modo como foi feita a resolução do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reparado&#039;&#039;&#039; (Fixed) – O erro foi reparado; o código irá ser alterado no sistema CVS. Este código de resolução deve ser usado apenas quando forem feitas alterações ao código do Moodle.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Impossível de reparar&#039;&#039;&#039; (Won&#039;t Fix) – O problema descrito diz respeito a um assunto que nunca irá ser reparado.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Não é erro&#039;&#039;&#039; (Not a bug) – Não se trata de um erro; foi erradamente reportado. Use este código se o erro foi anteriormente reportado e reparado numa versão anterior do Moodle. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duplicado&#039;&#039;&#039; (Duplicate) – O problema é duplicado de outro problema já existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompleto&#039;&#039;&#039; (Incomplete) – É necessária mais informação para a compreensão do problema. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Impossível de reproduzir o erro&#039;&#039;&#039; (Can&#039;t Reproduce) – Todas as tentativas de reproduzir o erro falharam, ou não existia suficiente informação para que fosse possível a sua reprodução. A leitura do código não fornece pistas sobre a razão porque existe determinado comportamento. Se entretanto mais informações relevantes aparecerem, o assunto será novamente reaberto. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adiado&#039;&#039;&#039; (Deferred) – A resolução do problema será adiada para uma futura versão que será lançada. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grupos do Tracker e Permissões ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilizadores normais [groupname=jira-user] - Este é o grupo por defeito. As novas contas de utilizador são colocadas neste grupo na altura da sua criação, e os utilizadores devem ser membros deste grupo para poderem submeter relatórios no Tracker. Os membros deste grupo podem pesquisar erros, criar erros novos, comentar erros, criar anexos, criar sub-tarefas, criar filtros, subscrever erros, e votar em erros. Os membros deste grupo podem também resolver erros, que é primeiramente uma maneira de fechar os erros que são já não relevantes (por exemplo duplicados, ou reportados por engano). Os utilizadores padrão podem configurar seu Tracker que o espaço de trabalho usando o botão &amp;quot;Configure your Issue Navigator&amp;quot;. Esta característica permite que os utilizadores vejam as suas subscrições e listas de votos e controlem preferências, perfil, e senhas relativas ao Tracker.&lt;br /&gt;
&lt;br /&gt;
Programadores [groupname=jira-developer] - Os programadores podem fazer tudo o que utilizadores normais podem fazer. Além podem duplicar erros, subscrever erros, editar erros, ligar erros, e atribuir erros. Os membros deste grupo podem também usar a função Bulk  Edit que permite a actualização bulk de múltiplos erros.&lt;br /&gt;
&lt;br /&gt;
Responsáveis por testes [groupname=moodle-testers] – Os responsáveis por executar testes, podem fazer tudo o que os programadores fazem.&lt;br /&gt;
&lt;br /&gt;
Grupos de segurança do Moodle [groupname=moodle-security] – Programadores acreditados e  administradores que necessitam de trabalhar no sentido de desenvolver competências na área de segurança. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipos de ligações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Estão disponíveis os seguintes tipos de ligações:&lt;br /&gt;
*Duplicados (duplicates) – duplicados são inevitáveis num projecto com a dimensão do Moodle. Ocorrem quando um utilizador reporta inconscientemente um erro relativo a um problema que já existe. Usa-se assim esta ligação para fazer a conexão entre o outro problema que estará descrito de modo mais compreensivo. Todos erros duplicados devem ser ligados.&lt;br /&gt;
*Bloqueador (blockers) – usar esta ligação para a identificação de problemas que estão a bloquear a reparação de outros. &lt;br /&gt;
*Clonadores (cloners) –nalguns casos um erros é propositadamente duplicado com o objectivo de reparar outro ramo de código – este sistema quase nunca é usado no projecto Moodle. &lt;br /&gt;
*Dependência (dependency) – muitas vezes a reparação de uma falha está dependente de outra falha que deverá ser resolvida primeiro. Este tipo de ligações serve assim para definir a ordem pela qual deveram ser resolvidos erros que são dependentes entre si. &lt;br /&gt;
*Correlações (relates) – é usado para identificar um erros que pode de alguma maneira estar relacionado com outro erro existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Não receie ligar os erros entre si&#039;&#039;&#039;. As ligações são bidireccionais o que significa que existe um conceito que prevê os dois sentidos da ligação – isto afecta a maneira como os erros são mostrados. Esta é  a razão pela qual de poderá ver “bloqueado /está bloqueado por” ou “duplicado/é duplicado de” na lista de ligações “Link Issue”. Não precisa de existir muita preocupação em colocar o tipo correcto de ligação, uma vez que todos funcionam de maneira semenhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
[[Category:Professor]]&lt;br /&gt;
[[Category:Administrador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Tracker]]&lt;br /&gt;
[[es:Sistema de bugs]]&lt;br /&gt;
[[fr:Traqueur de bogues]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2531</id>
		<title>Tracker</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2531"/>
		<updated>2008-05-22T11:32:23Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tracker – Sistema de gestão de bugs do Moodle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A detecção e reparação de bugs constituem um processo contínuo de controlo de qualidade. No caso do Moodle, esta detecção e reparação de bugs, por ser uma plataforma open-source, está aberta a todos quantos queiram participar, constituindo este facto uma vantagem em relação às plataformas proprietárias. O sistema que permite fazer esta detecção e posterior correcção de erros associados à plataforma Moodle chama-se Tracker.&lt;br /&gt;
O ponto interessante do open-source está no facto em que todos os utilizadores interessados podem ajudar de várias formas, quer no código ou na detecção de erros, com o objectivo de trabalhar num produto que seja do agrado da comunidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login no Tracker ==&lt;br /&gt;
&lt;br /&gt;
Caso seja um novo utilizador do Tracker, o processo de registo poderá ser realizado aqui. Recomenda-se aqui que o username usado seja o mesmo do site moode.org. &lt;br /&gt;
Caso a conta de acesso ao Tracker não funcione, a mesma pode ser recuperada aqui: http://tracker.moodle.org&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resumo: Como reportar um erro, um melhoramento, ou um pedido de funcionalidade&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Fazer o login na homepage do Moodle Tracker.&lt;br /&gt;
#Seleccionar “Create New Issue” no menu baixo do logótipo do Moodle Tracker.&lt;br /&gt;
#No passo 1, no menu desdobrável seleccionar o “Issue type”: Erro (bug), Nova Funcionalidade (New Feature), Tarefa (Task) ou Melhoramento (Improvement).&lt;br /&gt;
#No passo 2, será visível várias áreas desdobráveis em branco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Resumo (Summary): Breve descrição do problema. O objectivo aqui é tentar fazer com que a descrição seja o mais precisa possível. A simples expressão do “Não funciona” não se revela de grande importância. È importante também pensar as palavras-chave que identificam o problema, para que o problema seja rapidamente encontrado pelos utilizadores pesquisarem pelo mesmo erro.&lt;br /&gt;
&lt;br /&gt;
*Componentes (Components): usar a teclas Ctrl e com um click do rato seleccionar uma ou mais áreas do Moodle. Por exemplo, pode ser encontrado um erro numa funcionalidade que tenha impacto em vários módulos.&lt;br /&gt;
&lt;br /&gt;
*Seleccionar a versão do Moodle, e caso não esteja listada por informação relativa á versão na descrição.&lt;br /&gt;
&lt;br /&gt;
*O Ambiente (Enviroment) é para a informações relativas ao sistema operativo e outras informações. Ver guias gerais mais abaixo.&lt;br /&gt;
*A Descrição (Descritpion) informa-nos acerca do assunto tratado. Informações sobre este tópico, mais abaixo.&lt;br /&gt;
&lt;br /&gt;
*Base de Dados (Database), se não estiver na lista, por a informação relativa no campo Ambiente(Enviroment)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Guia geral para a submissão de relatórios&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um bom relatório deve incluir:&lt;br /&gt;
*Resumo do problema em uma ou 2 frases&lt;br /&gt;
*Descrição concreta e concisa do problema ou melhoramento em causa&lt;br /&gt;
*Deve ser também feita uma descrição passo-a-passo da sequência de passos a fazer com o objectivo de reproduzir o erro. Se possível, indicar o endereço para o que o programador consiga ver o erro apenas com um click.&lt;br /&gt;
*Resultados actuais: indicar o que é que a aplicação faz após os passos serem executados&lt;br /&gt;
*Resultados esperados: explicitar os resultados que são esperados, caso o erro não estivesse presente. É importante que a explicação seja bastante pormenorizada pois isso ajudará na resolução do erro, bem como no interface que poderá ser ajustado de forma a ser mais amigável.&lt;br /&gt;
&lt;br /&gt;
Se possível, incluir informação adicional que possa ser útil ao programador:&lt;br /&gt;
*Versão do Moodle (se a versão não se encontrar no menu desdobrável no topo do formulário, adicionar essa informação na descrição)&lt;br /&gt;
*Se existir uma mensagem de erro ou outra informação, quer nos logs do PHP ou do servidor web, inclua uma cópia dessa informação no relatório. Se for possível, ligar o modo “debug” na página configuração do Administrador com o objectivo de obter a melhor mensagem de erro possível.&lt;br /&gt;
&lt;br /&gt;
*Os ecrãs capturados podem também ser uma grande ajuda, mas devem ser acompanhados de uma descrição.&lt;br /&gt;
*Fornecer as informações relativas à configuração do sistema operativo, base de dados, etc. Se o espaço disponível na secção Ambiente (Enviroment), pode ser feita a continuação na secção da descrição. Algumas das informações que neste caso podem ser relevantes, são:&lt;br /&gt;
&lt;br /&gt;
**Sistema operativo do servidor e número de versão.&lt;br /&gt;
**Tipo de servidor e número de versão.&lt;br /&gt;
**Versão de PHP usada (e se é usado algum optimizador).&lt;br /&gt;
**Tipo de base de dados e número de versão.&lt;br /&gt;
**Tipo de sistema operativo do cliente e número de versão.&lt;br /&gt;
**Tipo e número de versão do browser utilizado.&lt;br /&gt;
&lt;br /&gt;
*Não é necessário fornecer sempre todos os dados. Por exemplo, se for um problema de layout, será só necessário fornecer informação sobre o sistema operativo e browsers utilizados pelos clientes. Ficam aqui alguns exemplos:&lt;br /&gt;
**Detecção de um erro na última versão do HEAD do Moodle, a correr em PHP5.1.2/Apache 2.2.3 em Linux. A base de dados utilizada é Postgres 8.1.&lt;br /&gt;
**Existe um problema de renderização, utilizando o Internet Explorer 6.0 em Windows XP.&lt;br /&gt;
&lt;br /&gt;
Em resumo, deve fazer-se uma reunião de facto suficientemente boa para que outros utilizadores possam duplicar o problema.&lt;br /&gt;
&lt;br /&gt;
Aqui estão alguns exemplos de boas práticas na submissão de relatórios de erro: MDL-6030, MDL-5688, MDL-12505.&lt;br /&gt;
Muitas vezes a parte difícil neste processo, não consiste na reparação do erro, mas sim na reprodução do mesmo por parte do programador. O programador tem assim de poder conseguir reproduzir o erro submetido, caso contrário nunca o poderá resolver.&lt;br /&gt;
&lt;br /&gt;
Bons relatórios são os que contêm informação o mais detalhada e especifica possível. &lt;br /&gt;
Por exemplo, um relatório de erro que contenha apenas “ O feed RSS não suporta UTF-8” não ajuda em nada. O programador sabe que o UTF-8 e os RSS feeds são compatíveis. Além do mais o programador não faz ideia do que o utilizador vê no seu computador e porque submeteu o erro. Neste caso terá de ser dispendido mais tempo e esforço na determinação de qual será o problema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O processo do Tracker ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Acompanhamento de novas matérias e melhorias&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Qualquer um com uma conta no Tracker pode acompanhar matérias que são submetidas. Acima estão descritas boas práticas sobre como escrever relatórios de erro de boa qualidade. É importante procurar no Tracker para determinar se o seu problema ou sugestão para a melhoria foram já objecto de relatório. Caso exista a intenção de adicionar mais informação (use a função do “comment”), voto para a edição, ou acompanhar para ver mais tarde (watch it).&lt;br /&gt;
Receberá depois um email cada vez que for subscrito um novo erro novo ou forem feitas actualizações aos erros que foram relatados. Será também enviada uma notificação quando são feitas actualizações aos erros que foram marcados para serem acompanhados.&lt;br /&gt;
&lt;br /&gt;
Podem também ser monitorizados ou acompanhados, erros submetidos por outros utilizadores. Para fazer isto, abra o erro em questão, depois seleccione “Watch it” que se encontra na parte esquerda do painel de navegação. Para que outras pessoas sejam adicionadas para acompanhar problemas submetidos por nós, seleccionar a opção “Watching” que se encontra na parte esquerda do painel de navegação. Essas pessoas serão depois notificadas por correio electrónico cada vez que houver uma actualização ao problema.&lt;br /&gt;
&lt;br /&gt;
O Tracker fornece uma facilidade fazer o link entre matérias submetidas. Qualquer usuário registado no Tracker pode ligar matérias. Os tipos de ligação múltipla estão definidos no sistema; será solicitada a escolha de um tipo ao ser feito o link de erros. Veja [nome da secção da inserção] para lista detalhada de tipos da ligação.&lt;br /&gt;
&lt;br /&gt;
Vote em erros que você quer ver abordados no Moodle. Todos os utilizadores podem votar. Para votar para um erro específico, seleccione o erro, seleccionando depois “Vote for it” do painel de navegação esquerdo. Os programadores podem considerar o número dos votos que um erro tem para fazer a escolha entre dois ou mais erros.&lt;br /&gt;
&lt;br /&gt;
O painel (Dashboard) do Tracker é flexível e pode ser modificado conforme as áreas de interesse de cada utilizador. Para mais instruções acerca da configuração do Painel do Tracker clicar aqui.&lt;br /&gt;
O Issue Navigator do Tracker é a ferramenta que permite encontrar e filtrar erros. Para mais instruções sobre o Issue Navigator clicar aqui.&lt;br /&gt;
&lt;br /&gt;
A função de pesquisa rápida (Quick Search) do Tracker está explicada aqui.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolvendo assuntos no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Só os programadores e responsáveis pelos testes ao Moodle têm permissão para mudar o estado dos erros no Tracker para “resolvido” ou “fechado” (&amp;quot;resolved&amp;quot; or &amp;quot;closed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Este é o processo geral que o programador irá seguir, quando mudar o estado de um assunto referido no Tracker:&lt;br /&gt;
#Os assuntos são automaticamente atribuídos no momento da sua criação tendo como base o componente a que são relativos; caso os programadores ou os responsáveis do componente entendam, o assunto pode ser novamente atribuído a outro módulo&lt;br /&gt;
#Os programadores reparam, modificam ou adicionam código e fazzem a verificação do CVS. O número que identifica o assunto no Tracker faz automaticamente a ligação entre a mudanças no CVS ao Tracker.&lt;br /&gt;
#Os patchs estão anexos aos assuntos no Tracker para que possam ser analisados e depois possivelmente adicionados no CVS. &lt;br /&gt;
#Devem ser acrescentados comentários no Tracker com a descrição da reparação feita. O estado do erro é depois alterado para Resolvido (Resolved).&lt;br /&gt;
#O programador deve indicar em que versão do Moodle a alteração irá ser incluída usando o Fix Version/s. Deve depois ser indicado qual o ramo ou ramos nos quais a alteração foi verificada&lt;br /&gt;
#A única excepção que pode existir na alteração de estado de um erro para Resolvido (Resolved) dá-se no caso de o programador entender que não existe valor em testar o assunto resolvido. Neste caso a alteração de estado será para Fechado (Closed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testes á plataforma&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Todos os utilizadores são incentivados a serem participantes activos no que diz respeito a testar o Moodle. Qualquer pessoa que tenha um registo no Tracker pode registar, ver, comentar, votar, e acompanhar erros. Caso existam alguns erros, problemas, ideias para aperfeiçoamentos, o se existir o desejo de que alguma funcionalidade seja adicionada ao Moodle, o utilizador deve reportar isso no Tracker.&lt;br /&gt;
&lt;br /&gt;
Foi formalizado um grupo de pessoas responsáveis por fazer testes no Tracker que são responsáveis por verificar o rigor das alterações feitas pelos programadores. Este grupo de pessoas tem responsabilidades e autoridade no Tracker que vão além do utilizador comum. Além disto são utilizadores com grande conhecimento de toda a estrutura do Moodle, sendo também membros muito activos na comunidade Moodle. É claro que estes devem ter um nível suficiente em termos de atributos e conhecimentos necessários para os testes que realizam – a experiência é muito importante – mas também não pode ser esquecido que existem sempre utilizadores na comunidade dispostos a ajudar em qualquer eventualidade. Se quiser fazer parte da Equipa de Testes do Moodle, manifeste a sua intenção reportando-a no Tracker. Reporte a sua intenção em Moodle.org Sites Tracker project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste de erros no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Este é o processo que a equipa de testes do Moodle deve seguir para alterar o estado dos erros de resolvidos (resolved) para fechados (closed).&lt;br /&gt;
&lt;br /&gt;
*Os membros desta equipa testam os erros que se encontram no estado Resolvido (Resolved). Foram criados filtros global baseados em futuros lançamentos (ex. 1.9 Resolvido) para que a identificação seja feita de uma maneira mais facilitada.&lt;br /&gt;
*Usar o campo QA Assignee para fazer a identificação como inspector (membro responsável pelos testes) do erro.&lt;br /&gt;
*Uma boa ideia será subscrever todos os tópicos relativos aos erros que são testados (ex. todos os erros em que nós fomos responsáveis pela fase de testes).&lt;br /&gt;
*Caso o erro passar a fase de testes, alterar o estado do erro usando o botão “Fechar Assunto” (“Close Issue”). Devem ser adicionados comentários com a descrição do método usado para fazer os testes, todas as incorrecções encontradas, etc.&lt;br /&gt;
*Caso o erro não passe a fase de testes ou se houver o sentimento de que o erro não foi completamente reparado, deve fazer-se a alteração do seu estado através do botão “Reabrir Assunto” (“Reopen Issue”) de forma a este ficar novamente com a indicação que não está completamente resolvido. Certificar-se de que o problema é entregue ao programador correcto. Trabalhar com o programador no sentido de ser encontrada uma resolução que seja acertada para ambas as partes.&lt;br /&gt;
&lt;br /&gt;
*Uma versão será dada como pronta quando todos os erros a ela relativos forem dados como estando fechados.&lt;br /&gt;
*Todos os erros resolvidos devem ser testados. Erros que no final tenham a indicação de reparados (fixed) representam erros sujo o seu código foi actualizado, e provavelmente representaram um maior desafio do que os erros que tenham no final a indicação de sendo duplicados, que não constituem um erro, ou que foi conseguido reproduzir esse erro. É aconselhável a certificação de que os erros foram finalizados com a indicação correcta. Infelizmente não é fácil alterar o código quando ele é posto no Tracker ( a única solução será reabrir e depois fechar o tópico).&lt;br /&gt;
&lt;br /&gt;
*Os processos de teste devem ser discutidos sem receios com os programadores afectos ao erro. Muitas vezes um comentário chama logo a atenção do programador enquanto são notificados de todas as mudanças.&lt;br /&gt;
Descrição detalhada de todos os grupos e campos do Tracker&lt;br /&gt;
&lt;br /&gt;
Em cada campo no Tracker é sempre apresentada uma pequena explicação.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projecto&#039;&#039;&#039; (Project) – Campo obrigatório - o Tracker é constituído por vários projectos. No presente existem 3: &#039;moodle&#039;, &#039;moodle.org sites&#039; and &#039;Non-core contributed modules&#039;. Escolha ‘moodle’ para erros/assuntos relacionados com o software moodle; escolha &#039;moodle.org sites&#039; para erros/assuntos relacionados com tracker.moodle.org, docs.moodle.org, demo.moodle.org, download.moodle.org, ou moodle.org; escolha &#039;Non-core contributed modules&#039; para erros/assuntos relacionados com módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipo de assunto&#039;&#039;&#039; (Issue Type) - Campo obrigatório – os erros são classificados segundo as seguintes categorias:&lt;br /&gt;
*Erro (bug)- um problema que afecta o funcionamento correcto do Moodle.&lt;br /&gt;
*Melhoramento (Improvement) -  uma melhoria a uma funcionalidade já existente no Moodle&lt;br /&gt;
*Nova funcionalidade (New Feature) – uma nova funcionalidade que tem ainda de ser desenvolvida&lt;br /&gt;
*Tarefa (Task) – uma tarefa que necessita de ser completada. Usualmente refere-se a trabalho que tem de ser executado fora do âmbito do produto.&lt;br /&gt;
*Sub-tarefa (Sub-task) – assuntos que por vezes são divididos em assuntos mais pequenos &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sumário&#039;&#039;&#039; (Summary) - Campo obrigatório – uma descrição breve e concisa do problema.&lt;br /&gt;
&lt;br /&gt;
Nível de segurança (Security Level) – Campo opcional. Indica se o erro ou modificação tem implicações de segurança para o Moodle. Erros que tenham seriam implicações a nível de segurança, são reservados para a equipa de segurança do Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prioridade&#039;&#039;&#039; (Priority) – os erros têm os seguintes níveis de prioridade:&lt;br /&gt;
*Blocker – bloqueia o desenvolvimento e/ou trabalho de teste, a produção não pode continuar. &lt;br /&gt;
*Critical - Crashes, perdas de informação, fugas sérias a nível de memória. &lt;br /&gt;
*Major – perda importante de funcionalidade. &lt;br /&gt;
*Minor – perda de uma funcionalidade acessória, ou outro problema de fácil resolução&lt;br /&gt;
*Trivial – problema de nível cosmético como por exemplo erros ortográficos ou texto desalinhado &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Componentes&#039;&#039;&#039; (Components) – Campo obrigatório. Seleccionar a área do Moodle afectada pelo erro. Em caso de incerteza, seleccionar “Unknown”.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versão Afectada&#039;&#039;&#039; (Affects Version) – Campo obrigatório. Esta é a versão do Moodle na qual o erro foi encontrado. Esta informação é inserida pela pessoa que reporta o erro, e normalmente apenas uma versão é apontada. Inserir a versão actual no momento em que se reporta o melhoramento, tarefa ou nova funcionalidade ajudará avaliar o estado do produto quando o pedido foi feito.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Afecto a&#039;&#039;&#039; (Assigned To) – Esta será a pessoa a que irá ser responsável pela resolução do problema. Este campo irá ser preenchido por programadores ou equipas responsáveis por módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reportador&#039;&#039;&#039; (Reporter) – Pessoa que reporta o erro. Este campo é automaticamente preenchido pelo Tracker. &lt;br /&gt;
Ambiente (Environment) – Especifica qual o sistema operative, plataforma de software e/ou especificações de hardware, se aplicáveis ao erro em questão.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Descrição&#039;&#039;&#039; (Description) – Uma descrição complete e concise do problema ou melhoramento. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Base de dados&#039;&#039;&#039; (Database) – Campo opcional. Se for aplicável ao erro, identifica o tipo de base de dados utilizado. &lt;br /&gt;
URL – Campo opcional. Se possivel, fornecer o endereço URL que demonstre um exemplo do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Responsável pelos testes&#039;&#039;&#039; (QA Assignee) – Usado para designer o responsável que irá fazer os testes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versões reparadas&#039;&#039;&#039; (Fixed Version/s) – Versão do Moodle onde o erro esteve ou irá ser reparado. Basicamente deverá ser pensado em que notas de lançamento irão aparecer as alterações. Este campo é normalmente completado pelo programador quando o erro é dado como resolvido, ou então pelas equipas de desenvolvimento que afectaram os erros a determinada versão. Normalmente apenas uma versão é referida neste campo. Temos assim a indicação de qual a primeira versão onde a alteração irá ser visível. &lt;br /&gt;
&lt;br /&gt;
Exemplo: depois da versão 1.9 ser lançada, ser for reparado um erro na versão MOODLE_19_STABLE, ela irá ser marcada como reparada na versão 1.9.1. Se a reparação for a uma versão anterior, como por exemplo MOODLE_18_STABLE, deverá também ser adicionada na versão seguinte 1.8.x .&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro como tudo menos “Reparado” (Não possível de reproduzir, Não Reparado, etc) deixar este campo em branco.&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro anteriormente duplicado, deve ser criado um link para o duplicado do erro.&lt;br /&gt;
&lt;br /&gt;
Este campo é usado automaticamente para construir as notas de lançamento da versão (ver   http://tracker.moodle.org/browse/MDL).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anexos&#039;&#039;&#039; (Attachment) - Opcional. Anexar um ficheiro que possa ajudar os programadores e responsáveis por testes a perceber melhor qual o erro. O tamanho máximo do anexo é de 512 Kb. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comentário&#039;&#039;&#039; (Comment) – O campo destinado aos comentários contém um registo detalhado de  todas as alterações feitas a este erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolution&#039;&#039;&#039; – Este campo apenas está disponível no momento de resolver ou fechar o erro. Deve então ser especificado no cógigo o modo como foi feita a resolução do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reparado&#039;&#039;&#039; (Fixed) – O erro foi reparado; o código irá ser alterado no sistema CVS. Este código de resolução deve ser usado apenas quando forem feitas alterações ao código do Moodle.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Impossível de reparar&#039;&#039;&#039; (Won&#039;t Fix) – O problema descrito diz respeito a um assunto que nunca irá ser reparado.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Não é erro&#039;&#039;&#039; (Not a bug) – Não se trata de um erro; foi erradamente reportado. Use este código se o erro foi anteriormente reportado e reparado numa versão anterior do Moodle. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duplicado&#039;&#039;&#039; (Duplicate) – O problema é duplicado de outro problema já existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompleto&#039;&#039;&#039; (Incomplete) – É necessária mais informação para a compreensão do problema. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Impossível de reproduzir o erro&#039;&#039;&#039; (Can&#039;t Reproduce) – Todas as tentativas de reproduzir o erro falharam, ou não existia suficiente informação para que fosse possível a sua reprodução. A leitura do código não fornece pistas sobre a razão porque existe determinado comportamento. Se entretanto mais informações relevantes aparecerem, o assunto será novamente reaberto. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adiado&#039;&#039;&#039; (Deferred) – A resolução do problema será adiada para uma futura versão que será lançada. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grupos do Tracker e Permissões ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilizadores normais [groupname=jira-user] - Este é o grupo por defeito. As novas contas de utilizador são colocadas neste grupo na altura da sua criação, e os utilizadores devem ser membros deste grupo para poderem submeter relatórios no Tracker. Os membros deste grupo podem pesquisar erros, criar erros novos, comentar erros, criar anexos, criar sub-tarefas, criar filtros, subscrever erros, e votar em erros. Os membros deste grupo podem também resolver erros, que é primeiramente uma maneira de fechar os erros que são já não relevantes (por exemplo duplicados, ou reportados por engano). Os utilizadores padrão podem configurar seu Tracker que o espaço de trabalho usando o botão &amp;quot;Configure your Issue Navigator&amp;quot;. Esta característica permite que os utilizadores vejam as suas subscrições e listas de votos e controlem preferências, perfil, e senhas relativas ao Tracker.&lt;br /&gt;
&lt;br /&gt;
Programadores [groupname=jira-developer] - Os programadores podem fazer tudo o que utilizadores normais podem fazer. Além podem duplicar erros, subscrever erros, editar erros, ligar erros, e atribuir erros. Os membros deste grupo podem também usar a função Bulk  Edit que permite a actualização bulk de múltiplos erros.&lt;br /&gt;
&lt;br /&gt;
Responsáveis por testes [groupname=moodle-testers] – Os responsáveis por executar testes, podem fazer tudo o que os programadores fazem.&lt;br /&gt;
&lt;br /&gt;
Grupos de segurança do Moodle [groupname=moodle-security] – Programadores acreditados e  administradores que necessitam de trabalhar no sentido de desenvolver competências na área de segurança. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipos de ligações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Estão disponíveis os seguintes tipos de ligações:&lt;br /&gt;
*Duplicados (duplicates) – duplicados são inevitáveis num projecto com a dimensão do Moodle. Ocorrem quando um utilizador reporta inconscientemente um erro relativo a um problema que já existe. Usa-se assim esta ligação para fazer a conexão entre o outro problema que estará descrito de modo mais compreensivo. Todos erros duplicados devem ser ligados.&lt;br /&gt;
*Bloqueador (blockers) – usar esta ligação para a identificação de problemas que estão a bloquear a reparação de outros. &lt;br /&gt;
*Clonadores (cloners) –nalguns casos um erros é propositadamente duplicado com o objectivo de reparar outro ramo de código – este sistema quase nunca é usado no projecto Moodle. &lt;br /&gt;
*Dependência (dependency) – muitas vezes a reparação de uma falha está dependente de outra falha que deverá ser resolvida primeiro. Este tipo de ligações serve assim para definir a ordem pela qual deveram ser resolvidos erros que são dependentes entre si. &lt;br /&gt;
*Correlações (relates) – é usado para identificar um erros que pode de alguma maneira estar relacionado com outro erro existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Não receie ligar os erros entre si&#039;&#039;&#039;. As ligações são bidireccionais o que significa que existe um conceito que prevê os dois sentidos da ligação – isto afecta a maneira como os erros são mostrados. Esta é  a razão pela qual de poderá ver “bloqueado /está bloqueado por” ou “duplicado/é duplicado de” na lista de ligações “Link Issue”. Não precisa de existir muita preocupação em colocar o tipo correcto de ligação, uma vez que todos funcionam de maneira semenhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:Tracker]]&lt;br /&gt;
[[es:Sistema de bugs]]&lt;br /&gt;
[[fr:Traqueur de bogues]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2530</id>
		<title>Tracker</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Tracker&amp;diff=2530"/>
		<updated>2008-05-22T11:21:16Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Tracker – Sistema de gestão de bugs do Moodle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A detecção e reparação de bugs constituem um processo contínuo de controlo de qualidade. No caso do Moodle, esta detecção e reparação de bugs, por ser uma plataforma open-source, está aberta a todos quantos queiram participar, constituindo este facto uma vantagem em relação às plataformas proprietárias. O sistema que permite fazer esta detecção e posterior correcção de erros associados à plataforma Moodle chama-se Tracker.&lt;br /&gt;
O ponto interessante do open-source está no facto em que todos os utilizadores interessados podem ajudar de várias formas, quer no código ou na detecção de erros, com o objectivo de trabalhar num produto que seja do agrado da comunidade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login no Tracker ==&lt;br /&gt;
&lt;br /&gt;
Caso seja um novo utilizador do Tracker, o processo de registo poderá ser realizado aqui. Recomenda-se aqui que o username usado seja o mesmo do site moode.org. &lt;br /&gt;
Caso a conta de acesso ao Tracker não funcione, a mesma pode ser recuperada aqui: http://tracker.moodle.org&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resumo: Como reportar um erro, um melhoramento, ou um pedido de funcionalidade&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1.	Fazer o login na homepage do Moodle Tracker.&lt;br /&gt;
&lt;br /&gt;
2.	Seleccionar “Create New Issue” no menu baixo do logótipo do Moodle Tracker.&lt;br /&gt;
&lt;br /&gt;
3.	No passo 1, no menu desdobrável seleccionar o “Issue type”: Erro (bug), Nova Funcionalidade (New Feature), Tarefa (Task) ou Melhoramento (Improvement)&lt;br /&gt;
&lt;br /&gt;
4.	No passo 2, será visível várias áreas desdobráveis em branco.&lt;br /&gt;
&lt;br /&gt;
#i.	Resumo (Summary): Breve descrição do problema. O objectivo aqui é tentar fazer com que a descrição seja o mais precisa possível. A simples expressão do “Não funciona” não se revela de grande importância. È importante também pensar as palavras-chave que identificam o problema, para que o problema seja rapidamente encontrado pelos utilizadores pesquisarem pelo mesmo erro.&lt;br /&gt;
&lt;br /&gt;
#ii.	Componentes (Components): usar a teclas Ctrl e com um click do rato seleccionar uma ou mais áreas do Moodle. Por exemplo, pode ser encontrado um erro numa funcionalidade que tenha impacto em vários módulos.&lt;br /&gt;
&lt;br /&gt;
#iii.	Seleccionar a versão do Moodle, e caso não esteja listada por informação relativa á versão na descrição.&lt;br /&gt;
&lt;br /&gt;
#iv.	O Ambiente (Enviroment) é para a informações relativas ao sistema operativo e outras informações. Ver guias gerais mais abaixo.&lt;br /&gt;
#v.	A Descrição (Descritpion) informa-nos acerca do assunto tratado. Informações sobre este tópico, mais abaixo.&lt;br /&gt;
&lt;br /&gt;
#vi.	Base de Dados (Database), se não estiver na lista, por a informação relativa no campo Ambiente(Enviroment)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Guia geral para a submissão de relatórios&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um bom relatório deve incluir:&lt;br /&gt;
#•	Resumo do problema em uma ou 2 frases&lt;br /&gt;
#•	Descrição concreta e concisa do problema ou melhoramento em causa&lt;br /&gt;
#•	Deve ser também feita uma descrição passo-a-passo da sequência de passos a fazer com o objectivo de reproduzir o erro. Se possível, indicar o endereço para o que o programador consiga ver o erro apenas com um click.&lt;br /&gt;
#•	Resultados actuais: indicar o que é que a aplicação faz após os passos serem executados&lt;br /&gt;
#•	Resultados esperados: explicitar os resultados que são esperados, caso o erro não estivesse presente. É importante que a explicação seja bastante pormenorizada pois isso ajudará na resolução do erro, bem como no interface que poderá ser ajustado de forma a ser mais amigável.&lt;br /&gt;
&lt;br /&gt;
Se possível, incluir informação adicional que possa ser útil ao programador:&lt;br /&gt;
#•	Versão do Moodle (se a versão não se encontrar no menu desdobrável no topo do formulário, adicionar essa informação na descrição)&lt;br /&gt;
#•	Se existir uma mensagem de erro ou outra informação, quer nos logs do PHP ou do servidor web, inclua uma cópia dessa informação no relatório. Se for possível, ligar o modo “debug” na página configuração do Administrador com o objectivo de obter a melhor mensagem de erro possível.&lt;br /&gt;
&lt;br /&gt;
#•	Os ecrãs capturados podem também ser uma grande ajuda, mas devem ser acompanhados de uma descrição.&lt;br /&gt;
#•	Fornecer as informações relativas à configuração do sistema operativo, base de dados, etc. Se o espaço disponível na secção Ambiente (Enviroment), pode ser feita a continuação na secção da descrição. Algumas das informações que neste caso podem ser relevantes, são:&lt;br /&gt;
&lt;br /&gt;
##o	Sistema operativo do servidor e número de versão.&lt;br /&gt;
##o	Tipo de servidor e número de versão.&lt;br /&gt;
##o	Versão de PHP usada (e se é usado algum optimizador).&lt;br /&gt;
##o	Tipo de base de dados e número de versão.&lt;br /&gt;
##o	Tipo de sistema operativo do cliente e número de versão.&lt;br /&gt;
##o	Tipo e número de versão do browser utilizado.&lt;br /&gt;
&lt;br /&gt;
#•	Não é necessário fornecer sempre todos os dados. Por exemplo, se for um problema de layout, será só necessário fornecer informação sobre o sistema operativo e browsers utilizados pelos clientes. Ficam aqui alguns exemplos:&lt;br /&gt;
##o	Detecção de um erro na última versão do HEAD do Moodle, a correr em PHP5.1.2/Apache 2.2.3 em Linux. A base de dados utilizada é Postgres 8.1.&lt;br /&gt;
##o	Existe um problema de renderização, utilizando o Internet Explorer 6.0 em Windows XP.&lt;br /&gt;
&lt;br /&gt;
Em resumo, deve fazer-se uma reunião de facto suficientemente boa para que outros utilizadores possam duplicar o problema.&lt;br /&gt;
&lt;br /&gt;
Aqui estão alguns exemplos de boas práticas na submissão de relatórios de erro: MDL-6030, MDL-5688, MDL-12505.&lt;br /&gt;
Muitas vezes a parte difícil neste processo, não consiste na reparação do erro, mas sim na reprodução do mesmo por parte do programador. O programador tem assim de poder conseguir reproduzir o erro submetido, caso contrário nunca o poderá resolver.&lt;br /&gt;
&lt;br /&gt;
Bons relatórios são os que contêm informação o mais detalhada e especifica possível. &lt;br /&gt;
Por exemplo, um relatório de erro que contenha apenas “ O feed RSS não suporta UTF-8” não ajuda em nada. O programador sabe que o UTF-8 e os RSS feeds são compatíveis. Além do mais o programador não faz ideia do que o utilizador vê no seu computador e porque submeteu o erro. Neste caso terá de ser dispendido mais tempo e esforço na determinação de qual será o problema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O processo do Tracker ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Acompanhamento de novas matérias e melhorias&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Qualquer um com uma conta no Tracker pode acompanhar matérias que são submetidas. Acima estão descritas boas práticas sobre como escrever relatórios de erro de boa qualidade. É importante procurar no Tracker para determinar se o seu problema ou sugestão para a melhoria foram já objecto de relatório. Caso exista a intenção de adicionar mais informação (use a função do “comment”), voto para a edição, ou acompanhar para ver mais tarde (watch it).&lt;br /&gt;
Receberá depois um email cada vez que for subscrito um novo erro novo ou forem feitas actualizações aos erros que foram relatados. Será também enviada uma notificação quando são feitas actualizações aos erros que foram marcados para serem acompanhados.&lt;br /&gt;
&lt;br /&gt;
Podem também ser monitorizados ou acompanhados, erros submetidos por outros utilizadores. Para fazer isto, abra o erro em questão, depois seleccione “Watch it” que se encontra na parte esquerda do painel de navegação. Para que outras pessoas sejam adicionadas para acompanhar problemas submetidos por nós, seleccionar a opção “Watching” que se encontra na parte esquerda do painel de navegação. Essas pessoas serão depois notificadas por correio electrónico cada vez que houver uma actualização ao problema.&lt;br /&gt;
&lt;br /&gt;
O Tracker fornece uma facilidade fazer o link entre matérias submetidas. Qualquer usuário registado no Tracker pode ligar matérias. Os tipos de ligação múltipla estão definidos no sistema; será solicitada a escolha de um tipo ao ser feito o link de erros. Veja [nome da secção da inserção] para lista detalhada de tipos da ligação.&lt;br /&gt;
&lt;br /&gt;
Vote em erros que você quer ver abordados no Moodle. Todos os utilizadores podem votar. Para votar para um erro específico, seleccione o erro, seleccionando depois “Vote for it” do painel de navegação esquerdo. Os programadores podem considerar o número dos votos que um erro tem para fazer a escolha entre dois ou mais erros.&lt;br /&gt;
&lt;br /&gt;
O painel (Dashboard) do Tracker é flexível e pode ser modificado conforme as áreas de interesse de cada utilizador. Para mais instruções acerca da configuração do Painel do Tracker clicar aqui.&lt;br /&gt;
O Issue Navigator do Tracker é a ferramenta que permite encontrar e filtrar erros. Para mais instruções sobre o Issue Navigator clicar aqui.&lt;br /&gt;
&lt;br /&gt;
A função de pesquisa rápida (Quick Search) do Tracker está explicada aqui.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolvendo assuntos no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Só os programadores e responsáveis pelos testes ao Moodle têm permissão para mudar o estado dos erros no Tracker para “resolvido” ou “fechado” (&amp;quot;resolved&amp;quot; or &amp;quot;closed&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Este é o processo geral que o programador irá seguir, quando mudar o estado de um assunto referido no Tracker:&lt;br /&gt;
#1.	Os assuntos são automaticamente atribuídos no momento da sua criação tendo como base o componente a que são relativos; caso os programadores ou os responsáveis do componente entendam, o assunto pode ser novamente atribuído a outro módulo&lt;br /&gt;
#2.	Os programadores reparam, modificam ou adicionam código e fazzem a verificação do CVS. O número que identifica o assunto no Tracker faz automaticamente a ligação entre a mudanças no CVS ao Tracker.&lt;br /&gt;
#3.	Os patchs estão anexos aos assuntos no Tracker para que possam ser analisados e depois possivelmente adicionados no CVS. &lt;br /&gt;
#4.	Devem ser acrescentados comentários no Tracker com a descrição da reparação feita. O estado do erro é depois alterado para Resolvido (Resolved).&lt;br /&gt;
#5.	O programador deve indicar em que versão do Moodle a alteração irá ser incluída usando o Fix Version/s. Deve depois ser indicado qual o ramo ou ramos nos quais a alteração foi verificada&lt;br /&gt;
#6.	A única excepção que pode existir na alteração de estado de um erro para Resolvido (Resolved) dá-se no caso de o programador entender que não existe valor em testar o assunto resolvido. Neste caso a alteração de estado será para Fechado (Closed).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Testes á plataforma&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Todos os utilizadores são incentivados a serem participantes activos no que diz respeito a testar o Moodle. Qualquer pessoa que tenha um registo no Tracker pode registar, ver, comentar, votar, e acompanhar erros. Caso existam alguns erros, problemas, ideias para aperfeiçoamentos, o se existir o desejo de que alguma funcionalidade seja adicionada ao Moodle, o utilizador deve reportar isso no Tracker.&lt;br /&gt;
&lt;br /&gt;
Foi formalizado um grupo de pessoas responsáveis por fazer testes no Tracker que são responsáveis por verificar o rigor das alterações feitas pelos programadores. Este grupo de pessoas tem responsabilidades e autoridade no Tracker que vão além do utilizador comum. Além disto são utilizadores com grande conhecimento de toda a estrutura do Moodle, sendo também membros muito activos na comunidade Moodle. É claro que estes devem ter um nível suficiente em termos de atributos e conhecimentos necessários para os testes que realizam – a experiência é muito importante – mas também não pode ser esquecido que existem sempre utilizadores na comunidade dispostos a ajudar em qualquer eventualidade. Se quiser fazer parte da Equipa de Testes do Moodle, manifeste a sua intenção reportando-a no Tracker. Reporte a sua intenção em Moodle.org Sites Tracker project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste de erros no Tracker&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Este é o processo que a equipa de testes do Moodle deve seguir para alterar o estado dos erros de resolvidos (resolved) para fechados (closed).&lt;br /&gt;
&lt;br /&gt;
#•	Os membros desta equipa testam os erros que se encontram no estado Resolvido (Resolved). Foram criados filtros global baseados em futuros lançamentos (ex. 1.9 Resolvido) para que a identificação seja feita de uma maneira mais facilitada.&lt;br /&gt;
#•	Usar o campo QA Assignee para fazer a identificação como inspector (membro responsável pelos testes) do erro.&lt;br /&gt;
#•	Uma boa ideia será subscrever todos os tópicos relativos aos erros que são testados (ex. todos os erros em que nós fomos responsáveis pela fase de testes).&lt;br /&gt;
#•	Caso o erro passar a fase de testes, alterar o estado do erro usando o botão “Fechar Assunto” (“Close Issue”). Devem ser adicionados comentários com a descrição do método usado para fazer os testes, todas as incorrecções encontradas, etc.&lt;br /&gt;
#•	Caso o erro não passe a fase de testes ou se houver o sentimento de que o erro não foi completamente reparado, deve fazer-se a alteração do seu estado através do botão “Reabrir Assunto” (“Reopen Issue”) de forma a este ficar novamente com a indicação que não está completamente resolvido. Certificar-se de que o problema é entregue ao programador correcto. Trabalhar com o programador no sentido de ser encontrada uma resolução que seja acertada para ambas as partes.&lt;br /&gt;
&lt;br /&gt;
#•	Uma versão será dada como pronta quando todos os erros a ela relativos forem dados como estando fechados.&lt;br /&gt;
#•	Todos os erros resolvidos devem ser testados. Erros que no final tenham a indicação de reparados (fixed) representam erros sujo o seu código foi actualizado, e provavelmente representaram um maior desafio do que os erros que tenham no final a indicação de sendo duplicados, que não constituem um erro, ou que foi conseguido reproduzir esse erro. É aconselhável a certificação de que os erros foram finalizados com a indicação correcta. Infelizmente não é fácil alterar o código quando ele é posto no Tracker ( a única solução será reabrir e depois fechar o tópico).&lt;br /&gt;
&lt;br /&gt;
#•	Os processos de teste devem ser discutidos sem receios com os programadores afectos ao erro. Muitas vezes um comentário chama logo a atenção do programador enquanto são notificados de todas as mudanças.&lt;br /&gt;
Descrição detalhada de todos os grupos e campos do Tracker&lt;br /&gt;
&lt;br /&gt;
Em cada campo no Tracker é sempre apresentada uma pequena explicação.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projecto&#039;&#039;&#039; (Project) – Campo obrigatório - o Tracker é constituído por vários projectos. No presente existem 3: &#039;moodle&#039;, &#039;moodle.org sites&#039; and &#039;Non-core contributed modules&#039;. Escolha ‘moodle’ para erros/assuntos relacionados com o software moodle; escolha &#039;moodle.org sites&#039; para erros/assuntos relacionados com tracker.moodle.org, docs.moodle.org, demo.moodle.org, download.moodle.org, ou moodle.org; escolha &#039;Non-core contributed modules&#039; para erros/assuntos relacionados com módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipo de assunto&#039;&#039;&#039; (Issue Type) - Campo obrigatório – os erros são classificados segundo as seguintes categorias:&lt;br /&gt;
#•	Erro (bug)- um problema que afecta o funcionamento correcto do Moodle.&lt;br /&gt;
#•	Melhoramento (Improvement) -  uma melhoria a uma funcionalidade já existente no Moodle&lt;br /&gt;
#•	Nova funcionalidade (New Feature) – uma nova funcionalidade que tem ainda de ser desenvolvida&lt;br /&gt;
#•	Tarefa (Task) – uma tarefa que necessita de ser completada. Usualmente refere-se a trabalho que tem de ser executado fora do âmbito do produto.&lt;br /&gt;
#•	Sub-tarefa (Sub-task) – assuntos que por vezes são divididos em assuntos mais pequenos &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sumário&#039;&#039;&#039; (Summary) - Campo obrigatório – uma descrição breve e concisa do problema.&lt;br /&gt;
&lt;br /&gt;
Nível de segurança (Security Level) – Campo opcional. Indica se o erro ou modificação tem implicações de segurança para o Moodle. Erros que tenham seriam implicações a nível de segurança, são reservados para a equipa de segurança do Moodle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prioridade&#039;&#039;&#039; (Priority) – os erros têm os seguintes níveis de prioridade:&lt;br /&gt;
#•	Blocker – bloqueia o desenvolvimento e/ou trabalho de teste, a produção não pode continuar. &lt;br /&gt;
#•	Critical - Crashes, perdas de informação, fugas sérias a nível de memória. &lt;br /&gt;
#•	Major – perda importante de funcionalidade. &lt;br /&gt;
#•	Minor – perda de uma funcionalidade acessória, ou outro problema de fácil resolução&lt;br /&gt;
#•	Trivial – problema de nível cosmético como por exemplo erros ortográficos ou texto desalinhado &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Componentes&#039;&#039;&#039; (Components) – Campo obrigatório. Seleccionar a área do Moodle afectada pelo erro. Em caso de incerteza, seleccionar “Unknown”.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versão Afectada&#039;&#039;&#039; (Affects Version) – Campo obrigatório. Esta é a versão do Moodle na qual o erro foi encontrado. Esta informação é inserida pela pessoa que reporta o erro, e normalmente apenas uma versão é apontada. Inserir a versão actual no momento em que se reporta o melhoramento, tarefa ou nova funcionalidade ajudará avaliar o estado do produto quando o pedido foi feito.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Afecto a&#039;&#039;&#039; (Assigned To) – Esta será a pessoa a que irá ser responsável pela resolução do problema. Este campo irá ser preenchido por programadores ou equipas responsáveis por módulos.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reportador&#039;&#039;&#039; (Reporter) – Pessoa que reporta o erro. Este campo é automaticamente preenchido pelo Tracker. &lt;br /&gt;
Ambiente (Environment) – Especifica qual o sistema operative, plataforma de software e/ou especificações de hardware, se aplicáveis ao erro em questão.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Descrição&#039;&#039;&#039; (Description) – Uma descrição complete e concise do problema ou melhoramento. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Base de dados&#039;&#039;&#039; (Database) – Campo opcional. Se for aplicável ao erro, identifica o tipo de base de dados utilizado. &lt;br /&gt;
URL – Campo opcional. Se possivel, fornecer o endereço URL que demonstre um exemplo do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Responsável pelos testes&#039;&#039;&#039; (QA Assignee) – Usado para designer o responsável que irá fazer os testes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Versões reparadas&#039;&#039;&#039; (Fixed Version/s) – Versão do Moodle onde o erro esteve ou irá ser reparado. Basicamente deverá ser pensado em que notas de lançamento irão aparecer as alterações. Este campo é normalmente completado pelo programador quando o erro é dado como resolvido, ou então pelas equipas de desenvolvimento que afectaram os erros a determinada versão. Normalmente apenas uma versão é referida neste campo. Temos assim a indicação de qual a primeira versão onde a alteração irá ser visível. &lt;br /&gt;
&lt;br /&gt;
Exemplo: depois da versão 1.9 ser lançada, ser for reparado um erro na versão MOODLE_19_STABLE, ela irá ser marcada como reparada na versão 1.9.1. Se a reparação for a uma versão anterior, como por exemplo MOODLE_18_STABLE, deverá também ser adicionada na versão seguinte 1.8.x .&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro como tudo menos “Reparado” (Não possível de reproduzir, Não Reparado, etc) deixar este campo em branco.&lt;br /&gt;
&lt;br /&gt;
Se for resolvido um erro anteriormente duplicado, deve ser criado um link para o duplicado do erro.&lt;br /&gt;
&lt;br /&gt;
Este campo é usado automaticamente para construir as notas de lançamento da versão (ver   http://tracker.moodle.org/browse/MDL).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anexos&#039;&#039;&#039; (Attachment) - Opcional. Anexar um ficheiro que possa ajudar os programadores e responsáveis por testes a perceber melhor qual o erro. O tamanho máximo do anexo é de 512 Kb. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comentário&#039;&#039;&#039; (Comment) – O campo destinado aos comentários contém um registo detalhado de  todas as alterações feitas a este erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Resolution&#039;&#039;&#039; – Este campo apenas está disponível no momento de resolver ou fechar o erro. Deve então ser especificado no cógigo o modo como foi feita a resolução do erro. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reparado&#039;&#039;&#039; (Fixed) – O erro foi reparado; o código irá ser alterado no sistema CVS. Este código de resolução deve ser usado apenas quando forem feitas alterações ao código do Moodle.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Impossível de reparar&#039;&#039;&#039; (Won&#039;t Fix) – O problema descrito diz respeito a um assunto que nunca irá ser reparado.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Não é erro&#039;&#039;&#039; (Not a bug) – Não se trata de um erro; foi erradamente reportado. Use este código se o erro foi anteriormente reportado e reparado numa versão anterior do Moodle. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duplicado&#039;&#039;&#039; (Duplicate) – O problema é duplicado de outro problema já existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Incompleto&#039;&#039;&#039; (Incomplete) – É necessária mais informação para a compreensão do problema. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Impossível de reproduzir o erro&#039;&#039;&#039; (Can&#039;t Reproduce) – Todas as tentativas de reproduzir o erro falharam, ou não existia suficiente informação para que fosse possível a sua reprodução. A leitura do código não fornece pistas sobre a razão porque existe determinado comportamento. Se entretanto mais informações relevantes aparecerem, o assunto será novamente reaberto. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adiado&#039;&#039;&#039; (Deferred) – A resolução do problema será adiada para uma futura versão que será lançada. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grupos do Tracker e Permissões ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Utilizadores normais [groupname=jira-user] - Este é o grupo por defeito. As novas contas de utilizador são colocadas neste grupo na altura da sua criação, e os utilizadores devem ser membros deste grupo para poderem submeter relatórios no Tracker. Os membros deste grupo podem pesquisar erros, criar erros novos, comentar erros, criar anexos, criar sub-tarefas, criar filtros, subscrever erros, e votar em erros. Os membros deste grupo podem também resolver erros, que é primeiramente uma maneira de fechar os erros que são já não relevantes (por exemplo duplicados, ou reportados por engano). Os utilizadores padrão podem configurar seu Tracker que o espaço de trabalho usando o botão &amp;quot;Configure your Issue Navigator&amp;quot;. Esta característica permite que os utilizadores vejam as suas subscrições e listas de votos e controlem preferências, perfil, e senhas relativas ao Tracker.&lt;br /&gt;
&lt;br /&gt;
Programadores [groupname=jira-developer] - Os programadores podem fazer tudo o que utilizadores normais podem fazer. Além podem duplicar erros, subscrever erros, editar erros, ligar erros, e atribuir erros. Os membros deste grupo podem também usar a função Bulk  Edit que permite a actualização bulk de múltiplos erros.&lt;br /&gt;
&lt;br /&gt;
Responsáveis por testes [groupname=moodle-testers] – Os responsáveis por executar testes, podem fazer tudo o que os programadores fazem.&lt;br /&gt;
&lt;br /&gt;
Grupos de segurança do Moodle [groupname=moodle-security] – Programadores acreditados e  administradores que necessitam de trabalhar no sentido de desenvolver competências na área de segurança. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipos de ligações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Estão disponíveis os seguintes tipos de ligações:&lt;br /&gt;
#Duplicados (duplicates) – duplicados são inevitáveis num projecto com a dimensão do Moodle. Ocorrem quando um utilizador reporta inconscientemente um erro relativo a um problema que já existe. Usa-se assim esta ligação para fazer a conexão entre o outro problema que estará descrito de modo mais compreensivo. Todos erros duplicados devem ser ligados.&lt;br /&gt;
#Bloqueador (blockers) – usar esta ligação para a identificação de problemas que estão a bloquear a reparação de outros. &lt;br /&gt;
#Clonadores (cloners) –nalguns casos um erros é propositadamente duplicado com o objectivo de reparar outro ramo de código – este sistema quase nunca é usado no projecto Moodle. &lt;br /&gt;
#Dependência (dependency) – muitas vezes a reparação de uma falha está dependente de outra falha que deverá ser resolvida primeiro. Este tipo de ligações serve assim para definir a ordem pela qual deveram ser resolvidos erros que são dependentes entre si. &lt;br /&gt;
#Correlações (relates) – é usado para identificar um erros que pode de alguma maneira estar relacionado com outro erro existente. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Não receie ligar os erros entre si&#039;&#039;&#039;. As ligações são bidireccionais o que significa que existe um conceito que prevê os dois sentidos da ligação – isto afecta a maneira como os erros são mostrados. Esta é  a razão pela qual de poderá ver “bloqueado /está bloqueado por” ou “duplicado/é duplicado de” na lista de ligações “Link Issue”. Não precisa de existir muita preocupação em colocar o tipo correcto de ligação, uma vez que todos funcionam de maneira semenhante.&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2529</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2529"/>
		<updated>2008-05-18T11:13:47Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do cron nos sistemas Windows.&lt;br /&gt;
&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/&lt;br /&gt;
  plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagem:Merging.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name &lt;br /&gt;
  field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged   &lt;br /&gt;
  from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Utilizador:Ruben_Mamede&amp;diff=2528</id>
		<title>Utilizador:Ruben Mamede</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Utilizador:Ruben_Mamede&amp;diff=2528"/>
		<updated>2008-05-18T11:05:16Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Informatics and Management&amp;quot; Student from ISCAC - Coimbra - Portugal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sou membro de um grupo de estudantes do curso de Informática de Gestão do Instituto Superior de Contabilidade e Administração de Coimbra, que está a trabalhar no desenvolvimento da plataforma e-learning desta instituição de ensino, bem como na criação de documentação técnica (em português) para programadores do Moodle.&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Utilizador:Ruben_Mamede&amp;diff=2527</id>
		<title>Utilizador:Ruben Mamede</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Utilizador:Ruben_Mamede&amp;diff=2527"/>
		<updated>2008-05-18T11:02:07Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Informatics and Management&amp;quot; Student from ISCAC - Coimbra - Portugal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sou membro de um grupo de estudantes do curso de Informática de Gestão do Instituto Superior de Contabilidade e Administração de Coimbra, que está a trabalhar no desenvolvimento da plataforma e-learning desta instituição de ensino, bem como na criação de documentação técnica (em português) para programadores.&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2526</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2526"/>
		<updated>2008-05-18T10:33:15Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/&lt;br /&gt;
  plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagem:Merging.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name &lt;br /&gt;
  field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged   &lt;br /&gt;
  from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2525</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2525"/>
		<updated>2008-05-17T18:27:40Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagem:Merging.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2524</id>
		<title>manual de codigo</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2524"/>
		<updated>2008-05-17T18:27:15Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento de código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Qualquer projecto colaborativo precisa de consistência e estabilidade. A criação de código para a plataforma Moodle rege-se por um guia de desenvolvimento comum a toda a comunidade. Na verdade, algum do código mais antigo não respeita exactamente estas linhas orientadoras, no entanto, este ainda pode eventualmente ser submetido a alterações. Relativamente ao novo código, todo ele deverá respeitar estes padrões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regras Gerais ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.	Todos os ficheiros de código deverão usar a extensão .php.&lt;br /&gt;
&lt;br /&gt;
2.	Todos os ficheiros de templates deverão usar a extensão .html.&lt;br /&gt;
&lt;br /&gt;
3.	Todos os ficheiros de texto deverão usar o estilo Unix de formatação de texto.&lt;br /&gt;
&lt;br /&gt;
4.	Todos os tags php devem estar preenchido (por exemplo &amp;lt;?php ?&amp;gt; ao invés de &amp;lt;? ?&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
5.	As referências de copyright já existentes deverão ser mantidas. Se necessário o criador de código pode criar as suas próprias referencias.&lt;br /&gt;
&lt;br /&gt;
6.	Todos os ficheiros deverão conter o include do ficheiro principal config.php.&lt;br /&gt;
&lt;br /&gt;
7.	Qualquer outra utilização de iclude’s/require’s deverá conter a localização completa precedida de $CFG-&amp;gt;dirroot ou $CFG-&amp;gt;libdir no caso de relative include’s.&lt;br /&gt;
&lt;br /&gt;
8.	Cada ficheiro deverá verificar se o utilizador está correctamente autenticado através das funções require_login() e has_capability() ou require_capability().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os acessos às bases de dados deverão, sempre que possível, usar as funções definidas em lib/dmllib.php – estas permitem a compatibilidade com um vasto número de bases de dados e a grande maioria das operações desejadas. Se se pretender escrever código SQL então dever-se-á verificar se: funciona em qualquer plataforma; está restringido às funções específicas do seu código (geralmente um ficheiro lib.php); e está claramente comentado.&lt;br /&gt;
&lt;br /&gt;
10.	Não deverão ser criadas/utilizadas variáveis globais excepto nos standards $CFG, $SESSION, $THEME, $SITE, $COURSE e $USER.&lt;br /&gt;
&lt;br /&gt;
11.	Qualquer variável deverá ser inicializada ou pelo menos testada a sua existência utilizando isset() ou empty() antes de ser utilizada.&lt;br /&gt;
&lt;br /&gt;
12.	Todas as strings devem ser traduzíveis - Os novos textos serão criados nos ficheiros &amp;quot;lang/pt_utf8&amp;quot; com palavras concisas em inglês (letra minúscula) e sua tradução completa em português, recuperandos no código utilizando as funções get_string() ou print_string().  Não se deverão apagar strings, desta forma  garante-se a compatibilidade entre os diversos packs linguísticos.&lt;br /&gt;
&lt;br /&gt;
13.	Não se devem usar as funções p() e s() nos prints(outputs) das strings linguísticas, estas não foram concebidas para utilizar html com tags. Para este efeito poderá ser utilizada a função echo().&lt;br /&gt;
&lt;br /&gt;
14.	Todos os erros deverão ser visualizados utilizando a função print_error() para maximizar a tradução e ajudar o utilizador (acedendo automaticamente ao Moodle Docs).&lt;br /&gt;
&lt;br /&gt;
15.	Todos os ficheiros de ajuda (help files) devem ser traduzíveis – Os novos textos devem ser criados na directoria &amp;quot;lang/pt_utf8/help&amp;quot; e acedidos através da função helpbutton(). Quando se pretender actualizar estes ficheiros:&lt;br /&gt;
&lt;br /&gt;
•	Para uma pequena actualização, e no caso de a tradução antiga ser minimamente credível, pode-se efectuar a alteração mas esta deve ser submetida para translation@moodle.org.&lt;br /&gt;
&lt;br /&gt;
•	Para alterações significativas, deve ser criado um novo ficheiro com um valor incrementado (por exemplo: filename2.html) de modo a que outros utilizadores possam compreender que se trata de uma nova versão do ficheiro em causa. Obviamente o novo código e os índices dos ficheiros de ajuda deverão ser actualizados de acordo com as versões mais recentes.  &lt;br /&gt;
&lt;br /&gt;
16.	A informação recebida a partir do browser (utilizando os métodos GET e POST) tem automaticamente as “magic_quotes” aplicadas (independentemente das definições PHP) pelo que podem ser inseridas de forma segura na base de dados. O resto da informação (obtida a partir de ficheiros ou de bases de dados) deve ser submetida à função addslashes() antes de ser inserida na base de dados. &lt;br /&gt;
&lt;br /&gt;
17.	MUITO IMPORTANTE: Todos os textos dentro do Moodle, especialmente os que são introduzidos pelos utilizadores, devem ser mostrados utilizando a função format_text(). Esta assegura que o texto é filtrado e ajustado correctamente.&lt;br /&gt;
&lt;br /&gt;
18.	As acções dos utilizadores devem ser gravadas utilizando a função add_to_log(). Estes dados são utilizados para as “Informações de actividade” e “Registos”.&lt;br /&gt;
&lt;br /&gt;
19.	Para criar um link HTML, deverá utilizar a sua localização completa. Por exemplo $CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99 em vez de view.php?id=99. Isto assegura, entre outras situações, que o código funciona se for chamado por um script noutra pasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estilo do código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
É compreensível que possa ser frustrante e difícil alterar o estilo de programação de cada pessoa que já tenha trabalhado noutros projectos, mas se compararmos essa frustração com a das pessoas que mais a frente irão tentar encontrar o sentido do código do Moodle, verificamos que existe a necessidade de definir algumas regras de concepção de código para que a diversidade de estilos não se mostre um entrave a percepção do mesmo. Existem, como e natural, pontos fortes e pontos fracos do estilo adoptado mas é este estilo apresentado e que se deverá utilizar.&lt;br /&gt;
 &lt;br /&gt;
1.	Nunca utilizar tabulações ( TAB ) na identação do código. Utilizar sempre 4 espaços (  SPACE ).&lt;br /&gt;
&lt;br /&gt;
2.	O nome das variáveis terá de ser de fácil leitura, palavras com significado em inglês e integralmente constituídas por letras minúsculas. Se eventualmente for necessário mais de uma palavra, estas deveram estar juntas tentando serem as mais pequenas possíveis. A definição de matrizes de objectos ( arrays ) deverá ser feita através de palavras no plural.&lt;br /&gt;
&lt;br /&gt;
Exemplos:&lt;br /&gt;
&lt;br /&gt;
     B: $quiz&lt;br /&gt;
     B: $errorstring&lt;br /&gt;
     B: $assignments (for an array of objects)&lt;br /&gt;
     B: $i (but only in little loops)&lt;br /&gt;
     M: $Quiz&lt;br /&gt;
     M: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
     M: $error_string&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa definição M – má definição&lt;br /&gt;
&lt;br /&gt;
3.	Todas as constantes deverão estar definidas em Maiúsculas e o seu inicio será o nome do módulo. As palavras serão separadas por “underscores”.&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes de funções terão de ser compostas por palavras simples em Inglês e começaram com o nome do módulo a que pertencem para evitar conflitos com outros módulos. Estas estarão separadas por “undercores”. Se possível, todos os parâmetros terão valor por defeito. Deverá certificar-se que não existe espaço entre o nome da função e o que se lhe segue (parêntesis).&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     function forum_set_display_mode($mode=0) {&lt;br /&gt;
         global $USER, $CFG;&lt;br /&gt;
         &lt;br /&gt;
         if ($mode) {&lt;br /&gt;
             $USER-&amp;gt;mode = $mode;&lt;br /&gt;
         } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
             $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
5.	Todos os blocos de código terão de ser fechados com chavetas, independentemente de serem constituídos por apenas uma linha. O Moodle utiliza este estilo:&lt;br /&gt;
 &lt;br /&gt;
     if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
         if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
             error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
6.	As strings deveram estar definidas entre pelicas ( caracter ‘ ), sempre que possivel.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     $var = &#039;some text without any variables&#039;;&lt;br /&gt;
     $var = &#039;with special characters like a new line &#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
     $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
     $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7.	Todo o código desenvolvido deverá ser devidamente comentado, para que o desenrolar do código seja percebido tal como o objectivo de cada função e variáveis.&lt;br /&gt;
&lt;br /&gt;
•	Todas as funções e classes deveram usar o formato  phpDoc,  para que a documentação seja automaticamente criada.&lt;br /&gt;
&lt;br /&gt;
•	Os comentarios de uma so linha deverão utilizar //, antes da sua descrição e deverão estar alinhados com o código que comentam e na linha anterior.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
     /**&lt;br /&gt;
     * The description should be first, with asterisks laid out exactly&lt;br /&gt;
     * like this example. If you want to refer to a another function,&lt;br /&gt;
     * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
     * for each parameter as follows.&lt;br /&gt;
     *&lt;br /&gt;
     * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
     * @return mixed&lt;br /&gt;
     */&lt;br /&gt;
     function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
         if (!$ratings) {&lt;br /&gt;
             $ratings = array();     // Initialize the empty array&lt;br /&gt;
             if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                 // Process each rating in turn&lt;br /&gt;
                 foreach ($rates as $rate) {&lt;br /&gt;
     ....etc&lt;br /&gt;
&lt;br /&gt;
8.	O espaço em branco pode ser usado sem problema e pode ser bastante útil para separar partes de código tornando-o mais claro no geral. Geralmente, devera existir um espaço entre as chavetas de uma função e linhas normais de código, enquanto entre chavetas e variáveis ou funções não devera existir nenhum.&lt;br /&gt;
&lt;br /&gt;
Exemplo: &lt;br /&gt;
 &lt;br /&gt;
     foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
         process($thing);&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     if ($x == $y) {&lt;br /&gt;
         $a = $b;&lt;br /&gt;
     } else if ($x == $z) {&lt;br /&gt;
         $a = $c;&lt;br /&gt;
     } else {&lt;br /&gt;
         $a = $d;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
9.	Quando se efectuar uma copia de um determinado objecto, deverá ser sempre utilizada a função clone(), que originalmente esta disponível apenas em PHP5 (caso contrario terá apenas uma referencia para o primeiro objecto). Moodle garantira que este método funcionara, também em php4.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     M:   $b = $a;&lt;br /&gt;
     B:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa utilização M – má utilização&lt;br /&gt;
&lt;br /&gt;
Caso o que esteja  a ser copiado não seja um objecto mas sim um conjunto de objectos (ex: arrays de objectos) deverá ser utilizada a função fullclone() de forma semelhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estruturas das Bases de Dados ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para a criação de tabelas devem ser tomadas em conta as seguintes regras de desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
1.	Todas as tabelas devem ter uma variável que é automaticamente incrementada que servirá para a identificação de campos (ex. id field (INT10))&lt;br /&gt;
&lt;br /&gt;
2.	A tabela principal que contém instâncias de cada módulo, deve ter o mesmo nome do módulo (ex. questionário) e deve ainda conter obrigatoriamente os seguintes campos:&lt;br /&gt;
&lt;br /&gt;
•	Id – como foi descrito na regra anterior&lt;br /&gt;
&lt;br /&gt;
•	Course – id do curso a que cada instância pertence&lt;br /&gt;
&lt;br /&gt;
•	Name – o nome completo de cada intância do módulo&lt;br /&gt;
&lt;br /&gt;
3.	Outras tabelas que estejam associadas ao módulo que contenham matérias sobre “coisas” deveram ser chamadas questionário_coisas (de notar que o nome está no plural).&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes das tabelas e das colunas devem evitar conter quaisquer palavras que esteja já reservada nas bases de dados, pelo que se recomenda uma anterior verificação das mesmas.&lt;br /&gt;
&lt;br /&gt;
5.	Os nomes das colunas devem ser sempre em letras minúsculas, devem ser nomes simples e pequenos, seguindo as mesmas regras aplicáveis para os nomes das variáveis.&lt;br /&gt;
&lt;br /&gt;
6.	Sempre que for possível, as colunas que contenham referência a um campo id de outra tabela (ex. módulo) deve ter o nome módulo_id (Nota: esta convenção não foi utilizada nas tabelas de versões iniciais do moodle).&lt;br /&gt;
&lt;br /&gt;
7.	Os campos booleanos devem ser implementados como campos de variáveis inteiras (ex INT4) que contêm os valores 0 ou 1, para suportarem uma posterior necessidade de essas variáveis conterem mais valores.&lt;br /&gt;
&lt;br /&gt;
8.	Muitas das tabelas existentes deveram ter um campo que é modificado em função do passar do tempo (INT10) que será actualizada com a data actual que pode ser obtida com a função PHP time().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os campos devem ser inicializados com um valor inicial (que tenha sentido no contexto onde está inserido).&lt;br /&gt;
&lt;br /&gt;
10.	Cada nome de tabela deve começar com o prefixo da base de dados ($CFG-&amp;gt;prefixo). Na maioria dos casos, isto é automaticamente feito. Também, no Postgres, o nome de cada índice tem de começar com o mesmo prefixo.&lt;br /&gt;
&lt;br /&gt;
11.	Para garantir a compatibilidade entre bases de dados devem ser seguidas simples regras como o uso da palavra chave AS (apenas de for necessário alias em tabelas\colunas, claro):&lt;br /&gt;
&lt;br /&gt;
•	Não usar a palavra chave AS para alias de tabelas.&lt;br /&gt;
&lt;br /&gt;
•	Usar a palavra chave AS para alias de colunas.&lt;br /&gt;
&lt;br /&gt;
12.	Nunca criar UNIQUE KEYS (restrições) sem nenhuma razão específica. Em alternativa, usar UNIQUE INDEXes. No futuro, se for decidido adicionar integridade referencial no Moodle e for necessário UNIQUE KEYS, serão usadas, mas por agora este facto não se irá verificar. De notar ainda que o editor XMLDB permite especificar restrições XMLDB-only UNIQUE e FOREIGN (o que é um ponto positivo, com o objectivo de ter o XML bem definido) mas apenas os INDEXes sublinhados serão gerados na base de dados.&lt;br /&gt;
&lt;br /&gt;
13.	Essas UNIQUE KEYS XMLDB-only (ler ponto anterior) apenas podem ser definidas se esse campo\campos vão ser alvo de alguma (também XMLDB-only) FOREIGN KEY. Caso contrário, devem ser criadas como UNIQUE INDEXes.&lt;br /&gt;
&lt;br /&gt;
14.	As tabelas associadas com um bloco devem seguir a seguinte convenção na atribuição dos seus nomes: &lt;br /&gt;
$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + nome_do_bloco+ o_restante. Por exemplo assumindo que $CFG-&amp;gt;prefix é ‘mdl_’, todas as tabelas do bloco “rss_cliente” devem começar com ‘mdl_block_rss_client’ (sendo possível que se adicione mais palavras no final, por ex. ‘mdl_block_rss_client_outratabela’…). Esta regra será 100% forçada com o Moodle 2.0, dando entretanto tempo aos programadores. Para mais informações consultar Task 6786.&lt;br /&gt;
15.	Nunca fazer mudanças em porções de código ESTÁVEIS. Este facto poderá provocar sérios erros quando os utilizadores actualizarem a sua versão estável para outra.&lt;br /&gt;
&lt;br /&gt;
16.	Quando existir referência a uma variável inteira em consultas SQL, não por o valor entre pelicas. Por exemplo, get_records_select(&#039;question&#039;, &amp;quot;category=$catid&amp;quot;) está correcto. Já o exemplo get_records_select(&#039;question&#039;, &amp;quot;category=&#039;$catid&#039;&amp;quot;) está incorrecto. Este caso pode dar origem a que sejam ocultados erros em que o valor de $catid não esteja definido. (Esta thread explica este caso).&lt;br /&gt;
 &lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Coding]]&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Planifica%C3%A7%C3%A3o&amp;diff=2523</id>
		<title>Planificação</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Planifica%C3%A7%C3%A3o&amp;diff=2523"/>
		<updated>2008-05-17T18:26:15Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Esta planificação reúne a última informação sobre as novas funcionalidades do Moodle. Não é 100% real – as funcionalidades podem variar segundo os meios financeiros e humanos disponíveis.&lt;br /&gt;
&lt;br /&gt;
Quando sairá a próxima versão do Moodle?&lt;br /&gt;
Esta questão recorrente tem uma resposta simples: quando estiver terminada !&lt;br /&gt;
As datas mensionadas aqui são a titulo indicativo. Por vezes são respeitadas, mas é possível haver atrasos de dois meses. Se o atraso se prolonga, é por uma boa causa : melhorar a estabilidade e/ou introduzir novas funcionalidades.&lt;br /&gt;
Não serve de nada colocar a questão com insistência com a aproximação das datas de saída previstas, é necessário saber ser paciente: antes que uma nova versão possa ser declarada como estável, é necessário no mínimo, que todos os erros que bloqueiam (e críticos se possível) sejam resolvidos ou colocados no Tracker.&lt;br /&gt;
Se estiver pressionado e/ou deseja acelerar a saída da versão final, pode utilizar uma versão beta, se estiver perto de descobrir, declarar e eventualmente resolver os erros que estão no gestor de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versão 2.0 – Prevista para o inicio de 2009 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Novas funcionalidades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
•	O Moodle 2.0 necessitará do PHP 5.2&lt;br /&gt;
PHP 5.2 mínimo, para certas melhorias não disponíveis em PHP 4, e permitindo assim limpar certas partes do código. Para mais informações, ver : gophp5.org&lt;br /&gt;
&lt;br /&gt;
•	Melhorias na gestão de ficheiros – Moodle.com&lt;br /&gt;
Ficheiros API – mantém um referencial de ficheiros interno e regista o acesso a este.&lt;br /&gt;
Bases de dados API – permite aos utilizadores percorrer diferentes bases de dados externas a fim de escolher os ficheiros a integrar no Moodle.&lt;br /&gt;
Portfolio API – permite que o conteúdo do Moodle seja capturado e depositado em depósitos externos.&lt;br /&gt;
Estes três elementos são separados mas complementares, e por conseguinte serão desenvolvidos conjuntamente.&lt;br /&gt;
&lt;br /&gt;
•	Actividades condicionais – Moodle.com&lt;br /&gt;
Permitir as dependências e os caminhos forçados nas actividades (“Vocês não podem fazer isto sem terem terminado aquilo”).&lt;br /&gt;
&lt;br /&gt;
•	Planos de formação e competências – Moodle.com e Google Summer of Code&lt;br /&gt;
Apoia-se nos resultados/objectivos do Moodle 1.9 de modo que os indivíduos possam ter planos de formação que são actualizados quando os cursos são terminados.&lt;br /&gt;
&lt;br /&gt;
•	Editor HTML 2.0&lt;br /&gt;
Substituição do antigo editor HTMLarea por um novo, funcionando sobre mais navegadores, conforme XHTML estrito e permitindo uma melhor integração com os  ficheiros API.&lt;br /&gt;
&lt;br /&gt;
•	Interface de interconexão – Moodle.com e outros&lt;br /&gt;
Facilita aos utilizadores a possibilidade de encontrar e navegar em outros sitemas e depósitos externos ao Moodle, aumentando a rede do Moodle de diversas maneiras.&lt;br /&gt;
&lt;br /&gt;
•	Eliminação do antigo sistema de instalação/actualização da base de dados&lt;br /&gt;
O antigo sistema de instalação e actualização da base de dados utilizado no Moodle &amp;lt; o 1.7  será completamente suprimido, dando-se suporte unicamente ao novo esquema de base de dados que utiliza XML introduzido com a versão 1.7. &lt;br /&gt;
&lt;br /&gt;
Nota: O Moodle 2.0 necessita do PHP 5.1 no mínimo, devido a certas melhorias não disponiveis em PHP 4.&lt;br /&gt;
&lt;br /&gt;
•	Novo DataLib&lt;br /&gt;
&lt;br /&gt;
MDL-6605 O acesso à base de dados deve ser feito de modo que possamos : usar indicações preparadas em qualquer parte para aumentar a segurança e o desempenho, possamos colocar funções do datalib numa classe de modo a melhorar os testes de unidade (DB mock), e acabar com  a necessidade de slashes no userspace. Isto causará ruptura na 3ª parte dos módulos (mas repará-los não deverá ser demasiado complicado).&lt;br /&gt;
&lt;br /&gt;
•	Integração do Feedback do Módulo – Andrea Grab&lt;br /&gt;
&lt;br /&gt;
Melhorar e integrar como um módulo de base.&lt;br /&gt;
&lt;br /&gt;
•	Novo módulo Wiki, baseado em NWiki - DFWikiteam-UPC&lt;br /&gt;
&lt;br /&gt;
Melhorar, limpar e integrar como um módulo básico.&lt;br /&gt;
&lt;br /&gt;
•	Melhorias nos relatórios de testes - The Open University&lt;br /&gt;
&lt;br /&gt;
Melhorias principais aos relatórios do quis.&lt;br /&gt;
&lt;br /&gt;
•	Blog 2.0&lt;br /&gt;
&lt;br /&gt;
Ajustar os comentários aos Blogs (MDL-8776), assim como o apoio dos blogs externos.&lt;br /&gt;
&lt;br /&gt;
•	Serviço de mensagens 2.0&lt;br /&gt;
&lt;br /&gt;
Modificação do serviço de mensagens para utilizar plugins de entrada e saída, controlados pelos utilizadores.&lt;br /&gt;
&lt;br /&gt;
•	Fios RSS protegidos&lt;br /&gt;
&lt;br /&gt;
RSS obscuros alimentam URLs usando as chaves confidenciais, controladas por usuários.&lt;br /&gt;
&lt;br /&gt;
•	Mais Tags&lt;br /&gt;
&lt;br /&gt;
Tags para os cursos, as actividades outras coisas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Esperem igualmente ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Informação de estudo API&lt;br /&gt;
&lt;br /&gt;
API para integrar os sistemas externos de modo a gerar as irformações dos estudantes.&lt;br /&gt;
&lt;br /&gt;
•	Exportação da Aprendizagem Do Projeto? - Moodle.com e l&#039;Open University of The Netherlands.&lt;br /&gt;
&lt;br /&gt;
Está previsto haver um formato de exportação muito simples de um curso moodle para o formato IMS LD, para mostrar o conceito e para ajudar a comunidade a começar a habituar-se à IMS LD.&lt;br /&gt;
&lt;br /&gt;
•	Integração de Turnitin - Dan Marsden com o apoio de Catalyst NZ&lt;br /&gt;
&lt;br /&gt;
•	Melhorar a utilização&lt;br /&gt;
&lt;br /&gt;
Melhorar a ergonomia para os utilizadores (tanto novos como antigos), graças a um aumento de testes, a disponibilidade selectiva das funcionalidades, e da procura ( como os projectos GSOC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ver também ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Podem consultar as notas de actualização das versões que já saíram.&lt;br /&gt;
O Histórico das versões, para conhecer as datas de saída de todas as versões do moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Programador]]&lt;br /&gt;
&lt;br /&gt;
[[en:Roadmap]]&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Planifica%C3%A7%C3%A3o&amp;diff=2522</id>
		<title>Planificação</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Planifica%C3%A7%C3%A3o&amp;diff=2522"/>
		<updated>2008-05-17T18:23:18Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Esta planificação reúne a última informação sobre as novas funcionalidades do Moodle. Não é 100% real – as funcionalidades podem variar segundo os meios financeiros e humanos disponíveis.&lt;br /&gt;
&lt;br /&gt;
Quando sairá a próxima versão do Moodle?&lt;br /&gt;
Esta questão recorrente tem uma resposta simples: quando estiver terminada !&lt;br /&gt;
As datas mensionadas aqui são a titulo indicativo. Por vezes são respeitadas, mas é possível haver atrasos de dois meses. Se o atraso se prolonga, é por uma boa causa : melhorar a estabilidade e/ou introduzir novas funcionalidades.&lt;br /&gt;
Não serve de nada colocar a questão com insistência com a aproximação das datas de saída previstas, é necessário saber ser paciente: antes que uma nova versão possa ser declarada como estável, é necessário no mínimo, que todos os erros que bloqueiam (e críticos se possível) sejam resolvidos ou colocados no Tracker.&lt;br /&gt;
Se estiver pressionado e/ou deseja acelerar a saída da versão final, pode utilizar uma versão beta, se estiver perto de descobrir, declarar e eventualmente resolver os erros que estão no gestor de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Versão 2.0 – Prevista para o inicio de 2009 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Novas funcionalidades&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
•	O Moodle 2.0 necessitará do PHP 5.2&lt;br /&gt;
PHP 5.2 mínimo, para certas melhorias não disponíveis em PHP 4, e permitindo assim limpar certas partes do código. Para mais informações, ver : gophp5.org&lt;br /&gt;
&lt;br /&gt;
•	Melhorias na gestão de ficheiros – Moodle.com&lt;br /&gt;
Ficheiros API – mantém um referencial de ficheiros interno e regista o acesso a este.&lt;br /&gt;
Bases de dados API – permite aos utilizadores percorrer diferentes bases de dados externas a fim de escolher os ficheiros a integrar no Moodle.&lt;br /&gt;
Portfolio API – permite que o conteúdo do Moodle seja capturado e depositado em depósitos externos.&lt;br /&gt;
Estes três elementos são separados mas complementares, e por conseguinte serão desenvolvidos conjuntamente.&lt;br /&gt;
&lt;br /&gt;
•	Actividades condicionais – Moodle.com&lt;br /&gt;
Permitir as dependências e os caminhos forçados nas actividades (“Vocês não podem fazer isto sem terem terminado aquilo”).&lt;br /&gt;
&lt;br /&gt;
•	Planos de formação e competências – Moodle.com e Google Summer of Code&lt;br /&gt;
Apoia-se nos resultados/objectivos do Moodle 1.9 de modo que os indivíduos possam ter planos de formação que são actualizados quando os cursos são terminados.&lt;br /&gt;
&lt;br /&gt;
•	Editor HTML 2.0&lt;br /&gt;
Substituição do antigo editor HTMLarea por um novo, funcionando sobre mais navegadores, conforme XHTML estrito e permitindo uma melhor integração com os  ficheiros API.&lt;br /&gt;
&lt;br /&gt;
•	Interface de interconexão – Moodle.com e outros&lt;br /&gt;
Facilita aos utilizadores a possibilidade de encontrar e navegar em outros sitemas e depósitos externos ao Moodle, aumentando a rede do Moodle de diversas maneiras.&lt;br /&gt;
&lt;br /&gt;
•	Eliminação do antigo sistema de instalação/actualização da base de dados&lt;br /&gt;
O antigo sistema de instalação e actualização da base de dados utilizado no Moodle &amp;lt; o 1.7  será completamente suprimido, dando-se suporte unicamente ao novo esquema de base de dados que utiliza XML introduzido com a versão 1.7. &lt;br /&gt;
&lt;br /&gt;
Nota: O Moodle 2.0 necessita do PHP 5.1 no mínimo, devido a certas melhorias não disponiveis em PHP 4.&lt;br /&gt;
&lt;br /&gt;
•	Novo DataLib&lt;br /&gt;
&lt;br /&gt;
MDL-6605 O acesso à base de dados deve ser feito de modo que possamos : usar indicações preparadas em qualquer parte para aumentar a segurança e o desempenho, possamos colocar funções do datalib numa classe de modo a melhorar os testes de unidade (DB mock), e acabar com  a necessidade de slashes no userspace. Isto causará ruptura na 3ª parte dos módulos (mas repará-los não deverá ser demasiado complicado).&lt;br /&gt;
&lt;br /&gt;
•	Integração do Feedback do Módulo – Andrea Grab&lt;br /&gt;
&lt;br /&gt;
Melhorar e integrar como um módulo de base.&lt;br /&gt;
&lt;br /&gt;
•	Novo módulo Wiki, baseado em NWiki - DFWikiteam-UPC&lt;br /&gt;
&lt;br /&gt;
Melhorar, limpar e integrar como um módulo básico.&lt;br /&gt;
&lt;br /&gt;
•	Melhorias nos relatórios de testes - The Open University&lt;br /&gt;
&lt;br /&gt;
Melhorias principais aos relatórios do quis.&lt;br /&gt;
&lt;br /&gt;
•	Blog 2.0&lt;br /&gt;
&lt;br /&gt;
Ajustar os comentários aos Blogs (MDL-8776), assim como o apoio dos blogs externos.&lt;br /&gt;
&lt;br /&gt;
•	Serviço de mensagens 2.0&lt;br /&gt;
&lt;br /&gt;
Modificação do serviço de mensagens para utilizar plugins de entrada e saída, controlados pelos utilizadores.&lt;br /&gt;
&lt;br /&gt;
•	Fios RSS protegidos&lt;br /&gt;
&lt;br /&gt;
RSS obscuros alimentam URLs usando as chaves confidenciais, controladas por usuários.&lt;br /&gt;
&lt;br /&gt;
•	Mais Tags&lt;br /&gt;
&lt;br /&gt;
Tags para os cursos, as actividades outras coisas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Esperem igualmente ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
•	Informação de estudo API&lt;br /&gt;
&lt;br /&gt;
API para integrar os sistemas externos de modo a gerar as irformações dos estudantes.&lt;br /&gt;
&lt;br /&gt;
•	Exportação da Aprendizagem Do Projeto? - Moodle.com e l&#039;Open University of The Netherlands.&lt;br /&gt;
&lt;br /&gt;
Está previsto haver um formato de exportação muito simples de um curso moodle para o formato IMS LD, para mostrar o conceito e para ajudar a comunidade a começar a habituar-se à IMS LD.&lt;br /&gt;
&lt;br /&gt;
•	Integração de Turnitin - Dan Marsden com o apoio de Catalyst NZ&lt;br /&gt;
&lt;br /&gt;
•	Melhorar a utilização&lt;br /&gt;
&lt;br /&gt;
Melhorar a ergonomia para os utilizadores (tanto novos como antigos), graças a um aumento de testes, a disponibilidade selectiva das funcionalidades, e da procura ( como os projectos GSOC).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ver também ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Podem consultar as notas de actualização das versões que já saíram.&lt;br /&gt;
O Histórico das versões, para conhecer as datas de saída de todas as versões do moodle.&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2521</id>
		<title>manual de codigo</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2521"/>
		<updated>2008-05-17T18:15:25Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento de código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Qualquer projecto colaborativo precisa de consistência e estabilidade. A criação de código para a plataforma Moodle rege-se por um guia de desenvolvimento comum a toda a comunidade. Na verdade, algum do código mais antigo não respeita exactamente estas linhas orientadoras, no entanto, este ainda pode eventualmente ser submetido a alterações. Relativamente ao novo código, todo ele deverá respeitar estes padrões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regras Gerais ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.	Todos os ficheiros de código deverão usar a extensão .php.&lt;br /&gt;
&lt;br /&gt;
2.	Todos os ficheiros de templates deverão usar a extensão .html.&lt;br /&gt;
&lt;br /&gt;
3.	Todos os ficheiros de texto deverão usar o estilo Unix de formatação de texto.&lt;br /&gt;
&lt;br /&gt;
4.	Todos os tags php devem estar preenchido (por exemplo &amp;lt;?php ?&amp;gt; ao invés de &amp;lt;? ?&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
5.	As referências de copyright já existentes deverão ser mantidas. Se necessário o criador de código pode criar as suas próprias referencias.&lt;br /&gt;
&lt;br /&gt;
6.	Todos os ficheiros deverão conter o include do ficheiro principal config.php.&lt;br /&gt;
&lt;br /&gt;
7.	Qualquer outra utilização de iclude’s/require’s deverá conter a localização completa precedida de $CFG-&amp;gt;dirroot ou $CFG-&amp;gt;libdir no caso de relative include’s.&lt;br /&gt;
&lt;br /&gt;
8.	Cada ficheiro deverá verificar se o utilizador está correctamente autenticado através das funções require_login() e has_capability() ou require_capability().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os acessos às bases de dados deverão, sempre que possível, usar as funções definidas em lib/dmllib.php – estas permitem a compatibilidade com um vasto número de bases de dados e a grande maioria das operações desejadas. Se se pretender escrever código SQL então dever-se-á verificar se: funciona em qualquer plataforma; está restringido às funções específicas do seu código (geralmente um ficheiro lib.php); e está claramente comentado.&lt;br /&gt;
&lt;br /&gt;
10.	Não deverão ser criadas/utilizadas variáveis globais excepto nos standards $CFG, $SESSION, $THEME, $SITE, $COURSE e $USER.&lt;br /&gt;
&lt;br /&gt;
11.	Qualquer variável deverá ser inicializada ou pelo menos testada a sua existência utilizando isset() ou empty() antes de ser utilizada.&lt;br /&gt;
&lt;br /&gt;
12.	Todas as strings devem ser traduzíveis - Os novos textos serão criados nos ficheiros &amp;quot;lang/pt_utf8&amp;quot; com palavras concisas em inglês (letra minúscula) e sua tradução completa em português, recuperandos no código utilizando as funções get_string() ou print_string().  Não se deverão apagar strings, desta forma  garante-se a compatibilidade entre os diversos packs linguísticos.&lt;br /&gt;
&lt;br /&gt;
13.	Não se devem usar as funções p() e s() nos prints(outputs) das strings linguísticas, estas não foram concebidas para utilizar html com tags. Para este efeito poderá ser utilizada a função echo().&lt;br /&gt;
&lt;br /&gt;
14.	Todos os erros deverão ser visualizados utilizando a função print_error() para maximizar a tradução e ajudar o utilizador (acedendo automaticamente ao Moodle Docs).&lt;br /&gt;
&lt;br /&gt;
15.	Todos os ficheiros de ajuda (help files) devem ser traduzíveis – Os novos textos devem ser criados na directoria &amp;quot;lang/pt_utf8/help&amp;quot; e acedidos através da função helpbutton(). Quando se pretender actualizar estes ficheiros:&lt;br /&gt;
&lt;br /&gt;
•	Para uma pequena actualização, e no caso de a tradução antiga ser minimamente credível, pode-se efectuar a alteração mas esta deve ser submetida para translation@moodle.org.&lt;br /&gt;
&lt;br /&gt;
•	Para alterações significativas, deve ser criado um novo ficheiro com um valor incrementado (por exemplo: filename2.html) de modo a que outros utilizadores possam compreender que se trata de uma nova versão do ficheiro em causa. Obviamente o novo código e os índices dos ficheiros de ajuda deverão ser actualizados de acordo com as versões mais recentes.  &lt;br /&gt;
&lt;br /&gt;
16.	A informação recebida a partir do browser (utilizando os métodos GET e POST) tem automaticamente as “magic_quotes” aplicadas (independentemente das definições PHP) pelo que podem ser inseridas de forma segura na base de dados. O resto da informação (obtida a partir de ficheiros ou de bases de dados) deve ser submetida à função addslashes() antes de ser inserida na base de dados. &lt;br /&gt;
&lt;br /&gt;
17.	MUITO IMPORTANTE: Todos os textos dentro do Moodle, especialmente os que são introduzidos pelos utilizadores, devem ser mostrados utilizando a função format_text(). Esta assegura que o texto é filtrado e ajustado correctamente.&lt;br /&gt;
&lt;br /&gt;
18.	As acções dos utilizadores devem ser gravadas utilizando a função add_to_log(). Estes dados são utilizados para as “Informações de actividade” e “Registos”.&lt;br /&gt;
&lt;br /&gt;
19.	Para criar um link HTML, deverá utilizar a sua localização completa. Por exemplo $CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99 em vez de view.php?id=99. Isto assegura, entre outras situações, que o código funciona se for chamado por um script noutra pasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estilo do código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
É compreensível que possa ser frustrante e difícil alterar o estilo de programação de cada pessoa que já tenha trabalhado noutros projectos, mas se compararmos essa frustração com a das pessoas que mais a frente irão tentar encontrar o sentido do código do Moodle, verificamos que existe a necessidade de definir algumas regras de concepção de código para que a diversidade de estilos não se mostre um entrave a percepção do mesmo. Existem, como e natural, pontos fortes e pontos fracos do estilo adoptado mas é este estilo apresentado e que se deverá utilizar.&lt;br /&gt;
 &lt;br /&gt;
1.	Nunca utilizar tabulações ( TAB ) na identação do código. Utilizar sempre 4 espaços (  SPACE ).&lt;br /&gt;
&lt;br /&gt;
2.	O nome das variáveis terá de ser de fácil leitura, palavras com significado em inglês e integralmente constituídas por letras minúsculas. Se eventualmente for necessário mais de uma palavra, estas deveram estar juntas tentando serem as mais pequenas possíveis. A definição de matrizes de objectos ( arrays ) deverá ser feita através de palavras no plural.&lt;br /&gt;
&lt;br /&gt;
Exemplos:&lt;br /&gt;
&lt;br /&gt;
     B: $quiz&lt;br /&gt;
     B: $errorstring&lt;br /&gt;
     B: $assignments (for an array of objects)&lt;br /&gt;
     B: $i (but only in little loops)&lt;br /&gt;
     M: $Quiz&lt;br /&gt;
     M: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
     M: $error_string&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa definição M – má definição&lt;br /&gt;
&lt;br /&gt;
3.	Todas as constantes deverão estar definidas em Maiúsculas e o seu inicio será o nome do módulo. As palavras serão separadas por “underscores”.&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes de funções terão de ser compostas por palavras simples em Inglês e começaram com o nome do módulo a que pertencem para evitar conflitos com outros módulos. Estas estarão separadas por “undercores”. Se possível, todos os parâmetros terão valor por defeito. Deverá certificar-se que não existe espaço entre o nome da função e o que se lhe segue (parêntesis).&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     function forum_set_display_mode($mode=0) {&lt;br /&gt;
         global $USER, $CFG;&lt;br /&gt;
         &lt;br /&gt;
         if ($mode) {&lt;br /&gt;
             $USER-&amp;gt;mode = $mode;&lt;br /&gt;
         } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
             $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
5.	Todos os blocos de código terão de ser fechados com chavetas, independentemente de serem constituídos por apenas uma linha. O Moodle utiliza este estilo:&lt;br /&gt;
 &lt;br /&gt;
     if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
         if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
             error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
6.	As strings deveram estar definidas entre pelicas ( caracter ‘ ), sempre que possivel.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     $var = &#039;some text without any variables&#039;;&lt;br /&gt;
     $var = &#039;with special characters like a new line &#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
     $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
     $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7.	Todo o código desenvolvido deverá ser devidamente comentado, para que o desenrolar do código seja percebido tal como o objectivo de cada função e variáveis.&lt;br /&gt;
&lt;br /&gt;
•	Todas as funções e classes deveram usar o formato  phpDoc,  para que a documentação seja automaticamente criada.&lt;br /&gt;
&lt;br /&gt;
•	Os comentarios de uma so linha deverão utilizar //, antes da sua descrição e deverão estar alinhados com o código que comentam e na linha anterior.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
     /**&lt;br /&gt;
     * The description should be first, with asterisks laid out exactly&lt;br /&gt;
     * like this example. If you want to refer to a another function,&lt;br /&gt;
     * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
     * for each parameter as follows.&lt;br /&gt;
     *&lt;br /&gt;
     * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
     * @return mixed&lt;br /&gt;
     */&lt;br /&gt;
     function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
         if (!$ratings) {&lt;br /&gt;
             $ratings = array();     // Initialize the empty array&lt;br /&gt;
             if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                 // Process each rating in turn&lt;br /&gt;
                 foreach ($rates as $rate) {&lt;br /&gt;
     ....etc&lt;br /&gt;
&lt;br /&gt;
8.	O espaço em branco pode ser usado sem problema e pode ser bastante útil para separar partes de código tornando-o mais claro no geral. Geralmente, devera existir um espaço entre as chavetas de uma função e linhas normais de código, enquanto entre chavetas e variáveis ou funções não devera existir nenhum.&lt;br /&gt;
&lt;br /&gt;
Exemplo: &lt;br /&gt;
 &lt;br /&gt;
     foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
         process($thing);&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     if ($x == $y) {&lt;br /&gt;
         $a = $b;&lt;br /&gt;
     } else if ($x == $z) {&lt;br /&gt;
         $a = $c;&lt;br /&gt;
     } else {&lt;br /&gt;
         $a = $d;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
9.	Quando se efectuar uma copia de um determinado objecto, deverá ser sempre utilizada a função clone(), que originalmente esta disponível apenas em PHP5 (caso contrario terá apenas uma referencia para o primeiro objecto). Moodle garantira que este método funcionara, também em php4.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     M:   $b = $a;&lt;br /&gt;
     B:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa utilização M – má utilização&lt;br /&gt;
&lt;br /&gt;
Caso o que esteja  a ser copiado não seja um objecto mas sim um conjunto de objectos (ex: arrays de objectos) deverá ser utilizada a função fullclone() de forma semelhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estruturas das Bases de Dados ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para a criação de tabelas devem ser tomadas em conta as seguintes regras de desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
1.	Todas as tabelas devem ter uma variável que é automaticamente incrementada que servirá para a identificação de campos (ex. id field (INT10))&lt;br /&gt;
&lt;br /&gt;
2.	A tabela principal que contém instâncias de cada módulo, deve ter o mesmo nome do módulo (ex. questionário) e deve ainda conter obrigatoriamente os seguintes campos:&lt;br /&gt;
&lt;br /&gt;
•	Id – como foi descrito na regra anterior&lt;br /&gt;
&lt;br /&gt;
•	Course – id do curso a que cada instância pertence&lt;br /&gt;
&lt;br /&gt;
•	Name – o nome completo de cada intância do módulo&lt;br /&gt;
&lt;br /&gt;
3.	Outras tabelas que estejam associadas ao módulo que contenham matérias sobre “coisas” deveram ser chamadas questionário_coisas (de notar que o nome está no plural).&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes das tabelas e das colunas devem evitar conter quaisquer palavras que esteja já reservada nas bases de dados, pelo que se recomenda uma anterior verificação das mesmas.&lt;br /&gt;
&lt;br /&gt;
5.	Os nomes das colunas devem ser sempre em letras minúsculas, devem ser nomes simples e pequenos, seguindo as mesmas regras aplicáveis para os nomes das variáveis.&lt;br /&gt;
&lt;br /&gt;
6.	Sempre que for possível, as colunas que contenham referência a um campo id de outra tabela (ex. módulo) deve ter o nome módulo_id (Nota: esta convenção não foi utilizada nas tabelas de versões iniciais do moodle).&lt;br /&gt;
&lt;br /&gt;
7.	Os campos booleanos devem ser implementados como campos de variáveis inteiras (ex INT4) que contêm os valores 0 ou 1, para suportarem uma posterior necessidade de essas variáveis conterem mais valores.&lt;br /&gt;
&lt;br /&gt;
8.	Muitas das tabelas existentes deveram ter um campo que é modificado em função do passar do tempo (INT10) que será actualizada com a data actual que pode ser obtida com a função PHP time().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os campos devem ser inicializados com um valor inicial (que tenha sentido no contexto onde está inserido).&lt;br /&gt;
&lt;br /&gt;
10.	Cada nome de tabela deve começar com o prefixo da base de dados ($CFG-&amp;gt;prefixo). Na maioria dos casos, isto é automaticamente feito. Também, no Postgres, o nome de cada índice tem de começar com o mesmo prefixo.&lt;br /&gt;
&lt;br /&gt;
11.	Para garantir a compatibilidade entre bases de dados devem ser seguidas simples regras como o uso da palavra chave AS (apenas de for necessário alias em tabelas\colunas, claro):&lt;br /&gt;
&lt;br /&gt;
•	Não usar a palavra chave AS para alias de tabelas.&lt;br /&gt;
&lt;br /&gt;
•	Usar a palavra chave AS para alias de colunas.&lt;br /&gt;
&lt;br /&gt;
12.	Nunca criar UNIQUE KEYS (restrições) sem nenhuma razão específica. Em alternativa, usar UNIQUE INDEXes. No futuro, se for decidido adicionar integridade referencial no Moodle e for necessário UNIQUE KEYS, serão usadas, mas por agora este facto não se irá verificar. De notar ainda que o editor XMLDB permite especificar restrições XMLDB-only UNIQUE e FOREIGN (o que é um ponto positivo, com o objectivo de ter o XML bem definido) mas apenas os INDEXes sublinhados serão gerados na base de dados.&lt;br /&gt;
&lt;br /&gt;
13.	Essas UNIQUE KEYS XMLDB-only (ler ponto anterior) apenas podem ser definidas se esse campo\campos vão ser alvo de alguma (também XMLDB-only) FOREIGN KEY. Caso contrário, devem ser criadas como UNIQUE INDEXes.&lt;br /&gt;
&lt;br /&gt;
14.	As tabelas associadas com um bloco devem seguir a seguinte convenção na atribuição dos seus nomes: &lt;br /&gt;
$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + nome_do_bloco+ o_restante. Por exemplo assumindo que $CFG-&amp;gt;prefix é ‘mdl_’, todas as tabelas do bloco “rss_cliente” devem começar com ‘mdl_block_rss_client’ (sendo possível que se adicione mais palavras no final, por ex. ‘mdl_block_rss_client_outratabela’…). Esta regra será 100% forçada com o Moodle 2.0, dando entretanto tempo aos programadores. Para mais informações consultar Task 6786.&lt;br /&gt;
15.	Nunca fazer mudanças em porções de código ESTÁVEIS. Este facto poderá provocar sérios erros quando os utilizadores actualizarem a sua versão estável para outra.&lt;br /&gt;
&lt;br /&gt;
16.	Quando existir referência a uma variável inteira em consultas SQL, não por o valor entre pelicas. Por exemplo, get_records_select(&#039;question&#039;, &amp;quot;category=$catid&amp;quot;) está correcto. Já o exemplo get_records_select(&#039;question&#039;, &amp;quot;category=&#039;$catid&#039;&amp;quot;) está incorrecto. Este caso pode dar origem a que sejam ocultados erros em que o valor de $catid não esteja definido. (Esta thread explica este caso).&lt;br /&gt;
 &lt;br /&gt;
[[en:Coding]]&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2520</id>
		<title>manual de codigo</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2520"/>
		<updated>2008-05-17T18:14:53Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento de código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Qualquer projecto colaborativo precisa de consistência e estabilidade. A criação de código para a plataforma Moodle rege-se por um guia de desenvolvimento comum a toda a comunidade. Na verdade, algum do código mais antigo não respeita exactamente estas linhas orientadoras, no entanto, este ainda pode eventualmente ser submetido a alterações. Relativamente ao novo código, todo ele deverá respeitar estes padrões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regras Gerais ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.	Todos os ficheiros de código deverão usar a extensão .php.&lt;br /&gt;
&lt;br /&gt;
2.	Todos os ficheiros de templates deverão usar a extensão .html.&lt;br /&gt;
&lt;br /&gt;
3.	Todos os ficheiros de texto deverão usar o estilo Unix de formatação de texto.&lt;br /&gt;
&lt;br /&gt;
4.	Todos os tags php devem estar preenchido (por exemplo &amp;lt;?php ?&amp;gt; ao invés de &amp;lt;? ?&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
5.	As referências de copyright já existentes deverão ser mantidas. Se necessário o criador de código pode criar as suas próprias referencias.&lt;br /&gt;
&lt;br /&gt;
6.	Todos os ficheiros deverão conter o include do ficheiro principal config.php.&lt;br /&gt;
&lt;br /&gt;
7.	Qualquer outra utilização de iclude’s/require’s deverá conter a localização completa precedida de $CFG-&amp;gt;dirroot ou $CFG-&amp;gt;libdir no caso de relative include’s.&lt;br /&gt;
&lt;br /&gt;
8.	Cada ficheiro deverá verificar se o utilizador está correctamente autenticado através das funções require_login() e has_capability() ou require_capability().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os acessos às bases de dados deverão, sempre que possível, usar as funções definidas em lib/dmllib.php – estas permitem a compatibilidade com um vasto número de bases de dados e a grande maioria das operações desejadas. Se se pretender escrever código SQL então dever-se-á verificar se: funciona em qualquer plataforma; está restringido às funções específicas do seu código (geralmente um ficheiro lib.php); e está claramente comentado.&lt;br /&gt;
&lt;br /&gt;
10.	Não deverão ser criadas/utilizadas variáveis globais excepto nos standards $CFG, $SESSION, $THEME, $SITE, $COURSE e $USER.&lt;br /&gt;
&lt;br /&gt;
11.	Qualquer variável deverá ser inicializada ou pelo menos testada a sua existência utilizando isset() ou empty() antes de ser utilizada.&lt;br /&gt;
&lt;br /&gt;
12.	Todas as strings devem ser traduzíveis - Os novos textos serão criados nos ficheiros &amp;quot;lang/pt_utf8&amp;quot; com palavras concisas em inglês (letra minúscula) e sua tradução completa em português, recuperandos no código utilizando as funções get_string() ou print_string().  Não se deverão apagar strings, desta forma  garante-se a compatibilidade entre os diversos packs linguísticos.&lt;br /&gt;
&lt;br /&gt;
13.	Não se devem usar as funções p() e s() nos prints(outputs) das strings linguísticas, estas não foram concebidas para utilizar html com tags. Para este efeito poderá ser utilizada a função echo().&lt;br /&gt;
&lt;br /&gt;
14.	Todos os erros deverão ser visualizados utilizando a função print_error() para maximizar a tradução e ajudar o utilizador (acedendo automaticamente ao Moodle Docs).&lt;br /&gt;
&lt;br /&gt;
15.	Todos os ficheiros de ajuda (help files) devem ser traduzíveis – Os novos textos devem ser criados na directoria &amp;quot;lang/pt_utf8/help&amp;quot; e acedidos através da função helpbutton(). Quando se pretender actualizar estes ficheiros:&lt;br /&gt;
&lt;br /&gt;
•	Para uma pequena actualização, e no caso de a tradução antiga ser minimamente credível, pode-se efectuar a alteração mas esta deve ser submetida para translation@moodle.org.&lt;br /&gt;
&lt;br /&gt;
•	Para alterações significativas, deve ser criado um novo ficheiro com um valor incrementado (por exemplo: filename2.html) de modo a que outros utilizadores possam compreender que se trata de uma nova versão do ficheiro em causa. Obviamente o novo código e os índices dos ficheiros de ajuda deverão ser actualizados de acordo com as versões mais recentes.  &lt;br /&gt;
&lt;br /&gt;
16.	A informação recebida a partir do browser (utilizando os métodos GET e POST) tem automaticamente as “magic_quotes” aplicadas (independentemente das definições PHP) pelo que podem ser inseridas de forma segura na base de dados. O resto da informação (obtida a partir de ficheiros ou de bases de dados) deve ser submetida à função addslashes() antes de ser inserida na base de dados. &lt;br /&gt;
&lt;br /&gt;
17.	MUITO IMPORTANTE: Todos os textos dentro do Moodle, especialmente os que são introduzidos pelos utilizadores, devem ser mostrados utilizando a função format_text(). Esta assegura que o texto é filtrado e ajustado correctamente.&lt;br /&gt;
&lt;br /&gt;
18.	As acções dos utilizadores devem ser gravadas utilizando a função add_to_log(). Estes dados são utilizados para as “Informações de actividade” e “Registos”.&lt;br /&gt;
&lt;br /&gt;
19.	Para criar um link HTML, deverá utilizar a sua localização completa. Por exemplo $CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99 em vez de view.php?id=99. Isto assegura, entre outras situações, que o código funciona se for chamado por um script noutra pasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estilo do código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
É compreensível que possa ser frustrante e difícil alterar o estilo de programação de cada pessoa que já tenha trabalhado noutros projectos, mas se compararmos essa frustração com a das pessoas que mais a frente irão tentar encontrar o sentido do código do Moodle, verificamos que existe a necessidade de definir algumas regras de concepção de código para que a diversidade de estilos não se mostre um entrave a percepção do mesmo. Existem, como e natural, pontos fortes e pontos fracos do estilo adoptado mas é este estilo apresentado e que se deverá utilizar.&lt;br /&gt;
 &lt;br /&gt;
1.	Nunca utilizar tabulações ( TAB ) na identação do código. Utilizar sempre 4 espaços (  SPACE ).&lt;br /&gt;
&lt;br /&gt;
2.	O nome das variáveis terá de ser de fácil leitura, palavras com significado em inglês e integralmente constituídas por letras minúsculas. Se eventualmente for necessário mais de uma palavra, estas deveram estar juntas tentando serem as mais pequenas possíveis. A definição de matrizes de objectos ( arrays ) deverá ser feita através de palavras no plural.&lt;br /&gt;
&lt;br /&gt;
Exemplos:&lt;br /&gt;
&lt;br /&gt;
     B: $quiz&lt;br /&gt;
     B: $errorstring&lt;br /&gt;
     B: $assignments (for an array of objects)&lt;br /&gt;
     B: $i (but only in little loops)&lt;br /&gt;
     M: $Quiz&lt;br /&gt;
     M: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
     M: $error_string&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa definição M – má definição&lt;br /&gt;
&lt;br /&gt;
3.	Todas as constantes deverão estar definidas em Maiúsculas e o seu inicio será o nome do módulo. As palavras serão separadas por “underscores”.&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes de funções terão de ser compostas por palavras simples em Inglês e começaram com o nome do módulo a que pertencem para evitar conflitos com outros módulos. Estas estarão separadas por “undercores”. Se possível, todos os parâmetros terão valor por defeito. Deverá certificar-se que não existe espaço entre o nome da função e o que se lhe segue (parêntesis).&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     function forum_set_display_mode($mode=0) {&lt;br /&gt;
         global $USER, $CFG;&lt;br /&gt;
         &lt;br /&gt;
         if ($mode) {&lt;br /&gt;
             $USER-&amp;gt;mode = $mode;&lt;br /&gt;
         } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
             $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
5.	Todos os blocos de código terão de ser fechados com chavetas, independentemente de serem constituídos por apenas uma linha. O Moodle utiliza este estilo:&lt;br /&gt;
 &lt;br /&gt;
     if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
         if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
             error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
6.	As strings deveram estar definidas entre pelicas ( caracter ‘ ), sempre que possivel.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     $var = &#039;some text without any variables&#039;;&lt;br /&gt;
     $var = &#039;with special characters like a new line &#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
     $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
     $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7.	Todo o código desenvolvido deverá ser devidamente comentado, para que o desenrolar do código seja percebido tal como o objectivo de cada função e variáveis.&lt;br /&gt;
&lt;br /&gt;
•	Todas as funções e classes deveram usar o formato  phpDoc,  para que a documentação seja automaticamente criada.&lt;br /&gt;
&lt;br /&gt;
•	Os comentarios de uma so linha deverão utilizar //, antes da sua descrição e deverão estar alinhados com o código que comentam e na linha anterior.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
     /**&lt;br /&gt;
     * The description should be first, with asterisks laid out exactly&lt;br /&gt;
     * like this example. If you want to refer to a another function,&lt;br /&gt;
     * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
     * for each parameter as follows.&lt;br /&gt;
     *&lt;br /&gt;
     * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
     * @return mixed&lt;br /&gt;
     */&lt;br /&gt;
     function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
         if (!$ratings) {&lt;br /&gt;
             $ratings = array();     // Initialize the empty array&lt;br /&gt;
             if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                 // Process each rating in turn&lt;br /&gt;
                 foreach ($rates as $rate) {&lt;br /&gt;
     ....etc&lt;br /&gt;
&lt;br /&gt;
8.	O espaço em branco pode ser usado sem problema e pode ser bastante útil para separar partes de código tornando-o mais claro no geral. Geralmente, devera existir um espaço entre as chavetas de uma função e linhas normais de código, enquanto entre chavetas e variáveis ou funções não devera existir nenhum.&lt;br /&gt;
&lt;br /&gt;
Exemplo: &lt;br /&gt;
 &lt;br /&gt;
     foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
         process($thing);&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     if ($x == $y) {&lt;br /&gt;
         $a = $b;&lt;br /&gt;
     } else if ($x == $z) {&lt;br /&gt;
         $a = $c;&lt;br /&gt;
     } else {&lt;br /&gt;
         $a = $d;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
9.	Quando se efectuar uma copia de um determinado objecto, deverá ser sempre utilizada a função clone(), que originalmente esta disponível apenas em PHP5 (caso contrario terá apenas uma referencia para o primeiro objecto). Moodle garantira que este método funcionara, também em php4.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     M:   $b = $a;&lt;br /&gt;
     B:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa utilização M – má utilização&lt;br /&gt;
&lt;br /&gt;
Caso o que esteja  a ser copiado não seja um objecto mas sim um conjunto de objectos (ex: arrays de objectos) deverá ser utilizada a função fullclone() de forma semelhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estruturas das Bases de Dados ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para a criação de tabelas devem ser tomadas em conta as seguintes regras de desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
1.	Todas as tabelas devem ter uma variável que é automaticamente incrementada que servirá para a identificação de campos (ex. id field (INT10))&lt;br /&gt;
&lt;br /&gt;
2.	A tabela principal que contém instâncias de cada módulo, deve ter o mesmo nome do módulo (ex. questionário) e deve ainda conter obrigatoriamente os seguintes campos:&lt;br /&gt;
&lt;br /&gt;
•	Id – como foi descrito na regra anterior&lt;br /&gt;
&lt;br /&gt;
•	Course – id do curso a que cada instância pertence&lt;br /&gt;
&lt;br /&gt;
•	Name – o nome completo de cada intância do módulo&lt;br /&gt;
&lt;br /&gt;
3.	Outras tabelas que estejam associadas ao módulo que contenham matérias sobre “coisas” deveram ser chamadas questionário_coisas (de notar que o nome está no plural).&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes das tabelas e das colunas devem evitar conter quaisquer palavras que esteja já reservada nas bases de dados, pelo que se recomenda uma anterior verificação das mesmas.&lt;br /&gt;
&lt;br /&gt;
5.	Os nomes das colunas devem ser sempre em letras minúsculas, devem ser nomes simples e pequenos, seguindo as mesmas regras aplicáveis para os nomes das variáveis.&lt;br /&gt;
&lt;br /&gt;
6.	Sempre que for possível, as colunas que contenham referência a um campo id de outra tabela (ex. módulo) deve ter o nome módulo_id (Nota: esta convenção não foi utilizada nas tabelas de versões iniciais do moodle).&lt;br /&gt;
&lt;br /&gt;
7.	Os campos booleanos devem ser implementados como campos de variáveis inteiras (ex INT4) que contêm os valores 0 ou 1, para suportarem uma posterior necessidade de essas variáveis conterem mais valores.&lt;br /&gt;
&lt;br /&gt;
8.	Muitas das tabelas existentes deveram ter um campo que é modificado em função do passar do tempo (INT10) que será actualizada com a data actual que pode ser obtida com a função PHP time().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os campos devem ser inicializados com um valor inicial (que tenha sentido no contexto onde está inserido).&lt;br /&gt;
&lt;br /&gt;
10.	Cada nome de tabela deve começar com o prefixo da base de dados ($CFG-&amp;gt;prefixo). Na maioria dos casos, isto é automaticamente feito. Também, no Postgres, o nome de cada índice tem de começar com o mesmo prefixo.&lt;br /&gt;
&lt;br /&gt;
11.	Para garantir a compatibilidade entre bases de dados devem ser seguidas simples regras como o uso da palavra chave AS (apenas de for necessário alias em tabelas\colunas, claro):&lt;br /&gt;
&lt;br /&gt;
•	Não usar a palavra chave AS para alias de tabelas.&lt;br /&gt;
&lt;br /&gt;
•	Usar a palavra chave AS para alias de colunas.&lt;br /&gt;
&lt;br /&gt;
12.	Nunca criar UNIQUE KEYS (restrições) sem nenhuma razão específica. Em alternativa, usar UNIQUE INDEXes. No futuro, se for decidido adicionar integridade referencial no Moodle e for necessário UNIQUE KEYS, serão usadas, mas por agora este facto não se irá verificar. De notar ainda que o editor XMLDB permite especificar restrições XMLDB-only UNIQUE e FOREIGN (o que é um ponto positivo, com o objectivo de ter o XML bem definido) mas apenas os INDEXes sublinhados serão gerados na base de dados.&lt;br /&gt;
&lt;br /&gt;
13.	Essas UNIQUE KEYS XMLDB-only (ler ponto anterior) apenas podem ser definidas se esse campo\campos vão ser alvo de alguma (também XMLDB-only) FOREIGN KEY. Caso contrário, devem ser criadas como UNIQUE INDEXes.&lt;br /&gt;
&lt;br /&gt;
14.	As tabelas associadas com um bloco devem seguir a seguinte convenção na atribuição dos seus nomes: &lt;br /&gt;
$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + nome_do_bloco+ o_restante. Por exemplo assumindo que $CFG-&amp;gt;prefix é ‘mdl_’, todas as tabelas do bloco “rss_cliente” devem começar com ‘mdl_block_rss_client’ (sendo possível que se adicione mais palavras no final, por ex. ‘mdl_block_rss_client_outratabela’…). Esta regra será 100% forçada com o Moodle 2.0, dando entretanto tempo aos programadores. Para mais informações consultar Task 6786.&lt;br /&gt;
15.	Nunca fazer mudanças em porções de código ESTÁVEIS. Este facto poderá provocar sérios erros quando os utilizadores actualizarem a sua versão estável para outra.&lt;br /&gt;
&lt;br /&gt;
16.	Quando existir referência a uma variável inteira em consultas SQL, não por o valor entre pelicas. Por exemplo, get_records_select(&#039;question&#039;, &amp;quot;category=$catid&amp;quot;) está correcto. Já o exemplo get_records_select(&#039;question&#039;, &amp;quot;category=&#039;$catid&#039;&amp;quot;) está incorrecto. Este caso pode dar origem a que sejam ocultados erros em que o valor de $catid não esteja definido. (Esta thread explica este caso).&lt;br /&gt;
 &lt;br /&gt;
[[en:Coding]]&lt;br /&gt;
[[es:Manual de Estilo de Código]]&lt;br /&gt;
[[ja:コーディング]]&lt;br /&gt;
[[zh:代码指南]]&lt;br /&gt;
[[pl:Kodowanie]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2519</id>
		<title>manual de codigo</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=manual_de_codigo&amp;diff=2519"/>
		<updated>2008-05-17T17:58:38Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Desenvolvimento de código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Qualquer projecto colaborativo precisa de consistência e estabilidade. A criação de código para a plataforma Moodle rege-se por um guia de desenvolvimento comum a toda a comunidade. Na verdade, algum do código mais antigo não respeita exactamente estas linhas orientadoras, no entanto, este ainda pode eventualmente ser submetido a alterações. Relativamente ao novo código, todo ele deverá respeitar estes padrões.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regras Gerais ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.	Todos os ficheiros de código deverão usar a extensão .php.&lt;br /&gt;
&lt;br /&gt;
2.	Todos os ficheiros de templates deverão usar a extensão .html.&lt;br /&gt;
&lt;br /&gt;
3.	Todos os ficheiros de texto deverão usar o estilo Unix de formatação de texto.&lt;br /&gt;
&lt;br /&gt;
4.	Todos os tags php devem estar preenchido (por exemplo &amp;lt;?php ?&amp;gt; ao invés de &amp;lt;? ?&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
5.	As referências de copyright já existentes deverão ser mantidas. Se necessário o criador de código pode criar as suas próprias referencias.&lt;br /&gt;
&lt;br /&gt;
6.	Todos os ficheiros deverão conter o include do ficheiro principal config.php.&lt;br /&gt;
&lt;br /&gt;
7.	Qualquer outra utilização de iclude’s/require’s deverá conter a localização completa precedida de $CFG-&amp;gt;dirroot ou $CFG-&amp;gt;libdir no caso de relative include’s.&lt;br /&gt;
&lt;br /&gt;
8.	Cada ficheiro deverá verificar se o utilizador está correctamente autenticado através das funções require_login() e has_capability() ou require_capability().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os acessos às bases de dados deverão, sempre que possível, usar as funções definidas em lib/dmllib.php – estas permitem a compatibilidade com um vasto número de bases de dados e a grande maioria das operações desejadas. Se se pretender escrever código SQL então dever-se-á verificar se: funciona em qualquer plataforma; está restringido às funções específicas do seu código (geralmente um ficheiro lib.php); e está claramente comentado.&lt;br /&gt;
&lt;br /&gt;
10.	Não deverão ser criadas/utilizadas variáveis globais excepto nos standards $CFG, $SESSION, $THEME, $SITE, $COURSE e $USER.&lt;br /&gt;
&lt;br /&gt;
11.	Qualquer variável deverá ser inicializada ou pelo menos testada a sua existência utilizando isset() ou empty() antes de ser utilizada.&lt;br /&gt;
&lt;br /&gt;
12.	Todas as strings devem ser traduzíveis - Os novos textos serão criados nos ficheiros &amp;quot;lang/pt_utf8&amp;quot; com palavras concisas em inglês (letra minúscula) e sua tradução completa em português, recuperandos no código utilizando as funções get_string() ou print_string().  Não se deverão apagar strings, desta forma  garante-se a compatibilidade entre os diversos packs linguísticos.&lt;br /&gt;
&lt;br /&gt;
13.	Não se devem usar as funções p() e s() nos prints(outputs) das strings linguísticas, estas não foram concebidas para utilizar html com tags. Para este efeito poderá ser utilizada a função echo().&lt;br /&gt;
&lt;br /&gt;
14.	Todos os erros deverão ser visualizados utilizando a função print_error() para maximizar a tradução e ajudar o utilizador (acedendo automaticamente ao Moodle Docs).&lt;br /&gt;
&lt;br /&gt;
15.	Todos os ficheiros de ajuda (help files) devem ser traduzíveis – Os novos textos devem ser criados na directoria &amp;quot;lang/pt_utf8/help&amp;quot; e acedidos através da função helpbutton(). Quando se pretender actualizar estes ficheiros:&lt;br /&gt;
&lt;br /&gt;
•	Para uma pequena actualização, e no caso de a tradução antiga ser minimamente credível, pode-se efectuar a alteração mas esta deve ser submetida para translation@moodle.org.&lt;br /&gt;
&lt;br /&gt;
•	Para alterações significativas, deve ser criado um novo ficheiro com um valor incrementado (por exemplo: filename2.html) de modo a que outros utilizadores possam compreender que se trata de uma nova versão do ficheiro em causa. Obviamente o novo código e os índices dos ficheiros de ajuda deverão ser actualizados de acordo com as versões mais recentes.  &lt;br /&gt;
&lt;br /&gt;
16.	A informação recebida a partir do browser (utilizando os métodos GET e POST) tem automaticamente as “magic_quotes” aplicadas (independentemente das definições PHP) pelo que podem ser inseridas de forma segura na base de dados. O resto da informação (obtida a partir de ficheiros ou de bases de dados) deve ser submetida à função addslashes() antes de ser inserida na base de dados. &lt;br /&gt;
&lt;br /&gt;
17.	MUITO IMPORTANTE: Todos os textos dentro do Moodle, especialmente os que são introduzidos pelos utilizadores, devem ser mostrados utilizando a função format_text(). Esta assegura que o texto é filtrado e ajustado correctamente.&lt;br /&gt;
&lt;br /&gt;
18.	As acções dos utilizadores devem ser gravadas utilizando a função add_to_log(). Estes dados são utilizados para as “Informações de actividade” e “Registos”.&lt;br /&gt;
&lt;br /&gt;
19.	Para criar um link HTML, deverá utilizar a sua localização completa. Por exemplo $CFG-&amp;gt;wwwroot/mod/blonk/view.php?id=99 em vez de view.php?id=99. Isto assegura, entre outras situações, que o código funciona se for chamado por um script noutra pasta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estilo do código ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
É compreensível que possa ser frustrante e difícil alterar o estilo de programação de cada pessoa que já tenha trabalhado noutros projectos, mas se compararmos essa frustração com a das pessoas que mais a frente irão tentar encontrar o sentido do código do Moodle, verificamos que existe a necessidade de definir algumas regras de concepção de código para que a diversidade de estilos não se mostre um entrave a percepção do mesmo. Existem, como e natural, pontos fortes e pontos fracos do estilo adoptado mas é este estilo apresentado e que se deverá utilizar.&lt;br /&gt;
 &lt;br /&gt;
1.	Nunca utilizar tabulações ( TAB ) na identação do código. Utilizar sempre 4 espaços (  SPACE ).&lt;br /&gt;
&lt;br /&gt;
2.	O nome das variáveis terá de ser de fácil leitura, palavras com significado em inglês e integralmente constituídas por letras minúsculas. Se eventualmente for necessário mais de uma palavra, estas deveram estar juntas tentando serem as mais pequenas possíveis. A definição de matrizes de objectos ( arrays ) deverá ser feita através de palavras no plural.&lt;br /&gt;
&lt;br /&gt;
Exemplos:&lt;br /&gt;
&lt;br /&gt;
     B: $quiz&lt;br /&gt;
     B: $errorstring&lt;br /&gt;
     B: $assignments (for an array of objects)&lt;br /&gt;
     B: $i (but only in little loops)&lt;br /&gt;
     M: $Quiz&lt;br /&gt;
     M: $aReallyLongVariableNameWithoutAGoodReason&lt;br /&gt;
     M: $error_string&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa definição M – má definição&lt;br /&gt;
&lt;br /&gt;
3.	Todas as constantes deverão estar definidas em Maiúsculas e o seu inicio será o nome do módulo. As palavras serão separadas por “underscores”.&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     define(&amp;quot;FORUM_MODE_FLATOLDEST&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes de funções terão de ser compostas por palavras simples em Inglês e começaram com o nome do módulo a que pertencem para evitar conflitos com outros módulos. Estas estarão separadas por “undercores”. Se possível, todos os parâmetros terão valor por defeito. Deverá certificar-se que não existe espaço entre o nome da função e o que se lhe segue (parêntesis).&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     function forum_set_display_mode($mode=0) {&lt;br /&gt;
         global $USER, $CFG;&lt;br /&gt;
         &lt;br /&gt;
         if ($mode) {&lt;br /&gt;
             $USER-&amp;gt;mode = $mode;&lt;br /&gt;
         } else if (empty($USER-&amp;gt;mode)) {&lt;br /&gt;
             $USER-&amp;gt;mode = $CFG-&amp;gt;forum_displaymode;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
5.	Todos os blocos de código terão de ser fechados com chavetas, independentemente de serem constituídos por apenas uma linha. O Moodle utiliza este estilo:&lt;br /&gt;
 &lt;br /&gt;
     if ($quiz-&amp;gt;attempts) {&lt;br /&gt;
         if ($numattempts &amp;gt; $quiz-&amp;gt;attempts) {&lt;br /&gt;
             error($strtoomanyattempts, &amp;quot;view.php?id=$cm-&amp;gt;id&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
6.	As strings deveram estar definidas entre pelicas ( caracter ‘ ), sempre que possivel.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     $var = &#039;some text without any variables&#039;;&lt;br /&gt;
     $var = &#039;with special characters like a new line &#039;.&amp;quot;\n&amp;quot;;&lt;br /&gt;
     $var = &#039;a very, very long string with a &#039;.$single.&#039; variable in it&#039;;&lt;br /&gt;
     $var = &amp;quot;some $text with $many variables $within it&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
7.	Todo o código desenvolvido deverá ser devidamente comentado, para que o desenrolar do código seja percebido tal como o objectivo de cada função e variáveis.&lt;br /&gt;
&lt;br /&gt;
•	Todas as funções e classes deveram usar o formato  phpDoc,  para que a documentação seja automaticamente criada.&lt;br /&gt;
&lt;br /&gt;
•	Os comentarios de uma so linha deverão utilizar //, antes da sua descrição e deverão estar alinhados com o código que comentam e na linha anterior.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
     /**&lt;br /&gt;
     * The description should be first, with asterisks laid out exactly&lt;br /&gt;
     * like this example. If you want to refer to a another function,&lt;br /&gt;
     * do it like this: {@link clean_param()}. Then, add descriptions&lt;br /&gt;
     * for each parameter as follows.&lt;br /&gt;
     *&lt;br /&gt;
     * @param int $postid The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $scale The PHP type is followed by the variable name&lt;br /&gt;
     * @param array $ratings The PHP type is followed by the variable name&lt;br /&gt;
     * @return mixed&lt;br /&gt;
     */&lt;br /&gt;
     function forum_get_ratings_mean($postid, $scale, $ratings=NULL) {&lt;br /&gt;
         if (!$ratings) {&lt;br /&gt;
             $ratings = array();     // Initialize the empty array&lt;br /&gt;
             if ($rates = get_records(&amp;quot;forum_ratings&amp;quot;, &amp;quot;post&amp;quot;, $postid)) {&lt;br /&gt;
                 // Process each rating in turn&lt;br /&gt;
                 foreach ($rates as $rate) {&lt;br /&gt;
     ....etc&lt;br /&gt;
&lt;br /&gt;
8.	O espaço em branco pode ser usado sem problema e pode ser bastante útil para separar partes de código tornando-o mais claro no geral. Geralmente, devera existir um espaço entre as chavetas de uma função e linhas normais de código, enquanto entre chavetas e variáveis ou funções não devera existir nenhum.&lt;br /&gt;
&lt;br /&gt;
Exemplo: &lt;br /&gt;
 &lt;br /&gt;
     foreach ($objects as $key =&amp;gt; $thing) {&lt;br /&gt;
         process($thing);&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     if ($x == $y) {&lt;br /&gt;
         $a = $b;&lt;br /&gt;
     } else if ($x == $z) {&lt;br /&gt;
         $a = $c;&lt;br /&gt;
     } else {&lt;br /&gt;
         $a = $d;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
9.	Quando se efectuar uma copia de um determinado objecto, deverá ser sempre utilizada a função clone(), que originalmente esta disponível apenas em PHP5 (caso contrario terá apenas uma referencia para o primeiro objecto). Moodle garantira que este método funcionara, também em php4.&lt;br /&gt;
&lt;br /&gt;
Exemplo:&lt;br /&gt;
&lt;br /&gt;
     M:   $b = $a;&lt;br /&gt;
     B:  $b = clone($a);&lt;br /&gt;
&lt;br /&gt;
Legenda: B – boa utilização M – má utilização&lt;br /&gt;
&lt;br /&gt;
Caso o que esteja  a ser copiado não seja um objecto mas sim um conjunto de objectos (ex: arrays de objectos) deverá ser utilizada a função fullclone() de forma semelhante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Estruturas das Bases de Dados ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para a criação de tabelas devem ser tomadas em conta as seguintes regras de desenvolvimento:&lt;br /&gt;
&lt;br /&gt;
1.	Todas as tabelas devem ter uma variável que é automaticamente incrementada que servirá para a identificação de campos (ex. id field (INT10))&lt;br /&gt;
&lt;br /&gt;
2.	A tabela principal que contém instâncias de cada módulo, deve ter o mesmo nome do módulo (ex. questionário) e deve ainda conter obrigatoriamente os seguintes campos:&lt;br /&gt;
&lt;br /&gt;
•	Id – como foi descrito na regra anterior&lt;br /&gt;
&lt;br /&gt;
•	Course – id do curso a que cada instância pertence&lt;br /&gt;
&lt;br /&gt;
•	Name – o nome completo de cada intância do módulo&lt;br /&gt;
&lt;br /&gt;
3.	Outras tabelas que estejam associadas ao módulo que contenham matérias sobre “coisas” deveram ser chamadas questionário_coisas (de notar que o nome está no plural).&lt;br /&gt;
&lt;br /&gt;
4.	Os nomes das tabelas e das colunas devem evitar conter quaisquer palavras que esteja já reservada nas bases de dados, pelo que se recomenda uma anterior verificação das mesmas.&lt;br /&gt;
&lt;br /&gt;
5.	Os nomes das colunas devem ser sempre em letras minúsculas, devem ser nomes simples e pequenos, seguindo as mesmas regras aplicáveis para os nomes das variáveis.&lt;br /&gt;
&lt;br /&gt;
6.	Sempre que for possível, as colunas que contenham referência a um campo id de outra tabela (ex. módulo) deve ter o nome módulo_id (Nota: esta convenção não foi utilizada nas tabelas de versões iniciais do moodle).&lt;br /&gt;
&lt;br /&gt;
7.	Os campos booleanos devem ser implementados como campos de variáveis inteiras (ex INT4) que contêm os valores 0 ou 1, para suportarem uma posterior necessidade de essas variáveis conterem mais valores.&lt;br /&gt;
&lt;br /&gt;
8.	Muitas das tabelas existentes deveram ter um campo que é modificado em função do passar do tempo (INT10) que será actualizada com a data actual que pode ser obtida com a função PHP time().&lt;br /&gt;
&lt;br /&gt;
9.	Todos os campos devem ser inicializados com um valor inicial (que tenha sentido no contexto onde está inserido).&lt;br /&gt;
&lt;br /&gt;
10.	Cada nome de tabela deve começar com o prefixo da base de dados ($CFG-&amp;gt;prefixo). Na maioria dos casos, isto é automaticamente feito. Também, no Postgres, o nome de cada índice tem de começar com o mesmo prefixo.&lt;br /&gt;
&lt;br /&gt;
11.	Para garantir a compatibilidade entre bases de dados devem ser seguidas simples regras como o uso da palavra chave AS (apenas de for necessário alias em tabelas\colunas, claro):&lt;br /&gt;
&lt;br /&gt;
•	Não usar a palavra chave AS para alias de tabelas.&lt;br /&gt;
&lt;br /&gt;
•	Usar a palavra chave AS para alias de colunas.&lt;br /&gt;
&lt;br /&gt;
12.	Nunca criar UNIQUE KEYS (restrições) sem nenhuma razão específica. Em alternativa, usar UNIQUE INDEXes. No futuro, se for decidido adicionar integridade referencial no Moodle e for necessário UNIQUE KEYS, serão usadas, mas por agora este facto não se irá verificar. De notar ainda que o editor XMLDB permite especificar restrições XMLDB-only UNIQUE e FOREIGN (o que é um ponto positivo, com o objectivo de ter o XML bem definido) mas apenas os INDEXes sublinhados serão gerados na base de dados.&lt;br /&gt;
&lt;br /&gt;
13.	Essas UNIQUE KEYS XMLDB-only (ler ponto anterior) apenas podem ser definidas se esse campo\campos vão ser alvo de alguma (também XMLDB-only) FOREIGN KEY. Caso contrário, devem ser criadas como UNIQUE INDEXes.&lt;br /&gt;
&lt;br /&gt;
14.	As tabelas associadas com um bloco devem seguir a seguinte convenção na atribuição dos seus nomes: &lt;br /&gt;
$CFG-&amp;gt;prefix + &amp;quot;block_&amp;quot; + nome_do_bloco+ o_restante. Por exemplo assumindo que $CFG-&amp;gt;prefix é ‘mdl_’, todas as tabelas do bloco “rss_cliente” devem começar com ‘mdl_block_rss_client’ (sendo possível que se adicione mais palavras no final, por ex. ‘mdl_block_rss_client_outratabela’…). Esta regra será 100% forçada com o Moodle 2.0, dando entretanto tempo aos programadores. Para mais informações consultar Task 6786.&lt;br /&gt;
15.	Nunca fazer mudanças em porções de código ESTÁVEIS. Este facto poderá provocar sérios erros quando os utilizadores actualizarem a sua versão estável para outra.&lt;br /&gt;
&lt;br /&gt;
16.	Quando existir referência a uma variável inteira em consultas SQL, não por o valor entre pelicas. Por exemplo, get_records_select(&#039;question&#039;, &amp;quot;category=$catid&amp;quot;) está correcto. Já o exemplo get_records_select(&#039;question&#039;, &amp;quot;category=&#039;$catid&#039;&amp;quot;) está incorrecto. Este caso pode dar origem a que sejam ocultados erros em que o valor de $catid não esteja definido. (Esta thread explica este caso).&lt;br /&gt;
 &lt;br /&gt;
[[en:Coding]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:Merging.png&amp;diff=2518</id>
		<title>Ficheiro:Merging.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:Merging.png&amp;diff=2518"/>
		<updated>2008-05-17T17:39:26Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2517</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2517"/>
		<updated>2008-05-17T17:36:39Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagem:Merging.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2516</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2516"/>
		<updated>2008-05-15T19:28:25Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Imagem:Merging.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2515</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2515"/>
		<updated>2008-05-15T19:26:20Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
[[es:CVS para desarrolladores]]&lt;br /&gt;
[[fr:CVS pour développeurs]]&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2514</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2514"/>
		<updated>2008-05-15T19:24:26Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2513</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2513"/>
		<updated>2008-05-15T19:23:18Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[:CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2512</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2512"/>
		<updated>2008-05-15T19:22:47Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2511</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2511"/>
		<updated>2008-05-15T19:21:55Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[pt:CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:branches.png&amp;diff=2510</id>
		<title>Ficheiro:branches.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:branches.png&amp;diff=2510"/>
		<updated>2008-05-15T19:20:49Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2509</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2509"/>
		<updated>2008-05-15T19:20:14Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
[[Imagem:branches.png]]&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:Branches.png&amp;diff=2508</id>
		<title>Ficheiro:Branches.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=Ficheiro:Branches.png&amp;diff=2508"/>
		<updated>2008-05-15T19:19:28Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: working with branches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;working with branches&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2507</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2507"/>
		<updated>2008-05-13T18:19:49Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2506</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2506"/>
		<updated>2008-05-13T17:56:30Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As soon as the stable branch MOODLE_XX_STABLE is created, development efforts will fork into two streams for a while. Some people may continue working on new features in the trunk for the next release, but most developers should be concentrating on using the current STABLE branch and fixing bugs that are found in it. &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2505</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2505"/>
		<updated>2008-05-13T17:36:07Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mensagens commit CVS ==&lt;br /&gt;
&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Trabalhando com ramos ==&lt;br /&gt;
&lt;br /&gt;
Este diagrama mostra como o módulo principal do Moodle se subdividiu e diferentes versões ao longo dos tempos.  &lt;br /&gt;
 &lt;br /&gt;
Para ver todas as etiquetas e ramos que estão disponíveis, use este comando em qualquer dos ficheiros antigos (tal como o índex.php a directoria raiz do moodle):&lt;br /&gt;
&lt;br /&gt;
	cvs status –v índex.php&lt;br /&gt;
&lt;br /&gt;
Algumas directrizes de colocação de etiquetas: &lt;br /&gt;
•	O nome das etiquetas e dos ramos deve estar todo em letras maiúsculas. &lt;br /&gt;
•	As etiquetas e ramos devem ser SEMPRE aplicados ao módulo inteiro (todo o Moodle). Não etiquetar ficheiros ou directorias individuais.&lt;br /&gt;
•	Não é permitido renomear etiquetas devido aos utilizadores poderem ser induzidos em erro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desenvolvimento do tronco (trunk)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
O tronco do CVS é a versão principal de desenvolvimento do Moodle. No CVS também conhecido como HEAD, o ramo por defeito (default branch). &lt;br /&gt;
Os programadores do Moodle têm sempre como objectivo manter a plataforma o mais estável possível, mas com a constante introdução de pequenas porções de código, existe sempre a possibilidade da existência de pequenos erros e focos de instabilidade.&lt;br /&gt;
Em qualquer momento podemos decidir que o produto tem funcionalidades necessárias para o lançamento de uma nova versão. Nesta altura, o troncoé marcado com uma etiqueta MOODLE_XX_BETA (com vista a poder voltar em qualquer momento a esse ponto) e um novo ramo é criado para essa versão com o nome de MOODLE_XX_STABLE.&lt;br /&gt;
&lt;br /&gt;
A Beta package is also released at this point - it&#039;s for testers who don&#039;t use CVS but want to test the latest features and report bugs. &lt;br /&gt;
&lt;br /&gt;
Neste momento é também publicado um pacote Beta – é para os utilizadores que não utilizam o CVS mas que querem comprovar as novas funcionalidades e ajudar na detecção de erros.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ramos estáveis para cada versão&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As soon as the stable branch MOODLE_XX_STABLE is created, development efforts will fork into two streams for a while. Some people may continue working on new features in the trunk for the next release, but most developers should be concentrating on using the current STABLE branch and fixing bugs that are found in it. &lt;br /&gt;
Assim que o ramo estável MOODLE_XX_STABLE for criado, os esforços de desenvolvimento dividir-se-ão em dois caminhos por um algum tempo. Algumas pessoas podem continuar a trabalhar em características novas no tronco para a versão seguinte, mas a maioria dos programadores devem concentrar-se em usar  o ramo ESTÁVEL actual e em reparar os erros que vão surgindo na mesma.&lt;br /&gt;
É possível comutar uma cópia local do Moodle à versão ESTÁVEL usando o seguinte comando em Unix na directoria de raiz da plataforma:&lt;br /&gt;
   cvs update -dP -r MOODLE_XX_STABLE&lt;br /&gt;
Depois disto, todos comandos descritos anteriormente serão aplicados ao ramo estável. Para voltar ao tronco, faz-se simplesmente:&lt;br /&gt;
   cvs update -dPA&lt;br /&gt;
Em clientes Windows deverá existir um menu no qual se poderá fazer a escolher do ramo.&lt;br /&gt;
Quando o novo ramo se apresentar com uma estabilidade aceitável, uma versão poderá ser declarada. Os pacotes são criados para a distribuição o ramo será etiquetado (por Martin Dougiamas) com uma etiqueta (tag) chamado: MOODLE_XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adicionando correcções&#039;&#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
Todas as correcções de erros da versão ESTÁVEL devem ser adicionadas ao tronco de modo que se tornem disponíveis nas versões futuras de Moodle. Uma etiqueta (Tag) flutuante chamada MOODLE_XX_MERGED deverá ser mantida de modo a manter o caminho da última fusão. O procedimento para tal fusão é como segue (neste caso o CVS está a ser usado na linha de comando de Unix mas as etapas não diferem nos outros clientes de CVS):&lt;br /&gt;
&lt;br /&gt;
1. É altamente recomendado manter localmente uma cópia de segurança de cada ramo estável e da versão do tronco¬/versão principal de forma a ser fácil alternar entre elas. Ajuste-os todos como Web sites virtuais em sua máquina do desenvolvimento. Eu uso directórios como /moodle/18, /moodle/19 /moodle/dev etc.&lt;br /&gt;
&lt;br /&gt;
2. Faça a actualização para a última versão estável (eu usarei XX no exemplo mas poderia ser 18, 19 etc.) para os ficheiros relevantes, execute um cvs diff apenas para se certificar do que está a ser verificado. De notar que  só é necessário fazer a actualização dos ficheiros/directorias onde se está a trabalhar, mas por vezes é aconselhável fazer uma actualização total com  vista a fazer uma verificação final da funcionalidade utilizando  a Web. &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
3. Se tudo estiver correcto, fazer a . Verifique se a mensagem anexada à submissão contém (commit) o ID do tracker onde se encontra o erro corrigido (ex. MDL-1111) e uma boa descrição do raciocínio feito. Se não for especificada nenhuma mensagem na linha de comandos, aparecerá um modo de edição de modo a fazê-lo.&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
4. Ir para a última versão do tronco e certificar-se que esta se encontra actualizada.    &lt;br /&gt;
         cd /moodle/dev/user&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
&lt;br /&gt;
5. Fazer a junção de tudo na cópia local do tronco do ramo estável desde a ultima junção. Pode ser usada a sequência dos passos (4) e (5) Para adicionar as alterações noutros ramos estáveis ( para afectar as alterações a outras versões estáveis anteriores). &lt;br /&gt;
         cvs update -kk -j MOODLE_XX_MERGED -j MOODLE_XX_STABLE file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
6. É aconselhável uma analise cuidada do log que resulta da actualização, para uma posterior reparação de todos os ficheiros que apresentarem conflitos. Depois , pode ajudar correr o comando diff  para a certificação que o resultado é o esperado:&lt;br /&gt;
         cvs diff -c file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
7. Verificar a cópia local da versão alterada e fazer a cópia  para aversão CVS do tronco&lt;br /&gt;
         cvs commit -m &amp;quot;MDL-1234 Corrected a small typo in the user name field, merged from XX&amp;quot; file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
8. Voltar á versão do ramo &lt;br /&gt;
         cd /moodle/XX/user&lt;br /&gt;
&lt;br /&gt;
9. Actualizar a etiqueta flutuante dos ficheiros modificados ( para que haja correspondência com MOODLE_XX_STABLE) para que o processo possa ser repetido da próxima vez.&lt;br /&gt;
         cvs tag -RF MOODLE_XX_MERGED file1.php file2.php&lt;br /&gt;
&lt;br /&gt;
Finalmente, os valores para $version em todos os ficheiros version.php Moodle dentro do ramo estável se possível não devem ser actualizados (excepto o último dígito se absolutamente necessário). A razão é que alguém que faça a actualização de uma versão muito estável à versão muito estável seguinte poderia não beneficiar dos melhoramentos da base de dados que aconteceram no tronco.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Características dos ramos para grandes alterações&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ocasionalmente, pode haver uma funcionalidade muito grande que necessite ser analizada para que muitos utilizadores possam trabalhar nela, mas sendo demasiado instável não é aconselhável incluí-la no desenvolvimento tronco principal.&lt;br /&gt;
Nestes casos pode ser criado um ramo de curto prazo em que irá ser trabalhada essa funcionalidade, para depois a mesma ser adicionada ao tronco da versão principal o mais brevemente possível. Um exemplo deste tipo de ramo chamado MOODLE_17_WIDGET pode ser visto no diagrama acima.&lt;br /&gt;
Se for necessário utilizar este método (widget), siga os seguintes passos:&lt;br /&gt;
&lt;br /&gt;
1.	Discutir a situação com outros programadores e certificar se esta opção será mesmo necessária.&lt;br /&gt;
&lt;br /&gt;
2.	Fazer uma etiqueta no tronco (de todo o moodle) com o nome de MOODLE_XX_WIDGET_PRE&lt;br /&gt;
         cvs tag -R MOODLE_XX_WIDGET_PRE&lt;br /&gt;
&lt;br /&gt;
3.	Criar um ramo próprio chamado MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
         cvs tag -Rb MOODLE_XX_WIDGET&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.	Trabalhar esse ramo até que seja atingido um nível aceitável de estabilidade. Fazer a submissão (commit).&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.	Quando o trabalho estiver finalizado, adicionar o ramo inteiro ao tronco, reparar conflitos, submeter para o tronco e depois abandonar o ramo.&lt;br /&gt;
&lt;br /&gt;
         cvs update -dPA&lt;br /&gt;
         cvs update -kk -j MOODLE_XX_WIDGET&lt;br /&gt;
         cvs commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2504</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2504"/>
		<updated>2008-05-13T16:17:20Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. &lt;br /&gt;
Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2503</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2503"/>
		<updated>2008-05-13T16:15:44Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2502</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2502"/>
		<updated>2008-05-13T16:14:50Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
.2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
.1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
.2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
.3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
.4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2501</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2501"/>
		<updated>2008-05-13T16:02:15Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
 1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
 2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
 1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
 2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
 3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
 4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2500</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2500"/>
		<updated>2008-05-13T15:58:36Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
&lt;br /&gt;
    1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
    2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
   1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
   2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
   3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
   4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2499</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2499"/>
		<updated>2008-05-13T15:56:27Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2498</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2498"/>
		<updated>2008-05-13T15:55:50Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== == Desenvolvimento: &#039;&#039;&#039;CVS para programadores&#039;&#039;&#039; == ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Entrar no projecto como programador ==&lt;br /&gt;
&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Módulos CVS ==&lt;br /&gt;
&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos CVS básicos ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Unix&#039;&#039;&#039;&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ...&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS no Mac OSX&#039;&#039;&#039;&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;CVS em Windows&#039;&#039;&#039;&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2497</id>
		<title>CVS para programadores</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/archive/pt/index.php?title=CVS_para_programadores&amp;diff=2497"/>
		<updated>2008-05-13T15:50:54Z</updated>

		<summary type="html">&lt;p&gt;Rubenback26: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Desenvolvimento: CVS para programadores&lt;br /&gt;
&lt;br /&gt;
CVS são as iniciais de Concurrent Versioning System, uma forma de trabalho habitualmente utilizada para grandes projectos de software. No CVS estão integradas todas as versões de todos os ficheiros para que nada seja perdido e a sua utilização pelos vários utilizadores seja registada. Este sistema permite também a combinação do código criado por duas ou mais pessoas que trabalhem simultaneamente sobre o mesmo ficheiro. Todo o código e respectivas versões são armazenados num servidor central (no caso do Moodle, em cvs.moodle.org). Para mais informações sobre CVS, poderá consultar o livro on-line &amp;quot;Open Source Development with CVS&amp;quot;..&lt;br /&gt;
 &lt;br /&gt;
Entrar no projecto como programador&lt;br /&gt;
Se obteve permissões de escrita no CVS para ajudar a desenvolver e manter o Moodle! Bem-vindo a bordo!&lt;br /&gt;
Para obter estas permissões para escrever ou editar no Moodle&#039;s CVS archive, primeiro deverá ter uma conta no servidor. Só programadores de confiança conseguem estas contas. Para conseguir o acesso, deverá procurar o link &amp;quot;Apply for CVS Access&amp;quot; na página CVS do Moodle.org (http://moodle.org/cvs), comunicar quais os módulos aos quais deseja ter acesso (por exemplo: modulo de idioma) e porquê. A resposta será dada em menos de um dia.&lt;br /&gt;
Concluída esta fase, já deverá possuir todas as permissões de que necessita, necessitando apenas de configurar a sua máquina e descarregar o código fonte corrente, podendo logo de seguida começar a trabalhar nele. &lt;br /&gt;
Para os exemplos que veremos mais à frente vamos assumir que o nosso nome de utilizador é myusername a nossa password é mypassword.&lt;br /&gt;
&lt;br /&gt;
Módulos CVS&lt;br /&gt;
Dentro do CVS, a palavra “módulo” refere-se a conjuntos separados de código. Nos arquivos do Moodle existem os seguintes módulos:&lt;br /&gt;
•	moodle – o código fonte principal do Moodle&lt;br /&gt;
•	lang – todos os packs de idiomas&lt;br /&gt;
•	contrib – contribuições de utilizadores e todo o tipo de código em desenvolvimento.&lt;br /&gt;
•	mysql – um phpMyAdmin para trabalhar com a base de dados do Moodle.&lt;br /&gt;
•	windows-cron -  um pequeno pacote que possibilita o funcionamento do ?cron? nos sistemas Windows.&lt;br /&gt;
•	docs – diversas contribuições de utilizadores para documentação.&lt;br /&gt;
&lt;br /&gt;
A maioria das pessoas está a trabalhar nas funcionalidades existentes no módulo moodle, mas muitas estão também contribuindo com novas ideias para o módulo contrib. Uma vez alcançado um certo nível de “maturidade” no código da área contrib, este pode ser migrado para a área principal da área moodle. &lt;br /&gt;
&lt;br /&gt;
Comandos CVS básicos &lt;br /&gt;
CVS em Unix&lt;br /&gt;
O CVS do Moodle utilize ssh como camada de transporte para segurança, pelo que deverá ter a variável de ambiente CVS_RSH na sua Shell Unix. E aconselhável por estes comandos nos seus arquivos .bashrc ou .chrc para não ter de os digitar repetidamente:&lt;br /&gt;
       setenv CVS_RSH ssh (para csh, tcsh etc)&lt;br /&gt;
       export CVS_RSH=ssh (para sh, bash etc)&lt;br /&gt;
Seguidamente, poderá obter a última versão do Moodle utilizando este comando (todo na mesma linha).&lt;br /&gt;
NOTA: Não tente correr este primeiro comando CVS sobre uma instalação do Moodle já existente: Inicie novamente com uma nova directoria:&lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co moodle&lt;br /&gt;
Para outros módulos CVS, os comandos são semelhantes: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co contrib&lt;br /&gt;
Se desejar obter simplesmente um plugin (no exemplo é o bloco “attendance”) existente em contrib dentro da directoria actual, pode usar: &lt;br /&gt;
       cvs -z3 -d:ext:myusername@cvs.moodle.org:/cvsroot/moodle co -d attendance contrib/plugins/blocks/attendance&lt;br /&gt;
Cada vez que se executa um comando é pedida a password, poderá no entanto configurar as chaves autorizadas de forma a contornar esta situação.&lt;br /&gt;
Deverá agora ter uma nova directoria ‘moodle’, podendo alterar o seu nome ou localização. Entre em:&lt;br /&gt;
       cd moodle&lt;br /&gt;
Todos os ficheiros do Moodle devem estar nesta localização, possibilitando localmente (na cópia instalada) a alteração dos mesmos. Para comparar os seus ficheiros com os da cópia principal do CVS no servidor poderá utilizar os comandos cvs diff, por exemplo:&lt;br /&gt;
       cvs diff -c config-dist.php&lt;br /&gt;
       cvs diff -c lang&lt;br /&gt;
Para obter as ultimas actualizações a partir do servidor:&lt;br /&gt;
       cvs update -dP&lt;br /&gt;
Para copiar os seus novos ficheiros de volta para o servidor necessitará de algo como:&lt;br /&gt;
       cd lang/ca&lt;br /&gt;
       cvs commit&lt;br /&gt;
Ser-lhe-á pedido que adicione alguns comentários (dependendo do seu editor de texto predefinido). Deverá escrever comentários descritivos e com significado. Depois disto as suas alterações serão enviadas para o servidor CVS e guardadas no respectivo repositório.&lt;br /&gt;
Para poupar algum tempo poderá colocar argumentos predefinidos dentro de um ficheiro chamado .cvsrc na sua directoria principal. Por exemplo, o meu contém: &lt;br /&gt;
       diff -c&lt;br /&gt;
       update -dP&lt;br /&gt;
Poderá utilizar o &#039;cvs help&#039; para mais informações ... &lt;br /&gt;
CVS no Mac OSX&lt;br /&gt;
Poderá seguir as mesmas instruções descritas anteriormente para Unix numa janela terminal. No entanto o comando cvs não está instalado por defeito no OSX. Deverá instalar previamente as ferramnetas XCode. Deverá encontar as mesmas no seu disco de instalação original. Caso contrário poderá descarrega-las a partir do Web site da Apple para o desenvolvimento (http://devoloper.apple.com). &lt;br /&gt;
CVS em Windows&lt;br /&gt;
Primeiro, deverá descarregar uma cópia actual do Moodle usando a sua conta de programador.&lt;br /&gt;
1.	Descarrega TortoiseCVS a partir de tortoisecvs.org, instale e reinicie.&lt;br /&gt;
2.	Procure ou crie uma pasta onde o Moodle possa ser descarregado.&lt;br /&gt;
3.	 Clique com o botão direito do rato na pasta e escolha “CVS Checkout”. Deverá surgir uma caixa de diálogo.&lt;br /&gt;
4.	Copie este texto para o campo CVSROOT (utilizando o seu próprio username!):&lt;br /&gt;
          :ext:myusername@cvs.moodle.org:/cvsroot/moodle&lt;br /&gt;
5.	No campo “Module”, digite “moodle” para obter a ultima versão do moodle, “contrib” para obter a directoria de contribuições ou “mysql” para obter o módulo MySQL Admin.&lt;br /&gt;
6.	Clique em “OK” e tudo será descarregado.&lt;br /&gt;
Uma caixa de diálogo deverá mostrar todos os ficheiros que estão a ser descarregados, depois disto já deverá ter uma cópia completa do Moodle instalada. Poderá posteriormente obter actualizações a partir do servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Update”.&lt;br /&gt;
2.	Examine atentamente os registos e tome nota dos conflitos que podem ocorrer entre as alterações ao código que efectuou na sua cópia e as novas versões obtidas. Estes ficheiros terão de ser editados manualmente de forma a resolver os conflitos. &lt;br /&gt;
Depois de modificar os ficheiros (os seus ícones mudarão de verde para vermelho), poderá enviar as alterações de volta ao servidor CVS:&lt;br /&gt;
1.	Clique com o botão direito do rato na sua pasta Moodle (ou em qualquer dos seus ficheiros) e escolha “CVS Commit…”.&lt;br /&gt;
2.	Na caixa de diálogo, digite uma descrição clara das alterações que estão a ser submetidas. Incluindo sempre o nome de qualquer edição do Tracker do Moodle relacionado com o que está a ser corrigido (MDL-XXXX).&lt;br /&gt;
3.	Clique em “OK”. As suas alterações serão enviadas para o servidor.&lt;br /&gt;
4.	Se criar uma pasta, deverá ter algum cuidado ao usar a opção “CVS add” pois irá acrescentar a pasta ao CVS sem requerer verificação/confirmação (commit) da mesma. Uma vez adicionada, a pasta não pode ser removida do CVS mesmo que esteja vazia.&lt;br /&gt;
NOTA: Deverá ter em atenção que (à data de edição deste texto em Abril de 2008) o TartoiseCVS 1.10.6 poderá não funcionar plenamente com o Windows Vista. Poderá reportar bugs e encontrar mais informação no site TortoiseCVS ou no Google “TortoiseCVS vista”. &lt;br /&gt;
Mensagens commit CVS&lt;br /&gt;
Por cada alteração submetida no CVS, deverá receber uma mensagem de confirmação/verificação (denominada commit), contendo o ID da edição (por exemplo, MDL-12345) e da breve descrição do problema nela corrigido. &lt;br /&gt;
Se julgar que a breve descrição é insuficiente, poderá adicionar mais informação no Tracker do Moodle.org ou no Moodle Docs (https://docs.moodle.org).&lt;br /&gt;
&lt;br /&gt;
[[en:CVS_for_Developers]] [[CVS_para_programadores]]&lt;/div&gt;</summary>
		<author><name>Rubenback26</name></author>
	</entry>
</feed>