Git

[BookReview] Pragmatic version control using Git

tsgit

Æ!!

Há tempos que eu estava querendo conhecer um pouco mais do Git e nos últimos dias estava procurando um livro legal, quando me deparei com esse livro. Fiz algumas perguntas para um pessoal no Twitter como pessoalmente sobre esse livro, alguns me recomendavam, outros me passavam outros também interessantes, e estava em dúvida entre comprar ou não, até que consegui emprestado e li em 3 dias.

O livro é bem interessante, aborda desde o mais básico até o nível intermediário, não abordando conteúdos tão avançados.

Começa abordando como é o fluxo de trabalho do git, mostrando com exemplos práticos como você faz para usar o git num projeto, modificando o arquivo, adicionando para o stage, fazendo commits e etc. E fica uma boa parte do livro mostrando um pouco sobre as formas com que você pode fazer as coisas, como:

  • Adicionar arquivos como o git add -i para adicionar interativamente
  • Usar git log -p para alem de ver as mensagens de commit ver tambem o que foi usado
  • git log -2 para ver apenas as 2 ultimas mensagens de log
  • git diff –cached para fazer o diff do que já está no stage
  • E mais várias outras dicas úteis

Uma das coisas que eu achei interessante foi a apresentação de curiosidades interessantes como dizer que o Git usa um hash SHA1 que tem uma chance se se repetir de 2⁶⁹ :P .

Comentou sobre algumas ferramentas para se usar junto com o Git, como alguns mergetools para facilitar no processo de merge e o git gui ( que é feio que dói, mas funciona ) para quem gosta de brincar com algo no estilo tortoise.

Depois de explicar sobre a parte básica do Git ele começa a passar para algo mais intermediário, onde vem os merges e as modificações de commits localmente.

Nessa parte mais intermediária foi comentado sobre o git rebase e como você pode usá-lo para reorganizar os seus ultimos commits usando git rebase -i. É uma técnica bem interessante quando se faz um monte de commits locais mas quer enviar apenas um commit para o repositório.

Foi comentado tambem sobre tags e como é útil utilizá-las para marcar as versões do seu sistema, sendo que você pode adicionar commits apenas a uma tag e tal. Utilizando git tag 1.0 você já define que determinado commit marca a versão 1.0 do seu sistema. Você pode depois dar um git checkout na sua tag e ver ela como read-only ( sendo possível criar um branch e fazer modificações ).

Mais modos do git log foram apresentados tambem, como fazer um git log para ver os commits das ultimas 5 horas, ou desde as 10 horas usando –since ou –before, ou até mesmo usar um –pretty=format:”" e passar uma melhor maneira para formatar o seu log. :)

Conheci algums comandos interessantes que raramente são usados mas são muito úteis tambem:

  • O git gc que compacta o seu repositório para que ele exclua tudo o que não está relacionado a nada, assim reduzindo o espaço que seu repositório ocupa.
  • O git archive para você gerar um arquivo com seu repositório com a versão que quiser, sendo tag, passando o Head ou o que achar melhor.
  • O git reflog para quando você precisa recuperar algum commit que não está mais no repositório, algo que estava em um branch que foi excluído ou coisas do gênero ( lembrando que se você usou o git gc isso não será possível )

O livro tambem comenta de vários outros comandos, como o git cherry-pick por exemplo, para você passar um commit para outro branch, e sem contar que mostra várias opções que os comandos normais tem, como o git diff para você ver os status a partir de uma tag e tal.

Concluindo, achei o livro interessante e recomendaria para muita gente! O que eu tenho a dizer é que ele não é um livro para alguem que quer ver algo avançado em git, e sim alguem que não conhece ou sabe apenas o bem básico, pois assim vai conhecer algumas coisas bem legais.

Tags: , ,

Sunday, July 19th, 2009 Books 4 Comments

Usando Git em projetos do Google Code

Æ!!

Resolvi escrever esse post depois de começar a contribuir para o projeto do vimbook, que está no Google Code.

Como o Google Code só usa Subversion ( infelizmente ) e eu sou do mundo Git, resolvi usar a ferramenta Git para lidar com SVN, o git-svn! Com ele você pode clonar um repositório SVN e utilizar como Git, e na hora de “commitar” ele retransforma em SVN.

