Archive for the ‘gerência de configuração de software’ category

Controle de Mudança Distribuído é necessário?

February 9th, 2010

Controle de mudança distribuído (Distributed Bug Tracking – DBT)  parece ser um complemento natural para o controle de versão distribuído (DVCS – Distributed Version Control Systems); o desenvolvedor trabalharia de modo autônomo em seus tickets e depois sincronizaria com os outros desenvolvedores, da mesma forma que faz com o DVCS.

Projetos open source de DVCS começaram a aparecer em 2005 e vêm se tornando cada vez mais populares a cada dia, particularmente o Mercurial e o Git. Mas é curioso notar que não há nenhum projeto de DBT de renome, nem tem aparecido variações ou extensões de ferramentas centralizadas que as tornem distribuídas. Algumas tentativas de produzir um DBT não prosperaram; os projetos se encontram parados ou se tornaram apenas uma prova de conceito, sem conseguir grande aceitação:

  • Bugs Everywhere. Embora a página do projeto tenha sido revisada em 06/02/2010, o projeto parece abandonado, documentação inexistente e o link para o código fonte do projeto está quebrado (pelo menos no momento em que esse artigo está sendo escrito).
  • DisTract. Parado desde 2007.
  • DITrack. Abandonado em junho de 2008
  • Ditz. Parado desde novembro de 2008.
  • TicGit. Tem tido alguma atividade recente.
  • Fossil. Controle integrado de versão e de mudança distribuído. Não é baseado em nenhuma outra ferramenta distribuída já existente tal como o Mercurial. Vem sendo produzido ativamente.

Por que o Controle de Mudança Distribuído não Vingou?

O fato é que controle de versão é uma ferramenta para o programador, mas o controle de mudança é uma ferramenta para o projeto.

O controle de mudança tem o papel de aglutinar as necessidades do projeto, coordenar os esforços dos desenvolvedores e direcionar a evolução do projeto. É uma ferramenta de comunicação e colaboração entre desenvolvedores que funciona melhor de modo centralizado.

Imagine uma situação em que toda a equipe use um DBT. Cada desenvolvedor cria seus próprios tickets, páginas wiki, define milestones e organiza suas prioridades. Como juntar depois todas essas informações de uma maneira coerente para o projeto? Quem definiria as prioridades?

A facilidade de criar e editar tickets offline não compensa a complicação que um DBT introduziria no processo de desenvolvimento. Embora um DBT seja tecnicamente interessante, é uma aplicação procurando uma necessidade para preencher.

Acredito que o controle de versão vai caminhar para o modelo distribuído, mas o controle de mudança permanecerá centralizado.

Links Relacionados

Codeplex passa a usar Mercurial como controle de versão padrão

February 3rd, 2010

Codeplex é um portal da Microsoft para hospedagem de projetos open source, similar ao SourceForge e Google Code. Conforme anunciado, o Codeplex agora passa a suportar nativamente o Mercurial como controle de versão (a outra opção é o TeamSource, da própria Microsoft).

Entre os motivos apontados para a escolha do Mercurial, está a popularidade da ferramenta e o ótimo suporte ao Windows, o que é particularmente importante para o Codeplex, claro.

Sem entrar nos méritos da combinação Microsoft e open source, o fato é que o Mercurial vem sendo usado cada vez mais por provedores de hospedagem de projetos. Os próprios SourceForge e Google Code já oferecem suporte ao Mercurial.

Light-Bot: Jogo em Flash com Elementos de Programação

August 18th, 2009

Jogo de raciocínio relacionado com programação

Sempre fui a favor do uso de jogos para ensino. Em sala de aula,  já usei “paciência” para ensinar a mexer com o mouse (arrastar, soltar, duplo clique etc.),  ”campo minado” para desenvolver certo tipo de raciocínio lógico e Commandos: Behind Enemy Lines (Atrás das linhas Inimigas) em que há alguns recursos com características próprias e limitadas  que precisam ser usados de maneira combinada e planejada para se conseguir um objetivo.

