Collaborative maintenance

The Debian Python Modules Team is discussing which DVCS to switch to from SVN. Ondrej Certik asked how to generate a list of commiters to the team’s repository, so I looked at it and got this:


emilio@saturno:~/deb/python-modules$ svn log | egrep "^r[0-9]+ " | cut -f2 -d'|' | sed 's/-guest//' | sort | uniq -c | sort -n -r
865 piotr
609 morph
598 kov
532 bzed
388 pox
302 arnau
253 certik
216 shlomme
212 malex
175 hertzog
140 nslater
130 kobold
123 nijel
121 kitterma
106 bernat
99 kibi
87 varun
83 stratus
81 nobse
81 netzwurm
78 azatoth
76 mca
73 dottedmag
70 jluebbe
68 zack
68 cgalisteo
61 speijnik
61 odd_bloke
60 rganesan
55 kumanna
52 werner
50 haas
48 mejo
45 ucko
43 pabs
42 stew
42 luciano
41 mithrandi
40 wardi
36 gudjon
35 jandd
34 smcv
34 brettp
32 jenner
31 davidvilla
31 aurel32
30 rousseau
30 mtaylor
28 thomasbl
26 lool
25 gaspa
25 ffm
24 adn
22 jmalonzo
21 santiago
21 appaji
18 goedson
17 toadstool
17 sto
17 awen
16 mlizaur
16 akumar
15 nacho
14 smr
14 hanska
13 tviehmann
13 norsetto
13 mbaldessari
12 stone
12 sharky
11 rainct
11 fabrizio
10 lash
9 rodrigogc
9 pcc
9 miriam
9 madduck
9 ftlerror
8 pere
8 crschmidt
7 ncommander
7 myon
7 abuss
6 jwilk
6 bdrung
6 atehwa
5 kcoyner
5 catlee
5 andyp
4 vt
4 ross
4 osrevolution
4 lamby
4 baby
3 sez
3 joss
3 geole
2 rustybear
2 edmonds
2 astraw
2 ana
1 twerner
1 tincho
1 pochu
1 danderson

As it’s likely that the Python Applications Packaging Team will switch too to the same DVCS at the same time, here are the numbers for its repo:

emilio@saturno:~/deb/python-apps$ svn log | egrep "^r[0-9]+ " | cut -f2 -d'|' | sed 's/-guest//' | sort | uniq -c | sort -n -r
401 nijel
288 piotr
235 gothicx
159 pochu
76 nslater
69 kumanna
68 rainct
66 gilir
63 certik
52 vdanjean
52 bzed
46 dottedmag
41 stani
39 varun
37 kitterma
36 morph
35 odd_bloke
29 pcc
29 gudjon
28 appaji
25 thomasbl
24 arnau
20 sc
20 andyp
18 jalet
15 gerardo
14 eike
14 ana
13 dfiloni
11 tklauser
10 ryanakca
10 nxvl
10 akumar
8 sez
8 baby
6 catlee
4 osrevolution
4 cody-somerville
2 mithrandi
2 cjsmo
1 nenolod
1 ffm

Here I’m the 4th most committer 😀

And while I was on it, I thought I could do the same for the GNOME and GStreamer teams:


emilio@saturno:~/deb/pkg-gnome$ svn log | egrep "^r[0-9]+ " | cut -f2 -d'|' | sed 's/-guest//' | sort | uniq -c | sort -n -r
5357 lool
2701 joss
1633 slomo
1164 kov
825 seb128
622 jordi
621 jdassen
574 manphiz
335 sjoerd
298 mlang
296 netsnipe
291 grm
255 ross
236 ari
203 pochu
198 ondrej
190 he
180 kilian
176 alanbach
170 ftlerror
148 nobse
112 marco
87 jak
84 samm
78 rfrancoise
75 oysteigi
73 jsogo
65 svena
65 otavio
55 duck
54 jcurbo
53 zorglub
53 rtp
49 wasabi
49 giskard
42 tagoh
42 kartikm
40 gpastore
34 brad
32 robtaylor
31 xaiki
30 stratus
30 daf
26 johannes
24 sander-m
21 kk
19 bubulle
16 arnau
15 dodji
12 mbanck
11 ruoso
11 fpeters
11 dedu
11 christine
10 cpm
7 ember
7 drew
7 debotux
6 tico
6 emil
6 bradsmith
5 robster
5 carlosliu
4 rotty
4 diegoe
3 biebl
2 thibaut
2 ejad
1 naoliv
1 huats
1 gilir


