Às vezes, nosso cliente exige um relatório das atividades que realizamos na semana passada. Esta pode ser uma atividade enfadonha para um desenvolvedor, então eu gosto de gerar isso usando informações obtidas no git log.
A primeira abordagem é criar um relatório git log apenas para minha atividade (temos algumas pessoas que trabalham no mesmo projeto), e pode ser feito usando a author
configuração:
git log --author=Marco # Change with your name
Isso gera uma saída como:
commit ad5140bca518c676cd4a6e9b268f66d3ff89f992
Author: Marco Vito Moscaritolo <marco@agavee.com>
Date: Fri Aug 23 12:50:41 2013 +0200
refs #101: Lorem Ipsum commit message
commit 5d3d687cbdea09e334267312451065a4416ea5b1
Merge: 76c97d3 b7850f9
Author: Marco Vito Moscaritolo <marco@agavee.com>
Date: Fri Aug 23 12:39:35 2013 +0200
Merge branch 'master' of git.agavee.com:your-project/your-branch
commit 7e6e36eb78f3b07bcb12c0fa3c1e240e6634eccf
Author: Marco Vito Moscaritolo <marco@agavee.com>
Date: Fri Aug 23 10:35:41 2013 +0200
Lorem Ipsum commit message
commit f86221395bee652e08ab8d25c18445c27bb5b723
Author: Marco Vito Moscaritolo <marco@agavee.com>
Date: Fri Aug 23 10:35:23 2013 +0200
refs #101: Lorem Ipsum commit message
commit 31dc49c6a8da7eda699aff7814baa0af555618d8
Author: Marco Vito Moscaritolo <marco@agavee.com>
Date: Thu Aug 22 09:26:40 2013 +0200
refs #100: Lorem Ipsum commit message
O próximo passo é limitar o log para ser mostrado na semana passada (ou no mês passado ou ….). Podemos usar since
e until
opções:
git log --author=Marco --since='1 sunday ago' --until='now'
A saída é semelhante, mas apenas limitada ao trabalho a partir do último domingo. Também podemos alterar o prazo para limitar à semana passada:
git log --author=Marco --since='2 sunday ago' --until='1 sunday ago'
ou você pode criar um relatório no período de tempo de sua preferência.
Isso não é realmente legível, então eu prefiro criar uma visão compacta do relatório, usando a format
opção. Isso é usado uma string para definir o formato para exibir informações no log. O formato que prefiro é:
%Cred%h%Creset %s %Cgreen(%ci) %Cblue<%an>%Creset
que exibe hash de confirmação (% h) na cor vermelha (% Cred), mensagem de confirmação (% s) na cor padrão (% Creset), tempo de confirmação (% ci) na cor verde (% Cgreen) e nome do autor (% an) em azul (% Cblue) e redefinir a cor. Mais elementos que você pode usar no formato podem estar visíveis no documento oficial .
que geram:
ad5140b refs #101: Lorem Ipsum commit message (2013-08-23 12:50:41 2013 +0200) <Marco Vito Moscaritolo>
5d3d687 Merge branch 'master' of git.agavee.com:your-project/your-branch (2013-08-23 12:39:35 2013 +0200) <Marco Vito Moscaritolo>
7e6e36e Lorem Ipsum commit message (2013-08-23 10:35:41 2013 +0200) <Marco Vito Moscaritolo>
f862213 refs #101: Lorem Ipsum commit message (2013-08-23 10:35:23 2013 +0200) <Marco Vito Moscaritolo>
31dc49c refs #100: Lorem Ipsum commit message (2013-08-22 09:26:40 2013 +0200) <Marco Vito Moscaritolo>
Outro formato realmente útil exibe apenas data e mensagem de confirmação:
%Cgreen%ci%Creset %s%Creset
que geram:
git log --author=Marco --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset'
2013-08-23 12:50:41 2013 +0200 refs #101: Lorem Ipsum commit message
2003-08-23 12:39:35 2013 +0200 Merge branch 'master' of git.agavee.com:your-project/your-branch
2013-08-23 10:35:41 2013 +0200 Lorem Ipsum commit message
2013-08-23 10:35:23 2013 +0200 refs #101: Lorem Ipsum commit message
2013-08-22 09:26:40 2013 +0200 refs #100: Lorem Ipsum commit message
Agora temos um relatório básico. O cliente não sabe o que é uma mesclagem, então prefiro remover essas mensagens usando sinalizar,no-merges
git log --author=Marco --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' --no-merges
2013-08-23 12:50:41 2013 +0200 refs #101: Lorem Ipsum commit message
2013-08-23 10:35:41 2013 +0200 Lorem Ipsum commit message
2013-08-23 10:35:23 2013 +0200 refs #101: Lorem Ipsum commit message
2013-08-22 09:26:40 2013 +0200 refs #100: Lorem Ipsum commit message
Agora temos um relatório completo de nossas atividades.
A última dica realmente útil é a possibilidade de salvar essas configurações e um comando git, então não precisamos redigitar todas essas opções todas as vezes. Para fazer isso, edite o arquivo em seu repo e adicione:.git/config
[alias]
report = "log --author=Marco --since='2 sunday ago' --until='1 sunday ago' --format='%Cgreen%ci%Creset %s%Creset' --no-merges"
Agora você pode obter o relatório apenas digitando:
git report
você pode criar mais relatórios, como:
report-csv = "log --author=Marco --since='2 sunday ago' --until='1 sunday ago' --format='"%ci""