Light-Bot é um jogo simples, inteligente e divertido que utiliza algumas idéias básicas de programação: sequências e rotinas. O objetivo do jogo é programar o robozinho para acender todas as posições marcadas em azul no tabuleiro. O número de passos são limitados e pode ser necessário usar funções (rotinas) para repetir algumas sequências mais comuns.

Bom divertimento!

Nova Turma de GCS com Trac e Subversion em São Paulo

July 15th, 2009

Acontecerá nos dias 24, 25 e 26 de agosto, em São Paulo, a próxima turma do curso de Gerência de Configuração de Software com Trac e Subversion. São 24 horas de treinamento divididos em três módulos:

O programa do curso é bem extenso e cobre desde conceitos básicos de GCS, passado por atividades cotidianas de desenvolvimento até temas avançados tais como ramificação de projetos e uso de bibliotecas comuns a vários projetos.

Acaba de sair a versão 1.3 do Mercurial

July 3rd, 2009

Foi lançada a nova versão 1.3 do Mercurial. Chega com várias novidades, das quais destaco:

  1. Sub-repositórios (ainda em fase experimental) – Veja subseção abaixo
  2. Python 2.3 não é mais suportado. É necessário usar a versão entre a 2.4 e a 2.6
  3. Tradução para Português-Brasileiro
  4. merge: adicionada opção de preview -P/ –preview. Sempre bom saber qual o resultado vai dar antes de se comprometer com ele.
  5. update: adicionada opção -c/–check  para abortar atualização em caso de modificações locais pendentes.
  6. Extensão alias incorporada ao núcleo
  7. Extensão share (experimental)

Subrepositórios no Mercurial

A nova funcionalidade de subrepositórios segue a linha da propriedade svn:externals do Subversion. A idéia é permitir o uso de um repositório dentro de outro (fica sendo um subdiretório) e tratar todos como um só grupo.

As possibilidades são interessantes: é possível montar um projeto combinando partes formadas por projetos independentes.

Ao invés de propriedades, o mercurial usa um arquivo chamado .hgsub para registrar os subrepositórios. Só lembrando que arquivos que começam com ‘.’ são ocultos no Linux.

A criação e o registro dos subrepositórios ainda precisam ser feitos manualmente nesta versão que ainda é experimental. Entretanto, já estão previstas melhorias nesse sentido e também em manter subrepositórios não nativos, isto é, de outros sistemas tais como Subversion ou Git.

Extensão Alias

Alias era uma extensão à parte, mas agora é distribuída junto com o Mercurial. Mesmo assim, precisa ser habilitada no arquivo .hgrc do usuário para funcionar.

Permite a criação de “apelidos” para conjuntos de comandos e parâmetros usados com frequência. Por exemplo:

[extensions]
alias =

[alias]
llog = log --limit 10

A configuração acima cria um “novo” comando llog equivalente à execução do comando log --limit 10.

Extensão Share

Esta extensão permite criar — localmente — áreas de trabalho independentes que compartilham fisicamente o mesmo repositório (diretório store do .hg). A vantagem é que todos os commits feitos aparecem automaticamente no histórico dos repositórios compartilhados sem a necessidade de comandos de push ou pull.

É útil para a criação de uma área de trabalho para um ramo, por exemplo,  e não desperdiça espaço com um armazenamento do repositório interno.

Instalação da Versão 1.3

No Linux, é mais vantajoso usar o easy_install para obter a versão mais recente (easy_install -U Mercurial). A outra opção seria usar os pacotes da distribuição, mas essa alternativa costuma ser mais desatualizada.

No Windows, é possível utilizar o Mercurial 1.3, inclusive através da linha de comando, instalado diretamente o TortoiseHg 0.8. Interessante ressaltar que o TotoiseHg também funciona em plataformas não-Windows. Veja a página do TortoiseHg para mais informações.

Qual a melhor ferramenta de controle de versão: Subversion, Git ou Mercurial?

June 17th, 2009

Existem dois tipos de controle de versão: centralizado e o distribuído. O modelo distribuído é mais recente e possui algumas vantagens interessantes sobre o centralizado, embora seja um pouco mais complexo. Para as equipes que decidiram migrar para o distribuído ou mesmo permanecer com o centralizado, ainda resta a questão de qual a melhor ferramenta escolher.