Já havia tentado usar Git-svn no meu projeto de plugin para wordpress, mas nesse caso eu já tinha um repositório Git e fui tentar mandar para um repositório SVN vazio, o que só me deu dor de cabeça, e no fim das contas acabei jogando para um repositório SVN qualquer só para mandar para o Wordpress. No fim das contas, depois desse problema com o Wordpress eu só tinha abominado o git-svn, mas agora eu estou começando a descobrir o seu valor.

Meus agradecimentos ao Carlan Calazans que me deu umas dicas de Git-svn quando eu comecei a tentar usar no projeto do plugin, que naquele momento não me fora de grande serventia, mas depois ajudaram bastante! ;)

Bem, agora chega de papo-furado e vamos a parte que interessa…Códigos e How To! :)

Primeiramente vamos baixar o código ( estou usando como exemplo o vimbook ):

git-svn clone https://vimbook.googlecode.com/svn/trunk/ vimbook --username seu.usuario.do.google

Ao digitar isso ele vai pedir uma senha que ele gera para a sua conta, e seus commits ficarão ligados a sua conta do Google. Para obter a sua senha é só acessar a página de settings do google code com a sua conta.

Após digitar a sua senha ele vai começar a receber todos os commits do SVN e converter para Git! O processo pode ser um pouco demorado, dependendo do tamanho do repositório SVN que você está importando.

Quando terminar você terá um repositório Git normal funcionando, e você pode trabalhar normalmente com ele, fazendo seus branchs e tudo mais! :D

Vamos ver como seria um fluxo simples para você fazer uma alteração usando branch e mandar de volta para o repositório:

git checkout -b new_changes

Branch criado! Faça as suas alterações… Após as alteraçoes feitas faça os commits normalmente como se faz no Git e volte ao master para ver o que há de novo no repositório central:

git checkout master
git-svn rebase

Com isso ele vai receber as novas alterações do repositório! Agora é a hora de fazer um merge do seu branch com a ultima versão do master:

git merge new_changes

Se tiver algum conflito resolva-os normalmente e agora é hora de enviar as suas alterações novamente ao Google Code:

git-svn dcommit

Pronto! Você está contribuindo para um projeto do Google Code utilizando Git. :D

Há braços

Tags:

Sunday, May 10th, 2009 Development 2 Comments

Colocando sua aplicação Rails na Dreamhost

Æ!!

Estou fazendo um pequeno site em Rails e como tinha que mostrar o andamento para um colega, aproveitei para testar como seria o Deploy desse projeto na DreamHost ( mesmo sabendo que o provedor final não será lá ), e achei  muito fácil de se fazer, portanto resolvi escrever um pouco sobre o processo. :D

Primeiramente, você precisa ter acesso SSH na sua conta. Se você ainda não tiver esse acesso apenas faça o seguinte procedimento:

  • Acesse o menu Users > Manage Users
  • Clique em Edit no user que você vai usar para o acesso SSH
  • Marque a opção Shell account – allows SFTP/FTP plus ssh access.

A partir daí você pode acessar por SSH assim como acessava por FTP, com esse usuário e senha. :)

Agora que temos acesso SSH a conta, vamos colocar nossa aplicação lá! Se ela estiver no GitHub você pode fazer um clone da sua aplicação facilmente:

git@github.com:usuario/projeto-qualquer.git

Se não estiver no GitHub você pode fazer um pacote tar.gz e enviar facilmente por scp:

tar cvf app.tar.gz aplicacao-quaquer/
scp usuario@xxx.xxx.xxx.xxx:/home/local/da/applicacao app.tar.gz

*Sendo que o xxx é o endereço IP ou Nome da sua maquina na Dreamhost

Com nossa aplicaçào lá, vamos criar o nosso domínio ou sub-domínio no painel de controle da DreamHost , pelo menu domains > manage domains Geralmente seu domínio demora um pouco para começar a funcionar, mas você não precisa esperar que ele esteja totalmente funcional para que você continue o processo ;)

O que você precisa fazer é?

  • Ativar o Ruby on Rails Passenger (mod_rails)
  • Apontar o Specify your web directory para o diretório public da sua aplicação

Agora que temos o nosso domínio criado e validando ( lembre-se que não é instantâneo ), podemos configurar o nosso banco de dados!

Acesse o Manage Mysql pelo menu Goodies > Manage Mysql e preencha o formulário que está logo abaixo dos bancos de dados já existente ( se houver ) para criar um novo banco.

Com o novo banco de dados criado, vamos adaptar nossa aplicação para usá-lo! ;)

