commit | 4dafe0c726f80096942543fa99b0547690a5ec56 | [log] [tgz] |
---|---|---|
author | Luca Milanesio <luca.milanesio@gmail.com> | Fri Nov 11 11:13:22 2016 -0800 |
committer | Luca Milanesio <luca.milanesio@gmail.com> | Fri Nov 11 11:13:22 2016 -0800 |
tree | 2fbdefde49505ff747cbad2cb1ebc79b2c745746 | |
parent | 7e8c54054222dde5c238e34d5683e35501f0d8e6 [diff] |
REST/SSH API to extract project contributors Initial implementation of the project contributors list extracting via REST and SSH. Differently from the standard Gerrit API, list of entries is returned as multi-line JSON instead of a unique collection in a single line. The rationale is on the potential size of the data and the underlying processing system which is based on splitting, shuffling and sorting. Change-Id: I96b846d732f81cc35afb6520b4c3130f5cb8b9bd
Extract commit and review data from Gerrit projects and expose aggregated metrics over REST and SSH API.
Clone the analytics plugin into an existing Gerrit source tree under /plugins/analytics and then execute buck build.
Example:
$ git clone https://gerrit.googlesource.com/gerrit $ git clone https://gerrit.googlesource.com/plugins/analytics gerrit/plugins/analytics $ cd gerrit $ buck build plugins/analytics
Copy the analytics.jar generated under /buck-out/gen/plugins/analytics/analytics.jar onto 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/project/myproyject/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 {"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}]}