/ 04.Feb.2008 at 03:55pm
Update 05/02: Ironia, o próprio Piston agora está mantido em Git! :-) Um gerenciador de plugins para SVN mantido no Gitorius.
Update 06/02: Estava olhando a lista de projetos no Gitorius e tem muito mais projeto Ruby e Rails do que eu imaginava. Vejam a lista atualizada lá embaixo. Vejam outra discussão interessante em All that Git talk in the Rails world. What Gives?, outro interessante é o Git is the new Unix
O Mephisto – finalmente – saiu com uma nova versão, a 0.8 acelerando seu desenvolvimento para a tão esperada versão 1.0.
A maior mudança nesta versão? A mudança para suportar seu desenvolvimento sobre GIT! Isso mesmo, mais um projeto Ruby migrando de Subversion para Git.
Vejamos quem já suporta Git:
Projetos como Typo e Mephisto são um PITA pelo seguinte motivo: você faz checkout do repositório SVN deles, configura, faz dezenas de alterações, customizações até ficar como você quer. Amanhã eles lançam uma nova versão. Pergunta: como fazer o merge das modificações?
Resposta: você não faz. Boa sorte aplicando os patches manualmente. Isso porque o merge em Subversion só pode ser feito no repositório que – por definição – é centralizado. Normalmente você tem um repositório local SVN também, mas o seu local e o original remoto não sabem como se comunicar. Entra gambiarras como SVK para fazer uma ponte entre esses dois repositórios.
Pois bem, em julho do ano passado, eu expliquei como montei um mirror de Typo (antes de eu migrar para Mephisto) a partir do Subversion usando SVK. Na época fiquei mais ou menos contente, porque eu consegui atingir esse objetivo de mesclar dois SVNs. Porém a realidade é mais suja do que isso: gerenciar esse tipo de configuração e usar com frequência é um enorme PITA também!!! No fim, desisti de usar essa configuração.
Eis que no fim de setembro do ano passado eu expliquei um pouco sobre Git. Graças ao bom e velho Linus Torvalds para jogar uma balde de água fria no que estamos fazendo atualmente nos dar uma solução inteligente: Git.
Por alguma razão, eu tenho visto a palavra “git” com uma boa frequência no meio Ruby e Rails. Por alguma razão “Git” e “Ruby/Rails” combinam. São ambos o mesmo caso: são os new kids on the block, são ousados, são elegantes, são poderosos.
O passo do Mephisto migrar para Git faz todo o sentido do mundo: ele resolve o meu problema de julho passado: basta agora eu fazer um clone do repositório deles, criar um branch com o meu site e agora eu manter meu site sempre atualizado fazendo merges a partir do branch original. E mais: se precisar posso até mesmo continuar usando meu repositório SVN do meu hosting (apesar que a Railsplayground também tem suporte a Git).
Não deixem de “assistir” o video que tornou Git famoso. Melhor, leia o transcript com o que Linus Torvarls disse nessa palestra. Esta parte é a melhor:
Quando eu digo que odeio CVS com paixão, também tenho que dizer que se houver algum usuário de SVN na audiência, vocês podem querer sair. Porque meu ódio por CVS significa que eu vejo Subversion como o projeto mais sem sentido já começado, porque o slogan para Subversion por um tempo era ‘CVS feito direito’ ou algo assim. E se você começa com esse tipo de slogan, não há para onde ir, não existe maneira de fazer CVS direito.
E mais esta:
Ninguém está interessado em fazer branches. Branches são totalmente inúteis a menos que você faça merge entre eles, e CVS não consegue fazer merge de nada. Dá para fazer uma vez, mas aí o CVS esquece o que você fez, e você nunca mais conseguirá fazer merge novamente sem ter conflitos horrendos. Merging no subversion é um completo desastre. O pessoal do subversion meio que entende isso e eles tem um plano, e o plano deles é uma droga também. É incrível como esse pessoal é estúpido. Eles ficaram olhando para o problema errado o tempo todo. Branching não é um problema, merging é. E eles não fizeram nada sobre isso, cinco anos depois do fato. Isso é triste.
Para logo eu vejo o seguinte: cada vez mais Alpha Geeks devem começar a usar Git. Muitos pequenos grupos de rebeldes usam Git mesmo que suas empresas obriguem o uso de Subversion. É simples: basta fazer um clone do SVN, trabalhar localmente com Git e depois usar Git-SVN para empurrar as modificações de volta ao repositório central :-) Eu faço isso hoje e funciona muito bem.
O único problema de Git hoje: não funciona muito bem em Windows sem o suporte de Cygwin ou coisa que o valha. Tudo bem, também deve demorar até sair um “Tortoise”Git :-D Usuários de Linux e Mac: se preparem para mais e mais projetos de renome migrando para Git em breve.
7 Comments
No debian, se vc instala apt-get install git, o programa é outro… depois de uma procura, vi que o certo é intalar apt-get install git-core … ai funfa bunitinho !
Bem, pelo menos aqui, foi assim :
carlos@aquino:~$ git—version git version 1.5.4
carlos aquino / 04.Feb.2008 at 04:47pm
GIT é uma maravilha!
Já venho usando ele em projetos meus e tb uso na empresa, mesmo que o repo contral seja SVN, uso git em minha máquina.
Akita, só tenho um problema: sou louco por commits, e o legal, é que o GIT meio que força vc fazer bastante commits, simplesmente, pq é fácil! Branching então, é um branch para cada nova funcionalidade! O problema que eu tenho, é que na hora de enviar as modificações para o repo svn, ele envia todos meus git-commits separadamente. Tem uma maneira de enviar todos estes commits como se fossem apenas um? Outra coisa é enviar o .gitignore e .giston para o repo svn. Se outra pessoa não usar git, esses arquivos não interessam.
É isso! E quem ainda não conhece GIT, compre o screencast da PeepCode, muito bom! :)
arthurgeek / 05.Feb.2008 at 11:57am
@Arthur, eu mesmo nunca usei isso mas parece que o flag -squash do merge pode te ajudar nisso: http://www.kernel.org/pub/software/scm/git/docs/git-merge.html
akitaonrails / 06.Feb.2008 at 03:19pm
Já ouviram falar em Darcs? Também é distribuído, assim como o Git e funciona muito bem em Windows (funciona ainda melhor ainda fora dele, mas tergiverso). Darcs tem até um embrião de Tortoise (que posso fazer? tem quem goste…).
Darcs vem amadurendo há um bom tempo já e deve chegar à versão 2.0 dentro de pouco tempo. Estou experimentando com os betas/alphas/versões de desenvolvimento da 2.0 e estou gostando muito do que vejo. Só estou esperando o lançamento oficial da versão para migrar meus projetos para Darcs.
thiago arrais / 07.Feb.2008 at 11:11am
@Thiago, acho que este post pode ajudar. No fundo, não sei porque Darcs não alcançou o mesmo momentum do Mercurial (hg) ou GIT. Como está no post, Darcs é baseado na teoria dos patches e é bem interessante, mas o recurso de rebase do GIT – ao que parece – é ainda mais poderoso. O maior problema do GIT hoje: baixo suporte a Windows (tendo vindo do criador do Linux, não é surpresa :-) De qualquer forma é um problema importante.
akitaonrails / 07.Feb.2008 at 12:34pm
A lavagem cerebral sobre o GIT tá tão forte e tão bem embasada que eu vou comprar o episódio sobre este no peepcode e dar uma olhada com mais carinho em como ele funciona e interage com o SVN
daniel passos / 07.Feb.2008 at 03:55pm
Ah sim, esqueci, o Darcs tem sérios problemas de performance em projetos grandes. É uma das principais críticas. Ao que parece a discussão é mais em torno de Mercurial VS Git. Mercurial é mais divulgado entre projetos Java, ao que parece, pelo suporte da Sun. GIT tem os leais Linuxers por trás também, apesar de haver cisão entre as comunidades open source nesse sentido. Bazaar, por exemplo, é mais entre o pessoal de Ubuntu, se não me engano a Canonical suporta o Bazaar?
akitaonrails / 07.Feb.2008 at 05:21pm
Leave a Comment