Vá no arquivo config/database.yml e altere as informações da seção production para o que foi configurado no painel..

Agora com tudo configurado, vamos rodas as nossas migrations para as configurações de produção:

RAILS_ENV=production rake db:migrate

Com isso você já terá seu projeto funcionando assim que o domínio se propagar!

Foi bem mais simples do que eu pensava, como eu deixei o repositório com Git lá, basta eu fazer as alterações localmente e dar um push que já terei minha aplicação alterada lá! :)

É isso aí, espero que seja útil para vocês.

Há braços

Tags: , , ,

Tuesday, March 24th, 2009 Development No Comments

Configurando seu git para começar a usar

Æ!!

Meu ultimo post foi sobre como subir um projeto para o GitHub, mas me veio agora uma vontade repentina de falar como deixar seu git legalzinho para começar a criar repositórios e contribuir com códigos! Serão apenas configurações básicas, mas que são bem úteis quando você estiver usando o Git ativamente!

Antes de mais nada precisamos instalar o Git, portanto é só baixar ele no repositório oficial e fazer a instalação referente ao seu sistema operacional.

  • No meu Slackware já veio o Git instalado belezinha, portanto foi moleza! No máximo eu atualizei com o SlackPkg.
  • No Ubuntu se eu não me engano eu precisei instalar, mas foi moleza, só baixar o .deb oficial e usar o dpkg -i :)

Vamos as configurações:

Primeiramente precisamos de configurar o nosso nome e e-mail:

git config --global user.name "PotHix" git config --global user.email "PotHix@pothix.com"

Algora alguns Alias para facilitar:

git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch

Agora algumas cores para facilitar a leitura quando digitarmos os comandos:

git config --global color.status auto git config --global color.branch auto git config --global color.diff auto

Podemos já criar um projeto simples e enviar para o GitHub assim como eu fiz no post anterior mas agora já usando os nossos alias para ficar mais fácil! :)

Com Git podemos fazer várias outras coisas que vou falando aos poucos em outros posts, esse aqui é só para mostrar como deixar seu git mais legal para começar.

Há braços

Tags:

Saturday, December 20th, 2008 Development No Comments

Iniciando seu primeiro projeto no GitHub

Æ!!

Hoje estou aqui para postar um pouco sobre o GitHub! =) Minha idéia hoje é apenas mostrar como você inicia um projeto por lá, ou seja, enviar um pequeno repositório git e deixar no GitHub, e conforme os meus progressos eu postarei mais coisas por aqui! ; )

Antes de começar tudo isso você precisar ter cadastro no GitHub ( obviamente ) e já ter uma public-key cadastrada.

Para cadastrar uma public-key é só logar no GitHub, clicar em account ( no canto superior direito ) e clicar em “add public key” que vão aparecer os campos para inserir a mesma.

Você pode encontrar a sua public key no diretório ~/.ssh com cat id_rsa.pub

Caso ele não exista basta acessar sua home (~) e cria-lo com: ssh-keygen -t rsa

OBS: Eu tenho um post com mais informações sobre chave e SSH

Depois pegar o conteúdo do arquio id_rsa.pub e colocar lá no GitHub. Voltando a criação do repositório…Primeiramente crie um diretório por aqui:

Depois de criar você já terá um local acessível para enviar seu código, que por sinal ainda não existe, portanto….Vamos criá-lo! :)

Primeiramente crie um diretório qualquer: mkdir codes

Acesse o diretório: cd codes

E vamos iniciar o git nesse repositório: git init

Coloque aqui seu arquivo de código ( Não necessáriamente código, mas nesse caso vamos usar código ;) ) e vamos adicioná-lo ao git: git add mycode.rb ( Obs: Ruby o/ )

Agora vamos dar um commit do que fizemos usando “-m” para deixar uma mensagem do motivo do commit: git commit -m “Meu primeiro commit”

Agora vamos adicionar como origem o nosso projeto criado no GitHub: git remote add origin git@github.com:seu-usuario-no-GitHub/nome-do-repositorio-criado.git

E depois é só dar um: git push origin master

E lá está o seu código no GitHub! :) Tudo que eu falei aqui está no tutorial do GitHub quando você cria um diretório:

http://github.com/guides/setting-up-a-remote-repository-using-github-and-osx

Por enquanto é isso! Algo bem simples só para você não se assustar quando lhe falarem de GitHub.

Há braços

Tags:

Saturday, December 20th, 2008 Development 1 Comment

My last Tweet

Search