Para aqueles que vão ficar no controle de versão centralizado, a decisão é bem simples: Subversion. Já é um padrão estabelecido, desbancando outros tais como CVS, Visual Source Safe, ClearCase etc. Não há realmente muito a acrescentar neste ponto.

O verdadeiro desafio está na escolha da ferramenta de controle de versão distribuído.

Filtragem Inicial

Existem muitas ferramentas de controle de versão distribuído. Para diminuir esse número inicial, vamos usar alguns critérios de filtragem inicial:

  1. Licença open source. Não há a menor necessidade de usar uma ferramenta proprietária para controle de versão. Aliás, as melhores são open source.
  2. Rodar em plataformas diferentes (Windows, Linux, etc.). A mesma ferramenta deve permitir que a equipe use a plataforma que quiser/precisar para trabalhar. Melhor ainda se houver uma interface gráfica tipo TortoiseSVN ou plugin para a IDE, mesmo que a linha de comando seja muito mais rápida e produtiva para a maioria das operações do controle de versão.
  3. Massa crítica de projetos já usando. Se vários projetos grandes usam a ferramenta é sinal de que ela já foi testada, avaliada e aceita por outros antes. Além disso, é mais provável que haverá uma comunidade ativa mantendo e desenvolvendo a ferramenta por muitos anos.

Depois de aplicados os critérios na lista, acabam restando praticamente o Git e o Mercurial. Talvez o Bazaar também pudesse ser incluído mas outros como Darcs, Monotone e SVK não passam no critério 3.

A seguir, alguns projetos conhecidos que usam o Mercurial ou o Git:

  • Mercurial: Google Code, Python, Java (OpenJDK), Mozilla, Netbeans (IDE), OpenSolaris  etc..
  • Git: Linux kernel, Perl, Samba, X.org Server, Qt, Ruby on Rails,  GNOME, Google Android, Btrfs da Oracle etc..

Aspectos Sociais na Escolha do DVCS

Critérios de desempate podem ser desempenho, funcionalidades, facilidade de uso, portabilidade, interfaces etc. O problema é que as análises comparativas entre o Mercurial e o Git têm mostrado muito mais semelhanças que diferenças entre os dois. Embora um ou outro tenha uma pequena vantagem em algum dos aspectos, não há diferença realmente significativa que justifique uma decisão baseado nisso.

Processos recentes tem usado outros fatores para o desempate tais como menor curva de aprendizado, suporte à plataforma Windows e preferência dos desenvolvedores para definir a escolha:

  1. A análise comparativa feita pelo Google Code entre o Mercurial e o Git considerou as duas alternativas bastante equilibradas. O Mercurial foi escolhido por ter um conjunto de comandos mais próximos do Subversion, o que facilita a transição dos desenvolvedores, e também por ter desempenho e adequação melhores ao serviço que o Google Code já oferece.
  2. Outro exemplo é o processo que levou o Python a também adotar o Mercurial (PEP 374 – Chosing a distributed VCS for the Python project). A análise comparativa entre Mercurial, Bazaar e Git apresentou alguns casos de uso, comparações de desempenho etc. mas, no final, o que pesou bastante foi o melhor suporte ao Windows, a preferência da comunidade de desenvolvedores pelo Mercurial e, é claro, o fato de o Mercurial ser escrito em Python.

Considerando funcionalidades e desempenho equivalentes, o que vai ser importante na escolha são as afinidades do Git ou Mercurial com as características do projeto/equipe/empresa. O desempate acabará sendo feito por critérios mais subjetivos tais como proximidade com outros projetos relacionados e preferência dos desenvolvedores.

Outros Projetos Relacionados

Projetos maiores que já usam o Mercurial ou o Git acabam atraindo projetos relacionados para o seu campo de influência.

A interferência direta se dá quando é necessário acompanhar ou mesmo participar de certos projetos externos associados com o projeto da equipe. A escolha da mesma ferramenta para todos torna o controle de versão muito mais fácil pois define um padrão homogêneo.

