|
|
|
|
|
by kazinator
454 days ago
|
|
Tiny prototype implementation: Run on log from GNU Bison. We anonymize names so that search engines don't index this comment to those names: $ ./gwho git-log-stat.txt
NAME LAST-SEEN FILES LINES+ LINES- COMMITS
A___ D_______ Tue Sep 20 08:19:02 2022 +0200 17083 356066 255931 4440
P___ E_____ Mon Mar 17 17:46:43 2025 -0700 4496 61898 71486 1123
J___ E_ D____ Sun Aug 21 17:35:26 2011 -0400 3922 75517 50121 612
R_____ A_____ Thu May 2 16:43:00 2002 +0000 101 7631 4522 23
J____ T____ Sun Jan 21 16:43:58 2001 +0000 200 8308 3205 60
P___ H________ Tue Feb 26 16:28:36 2013 -0800 122 5057 2864 26
A___ R_______ Wed Jan 5 15:47:25 2011 +0200 124 5297 2101 30
T________ R______ Tue Nov 13 10:38:49 2012 +0000 229 3841 2744 94
V_______ T_____ Wed Nov 11 18:55:15 2020 +0100 67 4739 1128 17
J__ M_______ Sat Jan 18 20:52:21 2020 -0800 337 1569 3894 45
J___ M_____ G_______ Mon May 12 00:58:38 2008 +0000 91 2570 2060 49
R______ M_ S_______ Mon Jan 5 00:25:39 1998 +0000 134 2978 1155 64
P____ B______ Tue Nov 11 13:37:36 2008 +0100 90 2991 786 17
A____ V___ Mon Sep 19 19:09:20 2022 +0200 130 2335 943 46
M___ A_____ Sun Jan 20 15:59:34 2002 +0000 201 1797 1291 76
D____ J__ Sun Dec 7 21:54:45 2008 -0800 57 2142 816 15
P_____ B___ Fri Oct 19 11:03:50 2001 +0000 67 1771 1182 19
E___ B____ Thu Aug 27 10:56:53 2009 -0600 61 2172 590 22
V_____ S_____ Fri Jun 29 16:23:42 2012 +0200 64 865 918 9
D____ M________ Thu Nov 10 22:34:22 1994 +0000 26 1526 84 18
D_____ H_________ Thu Jun 13 10:08:19 2013 +0200 6 1142 54 1
V______ I______ Sat Jan 23 13:25:18 2021 -0500 47 824 360 16
A_____ V___________ Thu Feb 27 09:52:03 2020 +0100 25 524 189 13
V_____ M______ C______ Fri Feb 14 18:41:55 2020 +0100 16 284 364 1
J_____ W___ Tue Feb 16 08:00:28 2021 -0600 18 306 33 3
W_______ P____ Thu Feb 21 17:08:18 2008 +0000 13 195 76 9
J___ S____ Wed Jul 26 00:30:05 2017 -0400 67 88 88 63
E___ S_ R______ Wed Feb 13 10:39:54 2019 -0500 2 133 33 1
Y_______ K_____ Mon Nov 11 08:57:15 2019 +0900 5 125 13 2
K______ K_______ Sun Jan 27 06:58:17 2019 +0100 3 85 24 1
H_ S_ T___ Fri Mar 1 06:16:54 2019 +0100 1 45 51 1
T__ L__________ Tue Mar 27 19:28:02 2012 +0000 9 81 9 5
T__ V__ H_____ Fri Jan 11 15:32:06 2002 +0000 7 55 34 3
A________ D_________ Wed May 14 18:41:48 2003 +0000 3 66 16 1
L_____ V_____ Fri Aug 9 14:24:14 2019 +0200 8 71 2 2
M______ D_ B_________ Thu Jul 30 20:53:35 2020 +0200 10 30 29 3
J______ Tue Nov 20 22:02:20 2018 +0100 3 30 28 3
J_______ N_____ Tue Dec 15 22:03:18 2009 -0600 10 42 13 3
N___ F_______ Mon Sep 6 19:51:09 1993 +0000 7 36 18 7
K__ K______ Tue Oct 13 15:39:41 2020 -0700 5 26 28 2
E_____ S________ Mon Dec 10 15:18:37 2018 +0200 10 25 25 1
M_____ R____ Wed Nov 18 09:10:01 2020 +0100 10 26 13 2
J___ B_____ Mon Oct 2 20:04:58 2000 +0000 3 26 8 1
T_____ P________ Tue May 19 22:05:22 2020 +0200 4 29 2 1
A_____ B_______ Sun Mar 6 22:19:18 2011 -0500 6 24 2 2
N___ G_____ Tue Oct 27 06:12:27 2020 +0000 4 14 11 3
B____ K_____ Sat Feb 19 19:24:07 2011 -0500 6 22 2 2
A___ S______ Wed Oct 31 14:01:31 2018 +0000 1 12 9 1
S_____ T______ Mon Nov 24 15:27:49 2008 +0100 1 11 6 1
F______ K____ Tue May 14 00:25:23 2002 +0000 3 11 6 2
A______ H______ Fri Apr 29 04:08:35 2022 -0400 2 8 6 1
B____ H_____ Sat Dec 18 18:45:46 2021 +0100 4 3 9 2
T___ C_ M_____ Tue Nov 10 07:36:11 2020 +0100 2 8 3 1
E______ S_________ Fri Nov 4 11:50:32 2022 -0700 3 5 5 1
k_____ y Mon Nov 11 23:27:37 2019 +0900 3 3 3 3
S______ L________ Sat Jul 21 17:24:23 2012 +0200 3 3 3 2
A____ D_______ Sat Feb 15 10:49:14 2020 +0100 2 2 2 2
J_____ L_ Fri Aug 24 17:35:32 2018 +0000 1 1 1 1
D_____ H______ Wed Nov 29 01:26:22 1995 +0000 1 1 1 1
A______ S_____ Sat Sep 28 00:00:34 2013 +0200 1 1 1 1
A_____ R___ Mon Jun 14 21:54:40 2021 +0000 1 1 1 1
Code: #!/usr/bin/env txr
@(do
(defstruct author ()
name
e-mail
last-seen
(files 0)
(lines+ 0)
(lines- 0)
(commits 0))
(defvarl ah (hash)))
@(repeat)
Author: @name <@addr>
Date: @date
@(skip)
@files file@nil changed, @ins insertion@nil, @del deletion@nil
@ (set name @(flow name ;; anonymize name
(spl " ")
(map (op map (do if (plusp @2) #\_ @1) @1 0))
(join-with " ")))
@ (do (let ((a (or [ah name]
(new author
name name
e-mail addr
last-seen date))))
(inc a.commits)
(inc a.files (tointz files))
(inc a.lines+ (tointz ins))
(inc a.lines- (tointz del))
(set [ah name] a)))
@(end)
@(do
(flow (hash-values ah)
(csort @1 > [callf + .lines+ .lines-])
(cons (new author
name "NAME" last-seen "LAST-SEEN" files "FILES"
lines+ "LINES+" lines- "LINES-" commits "COMMITS"))
(each ((a @1))
(put-line `@{a.name 24} @{a.last-seen 30} @{a.files -5} \ \
@{a.lines+ -8} @{a.lines- -8} @{a.commits -7}`))))
|
|