Escolhendo um Controle de Versão Distribuído

August 25th, 2007 § 10 comments

Uma das tarefas de trabalho do último mês é mover os nossos repositórios para algum sistema distribuído. Principalmente pela questão de deslocamento, um sistema distribuído provavelmente resolverá as pendências que temos como empresa no desenvolvimento de projetos.

O problema agora é escolher um. A arena está polvilhando de sistemas diferentes, cada um com suas vantagens e desvantagens. Fica a dúvida entre continuar com o Subversion–com a camada do SVK–ou escolher algum outro que já foi criado para ser distribuído.

No momento, estou entre o Mercurial e o Bazaar. Para o tipo de repositório que eu tenho em mente–nada enorme como um kernel do Linux ou um Mozilla, os dois parecessem essencialmente iguais.

Eu considerei brevemente tanto Git como darcs, mas o suporte limitado dos dois ao Windows é algo que não posso deixar de considerar no momento.

Se alguém tiver dicas e comparações práticas, fiquem muito à vontade para postar aqui. Eu estou interessado principalmente no uso de respositórios dentro de outros repositórios, incluindo de ferramentas diferentes. Por exemplo, um repositório Subversion sob um diretório versionado em outra ferramenta, ou um repositório independente com outros repositórios sob o mesmo via symlinks e situações similares.

§ 10 Responses to Escolhendo um Controle de Versão Distribuído"

  • Mas qual a diferença entre usar o svn ou o Bazzar? Qual seria o ganho nisso?

  • Daniel Koch says:

    Como um arqueólogo (ou entusiasta), passei um bom tempo usando mercurial (hg) para a maioria dos projetos pessoais. Logo, migrei para os projetos comerciais que estava coordenando na época.

    Mas com o passar do tempo o bazaar (bzr) foi o que mais pareceu ser melhor, o suporte à ssh dele é bem melhor do que o hg e como todo o apoio da canonical, o negócio cresceu e muito.

    Uso no windows e no linux e não tenho problemas, mesmo com projetos multiplataforma.

    Já havia falado dele pra você, recomendo! :)

  • Ronaldo says:

    Felipe, a vantagem de usar um sistema distribuído está basicamente no fato de que cada máquina é um respositório em si. Uma vantagem direta, por exemplo, é que você ainda tem controle de versão mesmo quando está desconectado do respositório.

    Daniel, eu estava quebrando a minha cabeça tentando lembrar quem tinha me falado que usava o Bazaar. Como ficou para você a questão de diferentes quebras de linha por plataforma? Outra coisa, você usa também para o seu diretório pessoal?

  • Daniel Koch says:

    Se o arquivo for alterado no windows, com as quebras de linha “do windows”, o arquivo é alterado e o bzr vai notar a diferença. Logo a sua versão em windows vai ter alterações.

    Mas isso é questão de configuração do seu editor, se no windows você configurar seu editor para usar apenas quebra de linha e utf-8 (por exemplo), não haverá problemas. Exceto, talvez, com o bit +x que o windows coloca.

    No entanto o bzr é bem configurável, eu tenho branches que compartilham commits, em um repositório de branches do mesmo projeto. No meu computador pessoal, no trabalho e no meu servidor. No servidor eu deixo um repositório apenas para commits, sem working dir, ou seja, se alguém entrar no servidor não vai acessar meu código diretamente, ele só deixa o .bzr na pasta do projeto.

    As vezes acontecia tambem de no dia de trabalho eu ter muitos commits, e commits pesados com imagens, a banda de onde eu estava não ser muito boa (upload) e eu não conseguia de fato enviar meus commits para o servidor. Então eu sincronizava com outro repositorio no meu ipod e então, em casa, usando uma internet melhor, eu sincronizava com todo o resto.

    O bzr, embora descentralizado, permite até que você estabeleça um funcionameno centralizado como o svn, fazendo com que todo commit local vá automaticamente sincronizar um “remoto”. Entenda como “remoto” como em qualquer lugar, ssh, ipod, um pendrive, etc.

    E respondendo sua última pergunta, não, eu não uso versionamento nos meus diretórios pessoais, apenas para projetos. Meus diretórios pessoas mudam com muita frequência e talvez o consumo de espaço em disco seria enorme fazendo isso. Mas nada me impede.

  • Ronaldo, off-topic.
    Você tem usado subversion no mac? qual cliente você usa?

  • Lorn says:

    Eu utilizo a combinação SVN + SVK é muito bom poder dar commits “off-line” :)
    A principal vantagens nessa combinação é a curva de aprendizagem, se você está familiarisarado com cvs/svn só muda a sigla para svk, e tem mais 2 ou 3 comandos para poder dar upload/sync para o repositório pai.

  • Luiz Rocha says:

    Tenho ouvido coisas boas sobre o Mercurial, mas nunca usei. Não tenho nada contra o Subversion também, acho ele bacana.

    Mas para as minhas bobagens e afins, tenho usado o Bazaar e estou satisfeito. Uso inclusive na partição Windows da minha máquina de trabalho.

  • Ronaldo says:

    Daniel, o lance de quebras de linha é péssimo. Basicamente qualquer controle de versão faz a tradução automaticamente. Há horas em que você é obrigado a usar um editor inferior e isso mela os commits por uma questão muito básica.

    Sobre o espaço em disco, o Bazaar usa snapshots, não é. Com o Mercurial são patches e pelo que andei lendo o consumo de espaço não chega a ser monstruoso.

    Estou quase escolhendo o Mercurial, mas ainda tenho dúvidas.

    Leonardo, uu sou velho de guerra: uso ou linha de comando ou o cliente embutido no emacs. Agora que estou experimentando o TextMate, estou usando as funções dele também.

    Lorn, o maior problema nesse caso é que o SVK é só uma camada, sem tantas das regalias dos demais DVCS. Mas ainda pode ser uma opção dada a prevalência dele.

    Luiz, eu estou quase optando pelo Mercurial mesmo. Só a questão do mindshare é que está me dando uma pausa, com a Canonical por trás do Bazaar. Mas acho que não é muita preocupação no momento. :-)

  • Opa, hoje eu uso subversion, mas também estou pesquisando um VCS distribuído.

    GOstei muito do que li, no site do Bazaar (http://bazaar-vcs.org/), vou testá-lo. Quanto ao mercurial, será o próximo teste, já usei ele para algumas coisas que precisei qnd estava trabalhando com o Xen, e pareceu interessante, mas não usei bastante, chegando a testar suas funcionalidade.

    E aê? Você já escolheu ? Qual você está usando agora ?

  • Walter Cruz says:

    Eu coloquei acho que um repositório meu no mercurial, e gostei. Gostei muito da idéia do VCS distribuído, mas nada que possa te ajudar na escolha.

    Aliás, já temos um vencedor?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

What's this?

You are currently reading Escolhendo um Controle de Versão Distribuído at Superfície Reflexiva.

meta