A tabela a seguir apresenta alguns projetos e qual a ferramenta que usam.

Projeto Git Mercurial
Google Android X
Google Code X
Pylons X
Python (linguagem) X
Ruby on Rails X
Sun (OpenJDK, NetBeans, OpenSolaris) X

Preferência dos Desenvolvedores

Esse é o critério mais passional de todos. O que leva um desenvolvedor a preferir uma ferramenta a outra varia desde a identificação com a filosofia do projeto até a preferência pelo logotipo do projeto. De qualquer modo, uma tendência clara da equipe por uma ferramenta específica deve ser pesado na decisão final.

Estudos de Caso

Projeto X Projeto Y Projeto Z
Escolha Final Mercurial Git Mercurial
Plataforma Windows Windows/Linux Linux
IDE/Interface Eclipse NetBeans linha de comando
Linguagem Principal Java Ruby Python
Projetos relacionados usam Subversion/Mercurial Git Subversion/Mercurial
Preferência dos Desenvolvedores - Git Mercurial

Considerações Finais

Git e Mercurial são ambas ótimas opções de controle de versão distribuído. A análise de um ou outro baseado em número de funcionalidades, forma de implementação interna, desempenho etc. acaba caindo em um tipo de discussão que abunda pelas listas de discussão na internet a fora e que gera muito calor e pouca luz!

Em termos práticos, ambas as ferramentas são muito parecidas e é mais fácil (e prático) escolher entre uma e outra com base na afinidade com o projeto/equipe.

É bom lembrar que  controle de versão é muito mais que instalar a ferramenta e sair usando. É necessária a capacitação dos desenvolvedores, a definição de um processo  de GCS em sintonia com as particularidades da ferramenta e também integração com uma ferramenta de controle de mudança (por exemplo, o Trac). Já pensando nisso, a Pronus Engenharia de Software lançará em breve o curso de Gerência de Configuração de Software com Trac e Mercurial.

Links Relacionados

  1. Comparação entre Git e Mercurial. Quadro comparativo entre principais características entre os dois. Alguns comentários interessantes também sobre portabilidade e interfaces disponíveis.
  2. Coleção de links comparando Git com outros controles de versão. Vários links, mas a maioria já bastante desatualizados.
  3. Comparação entre Git, Mercurial e Subversion.
  4. Why Git is better than X? Artigo interessante que analisa diversos pontos de Git com boas ilustrações de conceitos.
  5. Thread sobre Git x Mercurial. Exemplo de discussão interminável sobre aspectos técnicos de Git e Mercurial. Típico debate que gera muito calor e pouca luz.

Está na hora de migrar para o controle de versão distribuído?

June 8th, 2009

Continuando a série de artigos sobre controle de versão distribuído (Distributed Version Control Systems – DVCS) que começou com a atualização dos conceitos básicos sobre controle de versão e depois para o artigo sobre vantagens e desvantagens do controle de versão distribuído, esse artigo agora analisa a viabilidade ou não da mudança do controle de versão centralizado para o distribuído.

Antes de mais nada, é importante relembrar que controle de versão de software é uma técnica comprovada de engenharia de software. Independente da escolha entre o modelo centralizado ou distribuído, é fundamental que algum controle de versão seja usado.