emilio@saturno:~/deb/pkg-gstreamer$ svn log | egrep "^r[0-9]+ " | cut -f2 -d'|' | sed 's/-guest//' | sort | uniq -c | sort -n -r
891 lool
840 slomo
99 pnormand
69 sjoerd
27 seb128
21 manphiz
8 he
7 aquette
4 elmarco
1 fabian

Conclusions:
– Why do I have the full python-modules and pkg-gstreamer trees, if I have just one commit to DPMT, and don’t even have commit access to the GStreamer team?
– If you don’t want to seem like you have done less commits than you have actually done, don’t change your alioth name when you become a DD 😉 (hint: pox-guest and piotr in python-modules are the same person)
– If the switch to a new VCS was based on a vote where you have one vote per commit, the top 3 commiters in pkg-gnome could win the vote if they chosed the same! For python-apps it’s the 4 top commiters, and the 7 ones for python-modules. pkg-gstreamer is a bit special 🙂

2 thoughts on “Collaborative maintenance

  1. Jeff Schroeder

    The useless use of … awards teach you that awk can basicly do everything except win the girl. Here is a much more optimized version of your one-liner that has 5 less pipes! Out of curiosity, can you run the awk-ified version of the command on your repo? How long does it take? WP will likely bork the formatting so you might need to fix the ‘ and “.

    svn log scripts/ | awk ‘/^r[0-9]+ /{counts[tolower($3)]++} END {for (name in counts) { printf “%7d %s\n”, counts[name], name; }}’

    Example:
    jeff@omniscience:~/svn/systems/scripts$ svn log | egrep “^r[0-9]+ ” | cut -f2 -d’|’ | sed ‘s/-guest//’ | sort | uniq -c | sort -n -r
    94 jschroeder
    4 wwonka
    1 jsmith
    jeff@omniscience:~/svn/systems/scripts$ svn log | awk ‘/^r[0-9]+ /{counts[tolower($3)]++} END {for (name in counts) { printf “%7d %s\n”, counts[name], name; }}’
    94 jschroeder
    4 wwonka
    1 jsmith


    Jeff Schroeder
    http://www.digitalprognosis.com

    Reply
  2. Emilio Pozuelo Monfort Post author

    Jeff,

    Thanks for your suggestion. Your command isn’t the same though. I’m removing “-guest” from the commiters, because there’s people who have made commits from two different accounts (e.g. morph and morph-guest), and I want to count them all in ‘morph’. Also, your command doesn’t print the commiters sorted, so you’d need to pipe it to “sort -n -r” to be the same.

    And here you have the time:

    emilio@saturno:~/deb/python-apps$ time svn log | awk ‘/^r[0-9]+ /{counts[tolower($3)]++} END {for (name in counts) { printf “%7d %s\n”, counts[name], name; }}’
    [snip]
    real 0m8.648s
    user 0m0.112s
    sys 0m0.044s

    emilio@saturno:~/deb/python-apps$ time svn log | egrep “^r[0-9]+ ” | cut -f2 -d’|’ | sed ‘s/-guest//’ | sort | uniq -c | sort -n -r
    [snip]
    real 0m8.110s
    user 0m0.132s
    sys 0m0.028s

    but repeating it the time is quite variable. I blame svn 😀

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *