[sapl-dev] Melhorias no módulo Parlamentar - SAPL 2.3

Jean Rodrigo Ferri jeanferri em interlegis.gov.br
Segunda Maio 9 16:55:22 BRT 2011


Em 09-05-2011 12:46, Luciano De Fazio escreveu:
> Jean,

Oi Luciano,

> Estive lendo vários documentos sobre conceitos e boas práticas de SVN.
>
> Segundo alguns desses documentos, o conceito de braches importa no
> congelamento do código, ao ser lançada como uma versão, não sofrendo mais
> alterações, mas somente correções, após rigorosos testes de validação,
>
> Não seria interessante aplicar alguma política de "congelamento" dos braches
> ??

Sim, poderia, mas adotamos o modelo de distribuir os sistemas com o 
checkout direto do branch e isso iria dificultar bastante a atualização 
por parte dos usuários pois em vez de eles fazerem um 'svn up' teriam 
que fazer antes um 'svn switch'. Esse 'svn up' é algo que podemos 
colocar em um botão na própria interface de gerenciamento do SAPL.

Não é ruim termos um branch como versão média, desde que combinemos 
entre os desenvolvedores fazer somente correções de erros e pequenas 
implementações, que não tornarão o sistema instável. É claro, antes do 
commit testar bem.

> Por exemplo, após a versão do SAPL 2.3, ninguém mais poderia commitar nesse
> branch, senão o responsável pela validação e exclusivamente correção de
> eventuais bugs.

Problema que com nossa estrutura hoje não temos ainda um time em que 
possamos eleger alguém com o papel de "responsável pela validação". 
Seria ótimo se tivéssemos, seria o Linus Torvalds do SAPL, ou melhor, o 
Marcelo Tosati, pois o Torvalds trabalha no trunk! ;-)

> Isso significaria uma validação mais consistente do código, mantendo-se a
> estabilidade do sistema.
>
> Eventuais melhorias e novas funcionalidades dentro de uma mesma versão
> média, ficariam reservadas somente para as tags (versões menores).

Tags são congeladas, não devem sofrer commits. O próprio nome já diz, 
etiqueta. Elas refletem o software como foi empacotado. É como um ponteiro.

> Assim, o usuário de uma Casa Legislativa teria duas alternativas ao
> atualizar via SVN:
>
> 1- utilizando simplesmente o "svn up", para obter as possíveis correções
> homologadas naquele branch considerado estável / congelado; ou,
>
> 2 -  caso queira obter alguma nova funcionalidade desenvolvida em tags,
> seria necessário reapontar sua cópia de trabalho para depois rodar o "svn
> up".
>
> A adoção desse conceito, traria vantagens como:
>
> - maior controle sobre o código implementado pelos colaboradores da
> comunidade,
>
> - a possibilidade de reapontamento para o branch, em caso de problemas, para
> retorno ao código estável
>
> - a garantia de que o branch será realmente estável.

Isso é interessante, mas a maneira como o SAPL está sendo distribuído é 
um pouco diferente disso devido ao checkout do branch. Mudar isso agora 
em todos os SAPLs dará um trabalhão. E como está tem funcionado bem, 
desde que lembremos de não quebrar o branch.

Mas o que eu gostaria de lembrar, e às vezes o pessoal esquece, que um 
sistema de versionamento permite sempre que façamos checkouts e updates 
a versões específicas do código, ao longo de sua linha do tempo. Assim, 
podemos utilizar: 'svn update -r 2298' para atualizar para trás, ou 
seja, voltar a cópia de trabalho à revisão 2298.

O mesmo vale para a maioria dos comandos do Subversion, como por exemplo 
o checkout: 'svn checkout -r 3332 
http://repositorio.interlegis.gov.br/ILPortalCasas/branches/1.1'.

Isso significa que um branch, que é na verdade um fork, poderá variar de 
acordo com a revisão que utilizamos. Se fez um update e quebrou, é 
possível fazer um novo update da revisão anterior. Daí a não necessidade 
de se marcar o branch com a versão menor. No caso do SAPL, o branch terá 
acesso a todas as correções e alterações ao longo da vida daquele fork. 
E a Tag vai etiquetar onde ocorreu a passagem de uma versão menor para a 
outra, por exemplo: 2.3.1 -> 2.3.2

E, é claro, não podemos esquecer de após fazer um commit no branch, 
sempre fazer o devido backport para o trunk, e, se necessário, para os 
branchs mais novos.

Bom, é assim que funciona hoje, se quiserem poderemos mudar.

Abraço,

-- 
Jean Ferri
Analista de Sistemas
Interlegis - Brasília (DF)


Mais detalhes sobre a lista de discussão SAPL-dev