Para ajudar na escolha, siga o fluxograma a seguir:

  1. Já usa algum controle de versão? Se ainda não, a decisão é simples: melhor já começar com o controle de versão distribuído de uma vez, com uma boa capacitação da equipe e do processo para que tudo corra bem.
  2. Planejar | Executar adoção | migração para DVCS.  Pavimentar o caminho para uma transição suave e bem-sucedida. Cronogramas, projeto-piloto, migração,  capacitação da equipe, elaboração do processo de desenvolvimento, suporte técnico, acompanhamento, avaliações  etc..
  3. Funciona bem? Não há motivo para trocar uma solução que já funciona por outra. Como diz o ditado, em time que está ganhando, não se mexe. Ainda mais em um projeto em andamento, trocar de modelo de controle de versão só adicionaria riscos desnecessários.
  4. Experimentar DVCS? O controle de versão distribuído traz alguns benefícios interessantes e mesmo a estrutura atual funcionando bem, talvez seja possível melhorar ainda mais. A experimentação de uma nova tecnologia geralmente segue um arranjo comum: projeto-piloto simples, escopo bem definido e equipe formada por pessoas pré-dispostas a novas experimentações.
  5. Falta capacitação? Alguma coisa está errada na solução atual. Antes de trocar seis por meia dúzia, é melhor analisar qual a causa: se é por falta de capacitação da equipe, inexistência de um processo bem definido ou se realmente o projeto se encaixa mais no perfil do DVCS.
  6. Migração para DVCS é viável? A subutilização do controle de versão é muito mais comum do que deveria. O sintoma clássico é o uso burocrático do controle de versão basicamente como ferramenta de backup, como já comentado num post anterior. Se é necessário investir em capacitação, talvez valha a pena que essa capacitação já seja feita em uma ferramenta mais moderna. Talvez não. Talvez apenas acertar a solução atual resolva.
  7. Consultoria | Treinamento em Controle de Versão Centralizado. Capacita a equipe e define o processo necessário para usar a solução atual, aproveitando tudo que o controle de versão tem para contribuir.

Considerações Finais

A mudança do controle de versão centralizado pelo distribuído é mais que uma questão apenas de troca de ferramenta. Implica ajustes no processo e também capacitação da equipe de desenvolvimento.

Controle de versão distribuído traz vantagens sim, mas não torna o controle de versão centralizado obsoleto. A decisão de passar de um tipo para outro deve ser analisada com cuidado. De preferência com experimentações para gerar algum tipo de opinião própria e depois com muito planejamento para que não haja surpresas.

A tabela a seguir apresenta sugestões de mudança de acordo com o perfil do uso de controle de versão:

Uso atual do controle de versão Vale a pena mudar para o Distribuído? Comentários
Não usa | Subutiliza Sim Invista na mais nova geração de controle de versão de uma vez! A definição e um processo e capacitação da equipe ajudarão na melhoria da qualidade do software.
Insatisfatório pois se encaixa no perfil DVCS Talvez Depende de alguns fatores. Entre eles de quanto os problemas atrapalham o andamento do projeto.
Satisfatória Não Projetos atuais não devem migrar. Mas experimentações são bem-vindas em projetos-piloto.

Vantagens e Desvantagens do Controle de Versão Distribuído

June 2nd, 2009

Controle de versão distribuído (Distributed Version Control Systems – DVCS) é a mais nova geração de sistemas de controle de versão de software. Apesar de o conceito existir já há algum tempo, recentemente as ferramentas se tornaram maduras o suficiente para chamar a atenção de diversos projetos open source, que migraram ou expandiram seu suporte do Subversion (centralizado) para o Mercurial, Git e Bazaar (distribuídos) por exemplo.

Mas o que tem de errado com o controle de versão centralizado? Nada. Ele usa uma estrutura que atende muito bem a grande parte das equipes de desenvolvimento de software. Baseia-se na arquitetura cliente-servidor, com um repositório central (servidor) e cópias de trabalho para os desenvolvedores (clientes).

Para equipes de desenvolvimento com acesso ao repositório pela rede local, essa arquitetura funciona bem. A velocidade da rede não é problemática, o tempo de resposta do processamento é aceitável e todos os desenvolvedores da equipe têm permissão de leitura e escrita no repositório.

Não foi para resolver exatamente esse tipo de necessidade que o controle de versão distribuído foi criado. Imagine uma situação diferente:

  • Equipe com centenas de desenvolvedores. Significa que mais processamento vai ser exigido do servidor central, piorando o tempo de resposta;
  • Equipe espalhada em diferentes filiais da empresa. Acesso remoto ao repositório com limitações de conexão e de permissão de escrita;

A arquitetura cliente-servidor não funciona tão bem para essas situações. Soluções alternativas como aumentar a capacidade de processamento do servidor ou replicar os repositórios nem sempre são viáveis ou fáceis de serem implementadas.

