A interface de linha de comando do git tem melhorado imenso, mas algumas operações poderiam ter melhor interface. Aqui seguem alguns aliases que tornaram o meu uso de git mais agradável:

  • Para gerir aliases

    1
    2
    3
    4
    5
    git config --global --add alias.add-alias \
    '!f() { git config --global --add alias.$1 "$2"; }; f'
    git add-alias aliases 'config --get-regexp ^alias'
    git config --global --add alias.rm-alias \
    '!f() { git config --global --unset alias.$1 ;  }; f'

  • Atalhos básicos

    1
    2
    3
    4
    5
    6
    7
    8
    9
    git add-alias stat status
    git add-alias co checkout
    git add-alias ci commit
    git add-alias br branch
    git add-alias fa 'fetch --all'
    git add-alias pullff 'pull --ff-only'
    git add-alias pullrb 'pull --rebase'
    git add-alias rbi 'rebase -i'
    git add-alias bi bisect

  • Atalhos informativos

    1
    2
    3
    4
    5
    6
    git add-alias root 'rev-parse --show-toplevel'
    git add-alias wb 'rev-parse --abbrev-ref HEAD'
    git add-alias desc 'describe --dirty --abbrev=40'
    git add-alias bll 'branch -vv --list'
    git add-alias where \
    '! echo "* HEAD:" $(git desc); git bll $(git wb)'

  • Branches

    1
    2
    3
    4
    git add-alias bup-om \
    'branch --set-upstream-to origin/master'
    git add-alias cob 'checkout -b'
    git add-alias cot 'checkout -b -t'

  • Opções essenciais

    1
    2
    3
    4
    5
    git config --global --add push.default simple
    git config --global --add core.ui true
    git config --global --add core.whitespace \
    trailing-space,space-before-tab,tab-in-indent
    git config --global --add merge.conflictstyle diff3


    Claro que é obrigatório configurar user.email e user.name. Quando se pretende assinar os commits então também tem que configurar user.signingKey.

Previamente… Funções úteis em bash

Esta nova versão é ligeiramente mais eficiente, porque não existem mais comandos echo e pipes envolvidos no processamento. Apenas um eval e um script awk.


1
2
3
4
5
6
7
8
9
10
11
12
unique_path() {
  eval $(awk -v VAR="${1}" 'BEGIN {                 \
    if((N=split(ENVIRON[VAR],vals,":"))<2) exit(0); \
    sep = out="" ; i=split(out,seen);               \
    do { if(!(vals[++i] in seen)) { seen[vals[i]];  \
           gsub("["]","\\"",vals[i]);             \
           out=sprintf("%s%s%s",out,sep,vals[i]);   \
           sep=":";                                 \
    } } while (i<N);                                \
    printf "%s="%s"; export %s;\n",VAR,out,VAR;   \
  }'
/dev/null)
}

Estas funções também foram melhoradas removendo usos desnecessários de sub-shells para echo


1
2
3
4
5
6
7
8
9
10
11
safe_prepend_path() {
  VAR=$1 ; shift ; eval VAL=\$${VAR}
  for i_;do [ -d "$i_" ] && VAL=$i_${VAL:+":$VAL"} ;done
  eval export ${VAR}=${VAL}
}

safe_append_path() {
  VAR=$1 ; shift ; eval VAL=\$${VAR}
  for i_;do [ -d "$i_" ] && VAL=${VAL:+"$VAL:"}$i_ ;done
  eval export ${VAR}=${VAL}
}


Pessoas como eu têm conferências telefónicas regulares em que é necessário enviar digitos para entrar ou activar a conferência.

Num Nokia N9 não é nada óbvio como configurar um contacto para enviar esses digitos automaticamente após a chamada ter sido estabelecida, particularmente se usar o teclado virtual Swype.

A primeira coisa a saber é que para indicar uma pausa no N9 para os digitos é necessário entrar um ‘p’. Para mim isto foi uma surpresa, porque estava habituado a outros telemóveis em que usava a virgula (‘,’), ponto e virgula (‘;’) ou ponto final para isso.

Se está a usar Swype, quando vai entrar um número de telefone, verá algo como a imagem abaixo, um teclado numérico virtual. Primeiro ignora os simbolos monetarios e tenta digitar a virgula ou o ponto, mas não funciona.

O que precisa fazer é usar o botão ABC do fundo, para mudar para o teclado alfanumerico principal e finalmente pode digitar o ‘p’


Se tem o teclado virtual original isto é um pouco mais simples. Basta premir o ‘‘ e note que fica sublinhado a vermelho, prima de novo e fica um ‘+’ e de novo… e finalmente o ‘p’ aparece. Tem que premir as três vezes em rápida sucessão.



%d bloggers like this: