Mar 21, 2016 - Git committer activity

Comments

Git committer activity

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 <blackdrag@gmx.org>
      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]

Mar 20, 2016 - Git project statistic tool

Comments

Git project statistic tool

Python based, requires Python 2.6+

Works OOTB on Mac

Installation

  • Download TAR from Github
  • unzipped to /opt
➜  ll /opt/gitinspector-0.3.2
total 52K
-rw-r--r--  1 miro  999 Jul 29  2013 DESCRIPTION.txt
-rw-r--r--  1 miro  32K Jun 14  2013 LICENSE.txt
-rw-r--r--  1 miro   78 Jul  2  2013 MANIFEST.in
-rw-r--r--  1 miro  681 Jan 13  2014 README.txt
drwxr-xr-x 45 miro 1.5K Mar 20  2015 gitinspector
-rw-r--r--  1 miro 1.9K Jan 14  2014 setup.py
-rw-r--r--  1 miro  110 Jul 27  2013 stdeb.cfg
  • create symlink from ~/bin (or from whatever directory on $PATH)
ln -s /opt/gitinspector-0.3.2/gitinspector/gitinspector.py ~/bin/gitinspector.py
  
➜  ~  ll ~/bin | grep gitin
lrwxr-xr-x 1 miro   52 Mar 20 16:06 gitinspector.py -> /opt/gitinspector-0.3.2/gitinspector/gitinspector.py

Example

Look at scala sources - git@github.com:scala/scala.git

➜  scala git:(2.12.x) gitinspector.py -Tlr --since=2014-01-01
The following historical commit information, by author, was found in the repository:

Author                     Commits    Insertions      Deletions    % of changes
Adriaan Moors                    6            69           7365            9.81
Antoine Gourlay                  6            98           7391            9.88
David Hoepelman                  1            30             25            0.07
EECOLOR                          1             1              5            0.01
Eitan Adler                      1             2              2            0.01
Felix Mulder                    12           776           6272            9.30
Janek Bogucki                    1             2              2            0.01
Jason Zaugg                     26           617            263            1.16
Kato Kazuyoshi                   3            12             12            0.03
Lukas Rytz                      22          7400          44785           68.87
Marcin Kubala                    1            95             35            0.17
Mariot Chauvin                   1             6             29            0.05
Michał Pociecha                  1             1              1            0.00
Pim Verkerk                      1             1              1            0.00
Seth Tisue                       1             0             38            0.05
Simon Ochsenreither              3           246             71            0.42
Viktor Klang                     1            19             44            0.08
mpociecha                        1            26             26            0.07

Below are the number of rows from each author that have survived and are still intact in the current revision:

Author                     Rows       % in comments
Adriaan Moors                29               10.34
Antoine Gourlay              18               38.89
David Hoepelman              30               10.00
EECOLOR                       1                0.00
Felix Mulder                616               11.36
Janek Bogucki                 2                0.00
Jason Zaugg                 430                8.84
Kato Kazuyoshi                5                0.00
Lukas Rytz                34620                1.20
Marcin Kubala                49                2.04
Pim Verkerk                   1                0.00
Simon Ochsenreither         245                5.31
mpociecha                     2              100.00

The following history timeline has been gathered from the repository:

Author                  2014-02    2014-03    2014-05    2014-06    2014-07    2014-08    2014-09    2014-10    2014-11    2014-12    2015-02
Adriaan Moors                ++          -                                                                                           ----++++
Antoine Gourlay                                                              ---------  +++++++++
Jason Zaugg           +++++++++          +          .  +++++++++  +++++++++                                .  +++++++++
Kato Kazuyoshi                                                                       .
Lukas Rytz                                   ++++++++                                .         ++                                .
Marcin Kubala                     --++++++
Simon Ochsenreither                                                                                     ++++
Viktor Klang                                                                                        ------++
mpociecha                                                                                                                 ----++++
Modified Rows:               95        174       4028          7          1       7414         91         94         10         54          4

Author                  2015-03    2015-04    2015-05    2015-06    2015-07    2015-08    2015-09    2015-10    2015-11    2015-12    2016-01
Adriaan Moors                                                 ++  ---------
Antoine Gourlay               .                                                          ++++++++
EECOLOR                       .
Eitan Adler                                                                                                                                 .
Felix Mulder                                                                                                              ---+++++  ---------
Janek Bogucki                                                                                                  ----++++
Jason Zaugg             +++++++          .          .          +          .                        +++++++++                                .
Kato Kazuyoshi                .          .
Lukas Rytz             ++++++++  ---------  ---------   ++++++++       ++++
Mariot Chauvin                                                            .
Michał Pociecha                                                                      .
Seth Tisue                                                                   ---------
Simon Ochsenreither                      .                                                                                                  .
Modified Rows:              642      12953      31781         62      10763         40         12          6          4        173       5694

