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…
Entrada de Upload de Múltiplos Arquivos
Na maioria das vezes, quero fazer upload de mais de um arquivo ao mesmo tempo. Ter que usar vários elementos INPUT de “arquivo” é irritante, lento e ineficiente. E se eu os odeio, não consigo imaginar como meus usuários ficariam irritados. Felizmente, o Safari, o Chrome…