Para essas situações, a arquitetura peer-to-peer, na qual o controle de versão distribuído se baseia, é muito mais adequada.

Benefícios do Controle de Versão Distribuído

As vantagens estão relacionadas à distribuição do processamento, redundância/replicação de repositórios e as novas possibilidades de colaboração entre desenvolvedores.

Do ponto de vista do desenvolvedor

  • Rapidez. As operações são processadas localmente. Não é necessário passar pela rede e contatar o servidor central para fazer um commit, log ou diff por exemplo.
  • Autonomia. A conexão com a rede só é necessária para trocar revisões com outros repositórios. Fora isso, trabalha-se desconectado e em qualquer lugar, como num cliente por exemplo.
  • Ramos privativos. Além de um repositório próprio, o trabalho local é feito em um ramo privativo que não interfere, nem sofre interferência dos demais, mesmo nas operações de sincronização entre repositórios. O momento de combinar um ramo com outro é uma decisão do desenvolvedor e não obrigatório antes de cada commit, como acontece no centralizado.
  • Facilidade de Mesclagem. Só a facilidade de criação de ramos não seria suficiente se não fosse o rastreamento automático usado pelos DVCS, que torna o processo de mesclagem muito mais simples e indolor. Observação: No Subversion, o rastreamento automático de merges começou a partir da versão 1.5

Do ponto de vista da gerência/coordenação

Parte das decisões gerenciais envolve manter livre o caminho da equipe para que possam trabalhar da melhor maneira possível. Outras decisões importantes são sobre redução de custos. Nestes dois casos específicos, o modelo distribuído oferece as seguintes vantagens:

  • Confiabilidade. No sistema centralizado, uma pane no servidor interrompe todo o desenvolvimento. Já no sistema distribuído, além de a equipe poder continuar seu trabalho (observação: veja a seção “controle de mudança ainda é centralizado” mais abaixo), os repositórios dos desenvolvedores funcionam como cópias de backup de todo o projeto.
  • Redução de custos com servidor. A carga de processamento fica distribuída nas próprias máquinas dos desenvolvedores. O repositório “central”, quando existe, tem o papel do repositório “oficial” e não como processador central das requisições.

Em que situações o controle de versão distribuído não vai tão bem?

Nem tudo são flores com o modelo distribuído de controle de versão.

Maior complexidade

No centralizado, os desenvolvedores trabalham no mesmo ramo, seja esse ramo o principal ou um ramo de manutenção.

Essa forma de trabalho é mais simples de se entender. Mesmo que limitadamente, uma pessoa com pouco conhecimento de controle de versão consegue trabalhar com o resto da equipe.

O modelo distribuído é mais complicado. A arquitetura peer-to-peer, ramos privativos e as mesclagens aparentemente desordenadas podem tornar o grafo da evolução do projeto confuso à primeira vista.

Ao contrário do centralizado, não adianta só commit e update para funcionar “no tranco”. Todos os desenvolvedores da equipe precisam ter um conhecimento maior do modelo, da ferramenta e, de preferência, também de um processo de desenvolvimento que padronize fluxos de trabalho a serem seguidos. Só assim, o grafo acima deixa de ser apenas um emaranhado e passa a representar muito claramente o fluxo do trabalho.

Travamento de arquivos binários precisa ser centralizado

Diferentemente dos arquivos de texto, arquivos binários possuem um formato interno que não é baseado em linhas de texto e, por isso, não podem ser mesclados automaticamente pelo controle de versão ou manualmente pelo desenvolvedor.

Sendo assim, a edição concorrente de arquivos binários é problemática. Duas pessoas editando ao mesmo tempo uma figura, por exemplo, não conseguirão mesclar as modificações depois e o trabalho de uma delas precisará ser refeito.

Com arquivos binários, a melhor solução é usar o travamento, isto é, sinalizar que o arquivo está travado para edição e que ninguém mais deve editá-lo enquanto isso.

O modelo puramente distribuído não é adequado para lidar com travamento justamente por não possuir um servidor central que possa controlar as travas de todos.

