Listar todos os desenvolvedores em um projeto no Git

207

É possível listar todos os usuários que contribuíram para um projeto (usuários que fizeram confirmações) no Git?

Alguma estatística adicional?

Ritam Nemira
fonte

Respostas:

390

Para mostrar todos os usuários e emails, e o número de confirmações no ramo ATUAL:

git shortlog --summary --numbered --email

Ou simplesmente:

git shortlog -sne

Para mostrar aos usuários de todas as ramificações (não apenas as da ramificação atual), é necessário adicionar o --allsinalizador:

git shortlog -sne --all
Pedro Nascimento
fonte
3
Observe que se você quiser usar este comando de dentro de um script ou algo como "ant", deverá especificar uma revisão ou ela não produzirá nada. Para a revisão atual, você pode usar o HEAD:git shortlog -sn HEAD
Majenko
59
Para obter também endereços de email, adicione -e.
mic_e
10
Para mostrar aos usuários de todos os ramos (e não apenas os do ramo atual) você tem que adicionar --allflag
Gian Marco Gherardi
3
e se eu não quiser o número de confirmações?
Wearybands
1
Isso também é ótimo para verificar quem tocou em um arquivo específico e não em todo o projeto. git shortlog --summary --numbered <pathToFile>
jxramos
40

Se você quiser ser mais específico na lista (encontre uma lista de committer e autor exclusivos), você pode usar git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an nome do autor
  • %ae email do autor
  • %n nova linha
  • %cn nome do committer
  • %ce email do autor

Outros espaços reservados são descritos na bonita documentação de impressão degit log .

Guillaume Vincent
fonte
Eu acho que o %nnão faz muito sentido em combinação com (baseado em linhas) sort, faz? A linha registra o nome do autor / committer / e-mail em linhas separadas, mas os tipos ao longo de toda a saída ...
SSC
O email do committer @ssc pode ser diferente do email do autor. % n é para a nova linha para encontrar essas diferenças
Guillaume Vincent
19

Você pode tentar isso:

git log | grep Author: | sort | uniq
Santa Zhang
fonte
1
Este é o comando mais útil para qualquer pessoa interessada em atualizar seu arquivo .mailmap!
Ahi Tuna
7

(usuários que fizeram confirmações)

Nota: por padrão, git shortloggrupos confirmados por autores .

Se você precisar agrupá-los por committers, precisará do Git 2.12 (Q1 2017)

git shortlog -snc

Veja commit 03f4082 (16 de dezembro de 2016) por Jeff King ( peff) .
Veja commit fbfda15 (11 de outubro de 2016) por Linus Torvalds ( torvalds) .
(Mesclado por Junio ​​C Hamano - gitster- na confirmação ad1b4e2 , 27 de dezembro de 2016)

O próprio Linus Torvalds apresenta este recurso:

shortlog: agrupar por informações do committer

Em algumas situações, convém agrupar as confirmações não por autor, mas por confirmação.

Por exemplo, quando eu apenas queria pesquisar o que ainda falta linux-nextna janela de mesclagem atual, não me importo tanto com quem escreveu um patch, como com o quegit tree ele veio, o que geralmente se resume a "quem comprometeu isto".

Portanto, faça com que o git shortlog use uma opção " -c" ou " --committer" para mudar o agrupamento para isso.

VonC
fonte
2

Outra opção pode ser:

git log --format='%aN' | sort -u
OcXocę 웃 pepeúpa ツ
fonte
1

Ainda não testei, mas isso parece muito bom para as estatísticas do projeto de um repositório Git: https://github.com/visionmedia/git-extras

Confira o bincatálogo para ver os diferentes scripts.

Por exemplo, o git-countscript (contagem de confirmação por confirmador):

git shortlog -n $@ | grep "):" | sed 's|:||'
Daniel Lee
fonte
1
git shortlog -ns parece menos hackish
TomDLT 20/16
@ TomDLT desde que publiquei isso há 4 anos, este script de exemplo no git-extras mudou. Mas acho que meu conselho para analisar scripts git de projetos como git-extras ou de arquivos de pontos das pessoas ainda é um ótimo conselho. Se você estiver procurando por comandos interessantes do git, eu recomendaria também os dotfiles de Gary Bernhardt: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee
1

Ótimas respostas de @ pedro-nascimento, de @mic_e e outros já resolvem o problema.

Além disso, você pode adicionar a seguinte linha ao seu .gitconfig

contributors = shortlog -e --summary --numbered

ou no tipo de casca

git config --global alias.contributors 'shortlog -e --summary --numbered'

E depois disso, você pode simplesmente invocar: git contributors

adem
fonte
1
você provavelmente deve adicionar uma nota de que, depois de definir isso, você pode simplesmente ligargit contributors
lohfu
0

Você pode experimentar um pacote incrível chamado git-extras . Especificamente, os comandos git-summary , git-count e talvez outros .

honzakuzel1989
fonte