Git command git shortlog is very handy to see what is team activity.

Show committer activity - whole project

(output shortened to first 20 lines)

git shortlog -sn | head -20
  2991	Paul King
  1757	Cedric Champeau
  1615	Jochen Theodorou
  1031	James Strachan
   749	Guillaume Laforge
   312	Roshan Dawrani
   306	Jason Dillon
   301	Danno Ferrin
   284	Alex Tkachman
   273	PascalSchumacher
   230	John Wilson
   217	Pascal Schumacher
   204	pascalschumacher
   160	Thibault Kruse
   158	Jeremy Rayner
   134	Russel Winder
   123	Cédric Champeau
   122	Hamlet D'Arcy
   116	Dierk Koenig
   104	Pilho Kim

variant (without n) has different ordering:

git shortlog -s | head -20
     6	Adrian Nistor
    20	Alan Green
     1	Alan Thompson
     1	Alessio Stalla
     1	Alex Spurling
   284	Alex Tkachman
    24	Alexandru Popescu
     1	Anders D. Johnson
    79	Andre Steingress
    63	Andres Almiray
     8	Andrew Eisenberg
     6	Andrew Hamilton
     2	Andrew Reitz
     6	Andrew Taylor
    51	Andrey Bloschetsov
     1	Andy Hamilton
     1	Andy Wilkinson
     2	Anto
    12	Aseem Bansal
     1	Aslak Hellesoy

Full history with commits

git shortlog
Adrian Nistor (6):
      avoiding wasted work according to GROOVY-5823 to GROOVY-5831, except GROOVY-5828 Signed-off-by: Jochen Theodorou <>
      Fast exit from method ClassCompletionVerifier.checkMethodForWeakerAccessPrivileges
      Fast exit from loop in StaticTypeCheckingVisitor.inferReturnTypeGenerics
      Avoiding unnecessary string comparisons in loop
      GROOVY-5854: Fast loop exit in ClassNode constructor
      Inefficient method DefaultGrailsDomainClassInjector.implementsMethod

Alan Green (20):
      Fix bug: was ignoring first char of octal escapes.
      Added asBool conversion for Strings: convert empty strings to false, and non-empty strings to true.
      Made AsmClassGenerator understand String asBool the same that Invoker has.
      Backed out fix to GROOVY-812 as it was causing test cases to fail. Will also post a note to groovy-dev.
      Fix build - UberTestCase could not find SpreadMapOperatorTest
      Changed to use jmock-1.0.1 instead of jmock-SNAPSHOT
      Fix for GROOVY-1081
      Added Collection.sum() and Collection.sum(Closure) methods and test cases.
      Make it possible to set variables in the console shell bindings before     the console is openned.
      Fix bug: could not add components to root pane with constraints. Now you can.
      Added history feature.
      Fixed problem when running from groovyConsole.bat
      Added special handling for showing collections and maps
      Fix problem with using BoxLayout on top level container (Frame, Dialog, Applet)
      Added new features to Console     - intercepts std output     - binds last result to '_' and history of results to '__'
      Fix error with bindings when creating a new window
      Changed is() to use == instead of System.identityHashCode()
      Console was reporting null result when result was [], "" or 0
      Fix so that AssertionErrors are handled properly.
      Fixed SourceUnit.failedWithUnexpectedEOF() to correctly recognise incomplete source, allowing the InteractiveShell to be a bit more useful - GROOVY-472 and GROOVY-1021     Removed UnexpectedTokenException class as it does not appear to be used any longer.

Alan Thompson (1):
      Fix a bug in JsonBuilder.toPrettyString() for zero-length strings.

More interesting is when we restrict by branch

git shortlog -sn origin/GROOVY_1_5_X
   137  Paul King
    92  Jochen Theodorou
    25  Roshan Dawrani
    25  Jim White
    23  Guillaume Laforge
    14  Martin Kempf
     9  Danno Ferrin
     7  Alex Tkachman
     5  Andres Almiray
     4  Peter Niederwieser
     2  Jeremy Rayner
     2  Russel Winder
     1  Jeff Brown
     1  Thom Nichols

And of course, it can be combined with other selection operators:

git shortlog  --author="graeme" --pretty=format:"%h %ad | %s%d [%an]"
Graeme Rocher (2):
      71dc762 Fri Aug 21 12:45:49 2015 +0200 | Improve StreamingJsonBuilder support for @CompileStatic [Graeme Rocher]
      44d8e59 Tue Aug 25 16:57:45 2015 +0200 | Support for unescaped output in StreamingJsonBuilder [Graeme Rocher]

graemerocher (6):
      de31d04 Tue Nov 3 16:05:33 2015 +0100 | Remove printlns that shouldn't be there (closes #177) [graemerocher]
      7e7fcf7 Wed Dec 2 11:13:25 2015 +0100 | Support for Array and Iterable not just Collection in StreamingJsonBuilder (closes #203) [graemerocher]
      f98e620 Wed Dec 2 11:49:02 2015 +0100 | Binary compatibility improvements [graemerocher]
      2464f05 Wed Dec 9 14:06:20 2015 +0100 | GROOVY-7706 - StreamingJsonBuilder should handle nested closures (closes #208) [graemerocher]
      deb8395 Wed Dec 9 14:49:15 2015 +0100 | GROOVY-7708 - StreamingJsonBuilder - improve @CompileStatic support (closes #209) [graemerocher]
      7f72540 Thu Dec 10 14:46:12 2015 +0100 | GROOVY-7707 - StreamingJsonBuilder - writing unescaped output doesn't reset state (closes #210) [graemerocher]