Controle de mudança ainda é centralizado

As ferramentas de controle de mudança (e.g. Trac, Redmine, Mantis, Bugzilla) ainda não acompanharam as de controle de versão na arquitetura peer-to-peer. Isto significa que mesmo usando um DVCS, ainda haverá uma ferramenta centralizada para controle de mudança.

O ideal seria que o controle de versão e o controle de mudança  fossem integrados e distribuídos, tal como é no Fossil. Essa ferramenta parece ser interessante, mas ainda é muito incipiente.

Resumo das Características do Controle de Versão Distribuído

Ponto de Vista Vantagens Desvantagens
Desenvolvedor
  • Rapidez
  • Autonomia
  • Ramos Privativos
  • Facilidade de Mesclagem
  • Necessidade de maior conhecimento da ferramenta e do processo
Coordenação/Gerência
  • Redução de custos com servidor e infraestrutura externa de rede
  • Confiabilidade
  • Aumento da produtividade
  • Necessidade de maior capacitação de desenvolvedores
  • Importante ter um processo definido
  • O controle de mudança ainda precisa ser centralizado

Considerações Finais

Controle de versão distribuído oferece muitas vantagens interessantes. Mesmo projetos que não se encaixam diretamente no perfil podem se beneficiar. Entretanto, por ser um pouco mais complexo, o modelo distribuído requer mais preparo da equipe e também do processo, o que não chega a ser realmente um impedimento uma vez que um processo formalizado e equipes capacitadas são fundamentais para produção de software de qualidade.

Em um próximo artigo, vou analisar alguns pontos que ajudarão a decidir a viabilidade ou não de se mudar do centralizado para o controle de versão distribuído.

Referências e Leitura Complementar

  1. Conceitos Básicos de Controle de Versão Centralizado e Distribuído
  2. Capítulo 1 do manual o Mercurial
  3. Distributed Version Control Systems – Why and How
  4. Distributed Revision Control

Conceitos Básicos de Controle de Versão Centralizado e Distribuído

May 19th, 2009

Já há algum tempo, tem aparecido notícias de vários projetos (Python, Google CodeSourceForge etc.) migrando ou ampliando seu suporte do Subversion para outros softwares de controle de versão tais como o Mercurial e o Git.

O Subversion é um controle de versão centralizado enquanto que o Mercurial e o Git são distribuídos. Mas qual é exatamente a diferença no funcionamento de um tipo e outro? Qual é melhor? Está na hora de mudar de controle de versão no meu projeto?

Para responder a essas perguntas, a Pronus está lançando uma série de três artigos abordando os seguintes tópicos:

  1. Como funcionam os controles de versão centralizado e distribuído? Este artigo já está disponível e mostra os conceitos básicos de controle de versão centralizado e distribuído. A parte da sincronização é particularmente interessante, mostrando como acontece o trabalho concorrente em cada um dos tipos de controle de versão.
  2. Em que casos um é melhor um tipo ou outro? Ao invés de abordar funcionalidades específicas de ferramentas, esse artigo analisará a adequação da filosofia do controle de versão centralizado ou distribuído de acordo com algumas tarefas e pontos de visita.
  3. Qual a melhor ferramenta de controle de versão? Esse tópico é o mais espinhoso e costuma levantar opiniões acaloradas. Mas algum tipo de recomendação é necessário e os critérios usados serão baseados em necessidades de cada equipe ou indivíduo.

Então é isso. Fique sintonizado e acompanhe os artigos! Envie sua crítica, elogio ou sugestão.

Nova turma em São Paulo do curso de Gerência de Configuração de Software com Trac e Subversion

May 13th, 2009

Está marcada para os dias 15, 16 e 17 de junho, em São Paulo – SP,  a próxima turma do curso de Gerência de Configuração de Software com Trac e Subversion.

O curso será realizado na Av. Paulista . Para mais detalhes sobre local, investimento etc., visite os links de cada módulo ou através do calendário de eventos:

Reservas podem ser feitas diretamente através do formulário próprio.