Author                  2016-02    2016-03
David Hoepelman                          +
Felix Mulder           ----++++         -+
Jason Zaugg                      ---------
Lukas Rytz                    .
Pim Verkerk                              .
Modified Rows:             1255        411

The following repsonsibilties, by author, were found in the current revision of the repository (comments are exluded from the line count, if
possible):

Adriaan Moors is mostly responsible for:
    12 test/files/pos/t9356/MyAnnotation.java
     3 test/files/pos/t6169/Skinnable.java
     3 test/files/pos/t6169/ExistIndir.java
     3 test/files/pos/t6169/ExistF.java
     3 test/files/pos/t6169/Exist.java
     1 test/files/pos/t6169/Skin.java
     1 test/files/pos/t6169/OP.java

Antoine Gourlay is mostly responsible for:
     8 test/files/pos/t9239/Usage.java
     1 test/files/neg/t4851/J2.java
     1 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/index.js
     1 spec/public/scripts/highlight.pack.js

David Hoepelman is mostly responsible for:
    27 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.js

EECOLOR is mostly responsible for:
     1 src/library/scala/runtime/BoxesRunTime.java

Felix Mulder is mostly responsible for:
   395 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/index.js
    74 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.js
    49 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/scheduler.js
    26 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/diagrams.js
     1 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/jquery.panzoom.min.js
     1 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/jquery.mousewheel.min.js

Janek Bogucki is mostly responsible for:
     1 src/library/scala/reflect/ScalaSignature.java
     1 src/library/scala/reflect/ScalaLongSignature.java

Jason Zaugg is mostly responsible for:
    45 test/files/run/t7741a/GroovyInterfaceDump.java
    45 test/files/run/t7741a/GroovyInterface$1Dump.java
    43 src/library/scala/runtime/StructuralCallSite.java
    29 src/library/scala/runtime/LambdaDeserialize.java
    20 src/library/scala/runtime/SymbolLiteral.java
    16 test/files/run/indy-via-macro-with-dynamic-args/Bootstrap.java
    15 test/files/run/indy-via-macro/Bootstrap.java
    12 test/files/run/t9268/Java.java
    11 test/files/pos/t5165b/TestAnnotation_1.java
    10 test/files/pos/t9393/NamedImpl_2.java

Kato Kazuyoshi is mostly responsible for:
     5 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.js

Lukas Rytz is mostly responsible for:
   495 src/library/scala/runtime/java8/JFunction2.java
   495 src/library/scala/runtime/java8/JFunction2$mcZJJ$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZJI$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZJD$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZIJ$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZII$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZID$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZDJ$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZDI$sp.java
   495 src/library/scala/runtime/java8/JFunction2$mcZDD$sp.java

Marcin Kubala is mostly responsible for:
    47 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/template.js
     1 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/index.js

Pim Verkerk is mostly responsible for:
     1 src/scaladoc/scala/tools/nsc/doc/html/resource/lib/scheduler.js

Simon Ochsenreither is mostly responsible for:
   117 spec/public/scripts/toc.js
    55 spec/public/scripts/main.js
    11 test/files/neg/t8700b/Baz_1.java
    11 test/files/neg/t8700a/Baz.java
     5 test/files/run/t4788/SAnnotation.java
     5 test/files/run/t4788/RAnnotation.java
     5 test/files/run/t4788/CAnnotation.java
     5 test/files/run/t4788-separate-compilation/SAnnotation_1.java
     5 test/files/run/t4788-separate-compilation/RAnnotation_1.java
     5 test/files/run/t4788-separate-compilation/CAnnotation_1.java

The extensions below were found in the repository history (extensions used during statistical analysis are marked):
rtf number x-build conf 0-M0 txt check xml [java] scala res json html yml css bnd tmpl sbt latex bib [js] SAMPLE awk html5 properties md bat sha1 svg script list sh flags

Mar 16, 2016 - Fixing docker-machine error after upgrade

Comments

Fixing docker-machine error after upgrade

I had to upgrade docker toolbox on Yosemite to get latest docker-compose additions.

After installing the new package, I was not able to connect to docker machine:

➜  ~ docker-machine status
Stopped
➜  ~ docker-machine start default
Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
➜  ~ docker-machine env default
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": tls: DialWithDialer timed out
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

Regenerating the certificates did not solve the problem. Neither did reboot.

Tried

docker-machine --debug regenerate-certs -f default

Fix

What worked for me was dropping and recreating the virtual machine Docker uses to run.

➜  ~ docker-machine rm default
About to remove default
Are you sure? (y/n): y
Successfully removed default

➜  ~ docker-machine create --driver virtualbox default
Running pre-create checks...
Creating machine...
(default) Copying /Users/miro/.docker/machine/cache/boot2docker.iso to /Users/miro/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

➜  ~ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/miro/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

➜  ~ eval $(docker-machine env default)

➜  ~ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

Unfortunate (or fortunate ?) side effect is that all containers and images were blown away and I can start from scratch with lots of free disk space :-)