Um aspecto interessante de trabalhar na Mozilla é que o Firefox vive em um repositório mercurial, enquanto vários outros projetos vivem no GitHub em um repositório git. Enquanto a maioria se concentra no Firefox ou em outro projeto, eu alterno entre os dois, o que me deixa executando git comandos dentro do repositório mercurial e hg comandos dentro dos repositórios git. Essa é uma frustração com a qual convivo há algum tempo, por isso procurei encontrar uma maneira unificada de concluir tarefas comuns.

A primeira etapa foi aprender a detectar o git na linha de comando:

if git rev-parse --git-dir > /dev/null 2>&1; then
  # git repo!
else
  # NOT a git repo!
fi

O if acima detecta um repositório git, a instrução else significa que o diretório atual não está dentro de um repositório git.

Uma tarefa frequente é verificar o master e obter o código mais recente do upstream, portanto, crio um alias para fazer exatamente isso:

master() {
  if git rev-parse --git-dir > /dev/null 2>&1; then
    git checkout master && git pull upstream master
  else
    hg pull && hg checkout "last(public())"
  fi
}

Esse alias me poupará tempo e frustração no futuro, e tenho certeza de que encontrarei outros aliases para criar com base na detecção do git!

  • Projetando para a simplicidade

    Antes de começarmos, vale a pena dedicar um breve momento para me apresentar aos senhores. Meu nome é Mark (ou @integralist se o Twitter for sua ferramenta de comunicação preferida) e atualmente trabalho para a BBC News em Londres, Inglaterra, como engenheiro principal/técnico…

  • CSS @supports

    A detecção de recursos via JavaScript é uma prática recomendada do lado do cliente e por todos os motivos certos, mas, infelizmente, essa mesma funcionalidade não está disponível no CSS. O que acabamos fazendo é repetir as mesmas propriedades várias vezes com cada prefixo de navegador. Que nojo. Outra coisa que…