VidaGeek.net

Linux, Open-source, Programação e Produtividade

Como exibir branch atual do git

Umas das coisas legais que bash tem é uma variável que define como deve ser o prompt da linha de comando. Essa variavel de ambiente se chama PS1. Um dos usos mais incríveis que já vi dela foi o de mostrar em qual branch do git você está (e não mostrar nada quando você não está em um repositório).

Isso é a diferença entre

terminal que não mostra o branch

e isso

terminal que mostra o branch

Não sei quanto a vocês, mas eu realmente fico mais feliz com a segunda forma.

A minha variável PS1 é configurada da seguinte forma (mac - ~/.bash_profile - linux - ~/.bashrc):

export PS1="\[\033[38m\]\u\[\033[32m\] \w \[\033[31m\]\`git \\
branch 2>/dev/null | grep \"^\*\" | \\
sed -r \"s/\*\ (.*)/ \(\1\)/\"\`\[\033[37m\]$\[\033[00m\] "

Impossível de ler, correto? Vou quebrar em mais linhas para facilitar a vida.

PS1="\[\033[38m\]\u";
PS1="$PS1\[\033[32m\] \w";
PS1="$PS1\[\033[31m\]";
PS1="$PS1\`git branch 2>/dev/null | grep \"^\*\" | \\
                           sed -r \"s/\*\ (.*)/ \(\1\)/\"\`";
export PS1="$PS1\[\033[37m\]$\[\033[00m\]";

Não testei, mas deve ter o mesmo efeito. Explicando um pouco da mágica:

  1. Essa sequência bizarra de caracteres (\[\033[38m\]) é a forma de definir que o que virá depois será impresso em branco, num terminal que permite coloração (o que realmente define a cor é o 38m. O resto é apenas a forma de indicar a mudança de cor). “\u”, na PS1, significa o usuário atual.
  2. A próxima sequência de caracteres bizarros troca a cor para verde. “\w”, na PS1, é o seu path atual.
  3. Troca a cor para vermelho.
  4. Extrai o nome do branch (sendo executado em uma subshell. Para isso que servem os \`).

    1. git branch 2>/dev/null: Imprime todos os branches do repositório onde você se encontra. Caso ocorra algum erro, a mensagem de erro será enviada para /dev/null, vulgo limbo (por isso nada será impresso nos outros diretórios).
    2. grep “^\*”: Me dá todas as linhas começadas por * .
    3. sed -r \”s/\*\ (.*)/ \(\1\)/\”: Novamente o grande monstro sed salva o dia. A regex que está ali pega o que vêm depois do espaço que está depois do * e imprime com parenteses em volta.
  5. Muda a cor para branco, imprime $ (apenas para marcar o fim do prompt) e para de brincar com as cores do terminal, devolvendo o controle à shell.

A versão anterior que eu usava da PS1 usava ruby pra fazer essa mágica toda, mas dessa forma não depende mais do ruby instalado na máquina.

Posts Relacionados:

  • Como desfazer commits na branch errada no Git
  • Git Workflow
  • Auto refresh no eclipse
  • Como migrar de SVN para GIT
  • Como descobrir todos que commitaram em um repositório SVN
  • Ambiente aberto de Xadrez Online
  • Truques do Bash
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 0 Comments
  • Filed under: Dicas, Programacao
  • Aprendendo Bash

    Terminal
    O Bash (Bourne Again Shell) é, com certeza, o shell mais utilizado no mundo. Ele é utilizado por padrão em todas as distribuições linux que conheço e também no MacOSX. Portanto o domínio de sua linguagem e comandos é essencial para os programadores que não utilizam exclusivamente o ambiente Windows. Na verdade, com o cygwin é possível ter todo poder do bash e outras ferramentas GNU no Windows, aumentando muito a produtividade do desenvolvedor.

    (more…)

    Posts Relacionados:

  • Um pouco de Bash - Parte I
  • Trocando chaves rsa rapidamente
  • MacOSX Terminal e os Alias do Finder
  • Séries
  • O verdadeiro geek
  • Truques do Bash
  • Como remover os malditos .svn
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 6 Comments
  • Filed under: Gentoo, Linux, Ubuntu
  • Aprenda Comandos Básicos de Linux

    Terminal
    Para os iniciantes os comandos de shell do linux podem ser um tanto quanto confusos. Isso porque muitos não têm nome intuitivo (como o cat - gato em inglês - que mostra um arquivo no terminal) e a quantidade de comandos e parâmetros a decorar para fazer as coisas mais básicas no terminal é muito grande. Apesar de podermos fazer muitas coisas, principalmente por causa dos pipes, muito programas são desconhecidos e no fim das contas acabamos reinventado a roda quando não sabemos um deles. Por exemplo, apenas recentemente aprendi a usar o find e o wc que encontra arquivos e conta palavras/linhas respectivamente. Sugerimos então uma dica para quem gostaria de aprender alguns comandos de terminal já que, ao meu ver, é uma grande perda usar um sistema Linux e não saber os comandos básicos, já que o terminal pode agilizar muito o seu trabalho.

    (more…)

    Posts Relacionados:

  • Aprendendo Bash
  • Livro grátis de Ubuntu
  • YACP - Aprendendo a usar suas ferramentas
  • Gerando memória swap on-the-fly
  • Truques do Bash
  • Visual Basic no Linux
  • Retrospectiva 2008
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 11 Comments
  • Filed under: Gentoo, Linux, Ubuntu