Quante persone sono state coinvolte in un progetto? Basato sul sistema di controllo delle revisioni
Domanda
Come fai a sapere quanti sviluppatori sono stati coinvolti in un progetto utilizzando un sistema di controllo delle revisioni? Un mio amico ha trovato questo modo di cercare la risposta in git log:
git log | grep Author: | sort -u | cut –delimiter=” ” -f2 | sort -u | wc -l
Esiste un modo semplice in Git? Che ne dici di altri sistemi di controllo delle revisioni come Subversion, Bazaar o Mercurial?
Soluzione
git
Il shortlog
< Il comando / a> è molto utile. Questo riassume il tipico output git-log
.
$ git shortlog -sn
119 tsaleh
113 Joe Ferris
70 Ryan McGeary
45 Tammer Saleh
45 Dan Croak
19 Matt Jankowski
...
Passa a wc
per vedere il numero di nomi utente univoci:
$ git shortlog -sn | wc -l
40
Altri suggerimenti
Per mercurial, esiste un'estensione per fare esattamente questo: hg churn
.
hg churn
ordina per riga modificata, se si desidera il conteggio del changeset, utilizzare hg churn -c
.
Per sovversione
svn log -q svn://path/to/repo | cut -f 3 -d " " | sort -u
Esiste un plugin di statistiche per Bazaar per ottenere diverse informazioni sui partecipanti al progetto:
Non sono nemmeno a conoscenza di un modo semplice per Mercurial e anche una buona ricerca di tutta la sua documentazione non ha rivelato nulla. Quindi, ecco un comando * nix, simile a quello trovato dal tuo amico, per Mercurial:
hg log | grep user: | cut -c 14- | sort -u | uniq | wc -l
A proposito, penso che ci sia un errore con il comando per git, il secondo sort -u
dovrebbe sicuramente essere sostituito da uniq!
Una versione git più semplice è:
git log --pretty=tformat:%an | sort -u | wc -l
o se ti interessano indirizzi email univoci:
git log --pretty=tformat:%ae | sort -u | wc -l
Mercurial ha un potente linguaggio di template incorporato (vedi hg help templates
). Quindi puoi ottenere un elenco di tutte le persone nel progetto senza abilitare l'estensione churn:
hg log --template '{author}\n' | sort -u
Se le persone hanno cambiato il loro indirizzo email (ma altrimenti hanno mantenuto lo stesso nome), è possibile elaborare un po 'la parola chiave del modello author
:
hg log --template '{author|person}\n' | sort -u
Quindi aggiungi wc -l
come appropriato ai comandi sopra.