A successful Git branching model - Cheatsheet
Nestes dias estava a procura de um modelo de desenvolvimento usando Git, algo que oferecesse algum padrão de como lidar com o desenvolvimento de uma aplicação, com branches para correções de bugs, branches de desenvolvimento, etc. Encontrei um ótimo artigo sobre o assunto, que pode ser lido aqui. Gostei muito do modelo e estou usando nos meus projetos pessoais.
Ao ler o artigo, o autor cita vários comandos para serem usados durante o workflow de desenvolvimento com o Git. Para facilitar a adaptação ao modelo, extrai os comandos do workflow em uma cheatsheet de referência. Também criei uma versão já em PDF para facilitar.
Testing Rails router paths on Rails console
The Rails console is a pragmatic way to test and experiment code inside a Rails environment.
Sometimes it can be helpful to have access to the Rails router url paths helpers, e.g. products_path, new_product_path, etc. To be able to use these helpers on Rails 3, while in the console run this:
include Rails.application.routes.url_helpers
Bzr: Branches have no common ancestor, and no merge base revision was specified
Aqui na empresa, temos um projeto base. Os projetos aqui desenvolvidos herdam deste projeto base.
Também, utilizamos o Bazaar como sistema de versionamento de código.
Quando vamos criar um projeto novo, precisamos fazer com que ele herde do projeto base. A solução que estamos utilizando é criar um novo branch para o novo projeto, e então fazer um merge com o projeto base. Assim, dali em diante conseguimos fazer updates a partir do projeto base. Porém, quando vai-se fazer o merge com o projeto base pela primeira vez, o seguinte erro é lançado:
bzr: ERROR: Branches have no common ancestor, and no merge base revision was specified
Isso acontece porque o novo branch ainda não tem um ancestral comum com o branch do projeto base, sendo assim o bzr não tem como saber a partir do que ele deve fazer o merge.
Neste caso, deve-se especificar o merge manualmente. O seguinte comando (executado a partir da raiz do novo projeto) explicita isso:
bzr merge -r 0..-1 caminho/do/projeto/base
Assim, o Bazaar irá fazer o merge com o projeto base da revisão 0 até a última possível (-1). Deste momento em diante, os dois projetos terão um ancestral comum e será possível fazer merges com o projeto base sem mais problemas.
A teoria da janela quebrada
Finalmente, após quase um mês de espera, chegou na última semana a minha encomenda da Amazon. Nela estão dois livros: Rework e The Pragmatic Programmer.
Rework é um livro rápido de se ler, ainda mais que eu já estava ávido por mais textos do pessoal da 37 Signals, e minha ansiedade me fez terminá-lo mais rápido ainda. Espero comentar sobre as idéias do livro em posts futuros.
Ontem (sexta) iniciei a leitura do livro The pragmatic programmer, e uma teoria no início do livro me chamou a atenção: a teoria da janela quebrada.
Segundo os autores, a teoria da janela quebrada surgiu de uma pesquisa que buscava descobrir por que alguns prédios em algumas cidades estão em bom estado e outros estão em estados precários. Os pesquisadores chegaram então a razão do problema: uma janela quebrada.
A teoria da janela quebrada diz que, a partir do momento em que existe uma janela quebrada, o ambiente passa por um processo acelerado de deterioração. Em um dos testes, os pesquisadores deixaram um carro estacionado por uma semana no mesmo local, sem tirá-lo dali. Ninguém mecheu no carro.
Na semana seguinte, os pesquisadores quebraram uma das janelas. Em algumas horas o carro estava em frangalhos. Uma janela quebrada é um gatilho que \\"dá permissão\\" para o surgimento de outras janelas quebradas.
Levando isso para o mundo da programação, você já deve ter passado por uma situação onde o seguinte passou pela sua cabeça:
\\"Bom, se o resto do código já está assim mesmo, vou fazer isso assim também.\\"
E assim softwares se encaminham para mais e mais janelas quebradas. Em alguns projetos, uma pequena decisão errada pode ser o suficiente para desencaminhar todo o resto.
Como pode-se enfretar este problema? Os autores incitam a consertar as janelas quebradas o mais rápido possível, de preferência assim que forem avistadas. Não de tempo de elas se estabilizarem, o trabalho de consertar janelas quebradas no futuro será muito maior!
Ubuntu 10.04 and Eqonomize
Hi there!
I have updated my Ubuntu 9.10 to 10.04 yesterday, and oh my how great it is looking! The new theme is really great, and this is the best Ubuntu version so far.
The onyl problem I had was with Eqonomize, a personal finance program I'm using. I was receiving this message when I tried to open it:
Bus::open: Can not get ibus-daemon's address.
IBusInputContex
eqonomize: symbol lookup error: eqonomize: undefined symbol: _ZN9QHashData13
<unknown program name>(25931)/: Communication problem with "eqonomize" , it probably crashed.
Error message was: "org.freedeskto