git-who é uma ferramenta CLI para encontrar os responsáveis por componentes inteiros ou subsistemas de uma base de código
- Diferente do
git blame, o git-who opera na unidade da árvore de arquivos para identificar os autores do código
- Oferece três subcomandos, e cada um deles fornece uma perspectiva diferente sobre a autoria em um repositório Git
-
table
- Padrão, exibe uma tabela resumindo as contribuições de todos os autores que fizeram commits no repositório
- É possível especificar um caminho para filtrar apenas commits de arquivos em um caminho específico
- Também é possível especificar um nome de branch, nome de tag ou um "commit-ish" para filtrar apenas os commits alcançáveis a partir de um commit específico
- É possível ordenar a tabela por diferentes métricas usando as flags
-m, -c, -l, -f
-
tree
- Exibe a árvore de arquivos, e cada nó mostra o autor que mais contribuiu naquele caminho
- É possível anotar todos os arquivos usando a flag
-a
- Suporta as flags
-l, -f, -m, -c
-
hist
- Exibe um histograma/linha do tempo da atividade de commits para mostrar o histórico de contribuições no repositório
- Suporta as flags
-l e -f
- Opções adicionais para filtragem de commits
- As opções
--author e --nauthor permitem especificar autores para incluir ou excluir
- As opções
--since e --until permitem filtrar commits antes ou depois de datas específicas
- Cache: armazena dados em cache por repositório em
XDG_CACHE_HOME. Para desativar o cache, defina GIT_WHO_DISABLE_CACHE=1
- Se o binário
git-who estiver instalado no PATH, é possível executar git who sem configuração adicional. Se for instalado com outro nome ou se você quiser configurar explicitamente, é possível adicionar um alias nas configurações do Git
- Se existir um arquivo
.mailmap no repositório Git, o git who o respeitará e contabilizará juntos os commits da mesma pessoa
-
Métricas
- Número de commits: indica quantos commits modificaram o caminho
- Número de arquivos: indica a quantidade de arquivos únicos modificados pelo autor
- Linhas adicionadas e linhas removidas: indicam quantas linhas foram adicionadas ou removidas no caminho
-
Diferenças em relação ao git blame
- O
git blame identifica o commit que introduziu cada linha com base no código da árvore de trabalho, enquanto
- o
git who percorre parte do log de commits para agregar as contribuições
- As duas ferramentas operam em níveis diferentes e fornecem informações diferentes
1 comentários
Comentários no Hacker News
Em relação à análise de "quem escreveu o vim", dependendo do fluxo de trabalho pode parecer que colaboradores internos contribuíram mais
Essa ferramenta é realmente muito legal. Testei rapidamente antes de encerrar o dia
Muita gente entende mal o git blame. Não é sobre quem fez, e sim sobre qual commit é o responsável
É possível chamar
git-whocomogit who. Basta configurar um alias nas configurações globais do Gitgit whateverprocuragit-whateverno caminho e o executaEu uso um apelido de versão simplificada, "nerdwars", para executar
git shortlog -ns --no-merges. É uma boa forma de identificar os principais contribuidores de um projetoGitLab/GitHub deveriam adicionar um recurso que envia automaticamente um e-mail para o último autor das linhas de código modificadas quando uma merge request é enviada
Essa ferramenta é excelente. Uso contabilidade com git-blame para acompanhar quanto código foi escrito por IA e por humanos em cada release do app
tigé um ótimo frontend TUI para Git e tem um belo subcomandotig blameO que falta no git não é quantas linhas ou commits um desenvolvedor escreveu. É mais algo como isto
Algumas pessoas fazem commits usando dois e-mails diferentes. Por exemplo, um no computador de casa e outro no computador da empresa. Seria bom poder definir que ambos são a mesma pessoa