commit | 3db44255662b8f7f9026e2749986446ed6c7c63f | [log] [tgz] |
---|---|---|
author | Claudio Pacchiega <claudio.pacchiega@gmail.com> | Sun Aug 06 20:09:59 2017 +0200 |
committer | Luca Milanesio <luca.milanesio@gmail.com> | Mon Aug 14 15:45:58 2017 +0100 |
tree | b1d2bf2cf282667ff0e7aedd390c9abf7f77812f | |
parent | e8a6a21049a017bd227343d2e31bf101c61083fb [diff] |
Refactoring to allow additional commands Factor out common operations than can be reused by additional commands. Makes it clearer how the various modules are structured. Change-Id: I8e0d1f012bfa810b62fcd5a20e0fec948157cf88
Extract commit and review data from Gerrit projects and expose aggregated metrics over REST and SSH API.
To build the analytics plugin you need to have SBT 0.13.x or later installed. If you have a Linux operating system, see the Installing SBT on Linux instructions
Clone the analytics plugin and execute sbt assembly
.
Example:
$ git clone https://gerrit.googlesource.com/plugins/analytics $ cd analytics && sbt assembly
The plugin jar file is created under target/scala-2.11/analytics.jar
Copy the analytics.jar generated onto the Gerrit's /plugins directory.
Nothing to configure, it just works.
Adds new REST API and SSH commands to allow the extraction of repository statistics from Gerrit repositories and changes.
All the API share the same syntax and behaviour. Differently from the standard Gerrit REST API, the JSON collections are returned as individual lines and streamed over the socket I/O. The choice is driven by the fact that the typical consumer of these API is a BigData batch process, typically external to Gerrit and hosted on a separate computing cluster.
A large volume of data can be potentially generated: splitting the output file into separate lines helps the BigData processing in the splitting, shuffling and sorting phase.
Extract a unordered list of project contributors statistics, including the commits data relevant for statistics purposes, such as timestamp and merge flag.
REST
/projects/{project-name}/analytics~contributors
SSH
analytics contributors {project-name}
REST Example:
$ curl http://gerrit.mycompany.com/projects/myproject/analytics~contributors {"name":"John Doe","email":"john.doe@mycompany.com","num_commits":1,"commits":[{"sha1":"6a1f73738071e299f600017d99f7252d41b96b4b","date":"Apr 28, 2011 5:13:14 AM","merge":false}]} {"name":"Matt Smith","email":"matt.smith@mycompany.com","num_commits":1,"commits":[{"sha1":"54527e7e3086758a23e3b069f183db6415aca304","date":"Sep 8, 2015 3:11:23 AM","merge":true}]}
SSH Example:
$ ssh -p 29418 admin@gerrit.mycompany.com analytics contributors myproject {"name":"John Doe","email":"john.doe@mycompany.com","num_commits":1,"commits":[{"sha1":"6a1f73738071e299f600017d99f7252d41b96b4b","date":"Apr 28, 2011 5:13:14 AM","merge":false}]} {"name":"Matt Smith","email":"matt.smith@mycompany.com","num_commits":1,"commits":[{"sha1":"54527e7e3086758a23e3b069f183db6415aca304","date":"Sep 8, 2015 3:11:23 AM","merge":true}]}