[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gnu-patches back log
From: |
Ludovic Courtès |
Subject: |
Re: gnu-patches back log |
Date: |
Sat, 11 Mar 2017 22:30:50 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Hi Hartmut,
Hartmut Goebel <address@hidden> skribis:
> Am 06.03.2017 um 17:14 schrieb Ludovic Courtès:
>> add Reviewed-by tags
>
> Can git add this automatically? Otherwise it would mean additional
> manual work.
Actually Git already distinguishes between committer and author, so
you’re probably right.
Based on that, the attached Guile-Git program gives the number of
patches committed on behalf of someone else, and… [drum roll] we get:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,pp (sort (reviewers repo) reviewer<)
$6 = ((0 . "Nikita Karetnikov")
(0 . "Cyril Roelandt")
(0 . "John Darrington")
(0 . "Jason Self")
(0 . "Federico Beffa")
(0 . "rekado")
(0 . "Taylan Ulrich Bayırlı/Kammer")
(0 . "Tomáš Čech")
(0 . "Paul van der Walt")
(0 . "Ben J. Woodcroft")
(0 . "Alex Sassmannshausen")
(0 . "Julien Lepiller")
(1 . "Andy Wingo")
(2 . "cyril")
(2 . "Manolis Ragkousis")
(2 . "Roel Janssen")
(2 . "Tobias Geerinckx-Rice")
(6 . "Christopher Allan Webber")
(9 . "Hartmut Goebel")
(13 . "Danny Milosavljevic")
(17 . "Mathieu Lirzin")
(29 . "Eric Bavier")
(36 . "Andreas Enge")
(38 . "David Craven")
(40 . "Ben Woodcroft")
(51 . "David Thompson")
(52 . "Kei Kebreau")
(68 . "宋文武")
(81 . "Mark H Weaver")
(88 . "Alex Kost")
(94 . "Ricardo Wurmus")
(99 . "Marius Bakke")
(101 . "Efraim Flashner")
(336 . "Leo Famulari")
(641 . "Ludovic Courtès"))
--8<---------------cut here---------------end--------------->8---
Not sure if it’s 100% accurate, but it should be a good approximation.
To those with a 1-digit number, please take a look at
<https://bugs.gnu.org/guix-patches> and try to beat your fellow hackers!
:-)
Ludo’.
(use-modules (git)
(git repository)
(git reference)
(git oid)
(git tag)
(git commit)
(git structs) ;signature-email, etc.
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match)
(ice-9 vlist))
(define commit-author*
(compose signature-name commit-author))
(define commit-committer*
(compose signature-name commit-committer))
(define-syntax-rule (false-if-git-error exp)
(catch 'git-error
(lambda () exp)
(const #f)))
(define* (fold-commits proc seed repo
#:key
(start (reference-target
(repository-head repo)))
end)
"Call PROC on each commit of REPO, starting at START (an OID), and until
END if specified."
(let loop ((commit (commit-lookup repo start))
(result seed))
(let ((parent (false-if-git-error (commit-parent commit))))
(if parent
(if (and end (oid=? (commit-id parent) end))
(proc parent result)
(loop parent (proc parent result)))
result))))
(define (reviewers repo)
"Return a list of review count/committer pairs."
(define vhash
(fold-commits (lambda (commit result)
(if (string=? (commit-author* commit)
(commit-committer* commit))
result
(vhash-cons (commit-committer* commit) #t
result)))
vlist-null
repo))
(define committers
(delete-duplicates
(fold-commits (lambda (commit result)
(cons (commit-committer* commit)
result))
'()
repo)))
(map (lambda (committer)
(cons (vhash-fold* (lambda (_ count)
(+ 1 count))
0
committer
vhash)
committer))
committers))
(define (reviewer< r1 r2)
(match r1
((count1 . name1)
(match r2
((count2 . name2)
(< count1 count2))))))
(libgit2-init!)
(define repo
(repository-open "."))
- Re: gnu-patches back log, (continued)
- Re: gnu-patches back log, Leo Famulari, 2017/03/01
- Re: gnu-patches back log, Pjotr Prins, 2017/03/01
- Re: gnu-patches back log, Leo Famulari, 2017/03/01
- Re: gnu-patches back log, Pjotr Prins, 2017/03/01
- Re: gnu-patches back log, Catonano, 2017/03/01
- Re: gnu-patches back log, Ricardo Wurmus, 2017/03/07
- Re: gnu-patches back log, Catonano, 2017/03/13
- Re: gnu-patches back log, John Darrington, 2017/03/01
Re: gnu-patches back log, Ludovic Courtès, 2017/03/06