Git: Renomear o branch ‘master’

Digamos que seu projeto vai ganhar uma reescrita, uma refatoração pesada, atualização do framework (rails 2 para rails 3) ou qualquer coisa que vá mudar o rumo do seu código de forma revolucionária. Enfim, cria-se um novo branch e começa a brincadeira. Neste tempo, seu master continua com atualizações, com correções de bugs, novos features, enfim, sua aplicação ainda está viva. Quando terminado o processo de refatoração, o merge com o branch principal, normalmente o master, acaba sendo uma dor de cabeça e a opção adotada algumas vezes é tornar o branch de refactoring no branch principal. Para este caso, vou explicar como renomear o branch de refactoring para o master e, claro, guardar o master para poder fazer ‘a caça as bruxas’ depois. Vou usar como base que estamos atualizando a versão do Rails 2 para Rails 3.

1. Vá para um branch qualquer, se não tiver, crie um;

$ git branch temp
$ git checkout temp

2. Renomear o branch master para rails2;

$ git branch -m master rails2

3. Renomear o branch de rails3 para o master;

git branch -m rails3 master

4. Remover o branch master remoto;

$ git push origin :master

5. Criar o branch master no repositório remoto;

$ git push origin master:refs/heads/master

6. Criar o branch rails2 no reposotório remoto;

$ git push origin rails2:refs/heads/rails2

7. Remover o branch rails3 no repositório remoto;

$ git push origin :rails3

Pronto, teoricamente quando a galera fizer o git pull, pegará o novo branch, mas eu recomento que remova o branch master local de cada máquina e pegar novamente;

$ git branch temp
$ git checkout temp
$ git branch -d master
$ git checkout -b master origin/master

Fontes:
http://www.dmo.ca/blog/20080307124544/
http://www.kernel.org/pub/software/scm/git/docs/git-branch.html
http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html
http://www.kernel.org/pub/software/scm/git/docs/git-push.html


Truques de Ruby: DATA e __END__

Em Ruby, temos algumas CONSTANTES GLOBAIS que facilitam nossa vida. Nesse post, lhes apresento DATA e __END__.

Normalmente os arquivos de scripts em Ruby são finalizados com EOF, mas você pode indicar onde será o fim do script, adicionando a constante __END__ e com isso, todo bloco abaixo de __END__ não será processado pelo Ruby como comandos da linguagem. Então, podemos usar a constante DATA, que é uma instância de File do arquivo de script atual, porém considerando apenas o conteúdo que está abaixo da constante __END__. Vejamos alguns exemplos para entender melhor como funciona

require "yaml"
obj = YAML::load(DATA)

p obj

__END__
---
  -
    name: Adam
    age: 28
    admin: true
  -
    name: Maggie
    age: 28
    admin: false

Neste post de onde peguei o exemplo acima, apresenta outro uso com sinatra.


ssh-copy-id no Mac OS X

Eu iria escrever toda uma história explicando porque desse script, mas desisti. Só quero agradecer ao MV pela dica e o script está aí, para copiar sua chave ssh pública para um servidor e fazer acesso ssh sem ter que digitar senha do usuário.

arquivo ssh-copy-id:

#!/bin/sh

KEY="$HOME/.ssh/id_rsa.pub"

if [ ! -f $KEY ];then
  echo "private key not found at $KEY"
  echo "* please create it with "ssh-keygen -t dsa" *"
  echo "* to login to the remote host without a password, don't give the key you create with ssh-keygen a password! *"
  exit
fi

if [ -z $1 ];then
  echo "Please specify user@host.tld as the first switch to this script"
  exit
fi

echo "Putting your key on $1... "

KEYCODE=`cat $KEY`
cat $KEY | ssh $1 "cat - >> ~/.ssh/authorized_keys"

echo "done!"

Logo, para mandar sua chave para o servidor, basta:

$ ssh-copy-id usuario@endereco_ou_ip_do_servidor

Claro, você terá que digitar a senha do usuário do servidor pela última vez, se tudo funcionar…

Ah! Minha busca no google foi essa.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 602 other followers