commit | a28ba7a1b090ea50e5383a9310bf8990229ff63c | [log] [tgz] |
---|---|---|
author | Darius Jokilehto <dariusjokilehto+os@gmail.com> | Sun Jun 04 14:39:44 2023 +0100 |
committer | Darius Jokilehto <dariusjokilehto+os@gmail.com> | Sun Jun 04 14:40:30 2023 +0100 |
tree | 87098ae4bffff1262e2e4a8c65eb3987aaceeb99 | |
parent | 257622ca1b59106d0e18735efa9bd84425762f9e [diff] | |
parent | 25e19c7bbf922181d29c8b8fb6645ab33e851f25 [diff] |
Merge branch 'stable-3.8' into master * stable-3.8: Use orNull instead of explicit null default Fix IterableOnce foreach deprecation warning Fix array splat deprecation warning Fix .toStream deprecation warning Fix deprecated `l` for Longs Remove use of deprecated JavaConverters class Fix TraversableOnce deprecation warnings Fix procedure syntax deprecation warnings Fix reflective structural type access warning Fix unable to check type warnings Fix override without parameter list warning Update Scala to 2.13.10 Bump scalatest to 3.2.16 Fix feature warnings Bump sbt to 1.8.3 Add gitignore entries Use pattern matching over asInstanceOf in test Add `UseLocalDisk` annotation to fix test Bump Gerrit API to 3.8.0-rc4 Remove unused test method Set Gerrit to v3.6.0-rc0 Change-Id: I8c0884831ae33838f7f359450c5810efb99a09fc
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.
See the relevant section in the configuration guide
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 number of involved files, and optionally also the list of belonging branches, number of added/deleted lines, timestamp and merge flag.
Optionally, extract information on issues using the commentLink Gerrit configuration and enrich the statistics with the issue-ids and links obtained from the commit message.
REST
/projects/{project-name}/analytics~contributors[?since=2006-01-02[15:04:05[.890][-0700]]][&until=2018-01-02[18:01:03[.333][-0700]]][&aggregate=email_year]
SSH
analytics contributors {project-name} [--since 2006-01-02[15:04:05[.890][-0700]]] [--until 2018-01-02[18:01:03[.333][-0700]]]
NOTE: Timestamp format is consistent with Gerrit's query syntax, see /Documentation/user-search.html for details.
$ curl http://gerrit.mycompany.com/projects/myproject/analytics~contributors {"name":"John Doe","email":"john.doe@mycompany.com","num_commits":1, "num_files":4,"added_lines":9,"deleted_lines":1, "commits":[{"sha1":"6a1f73738071e299f600017d99f7252d41b96b4b","date":"Apr 28, 2011 5:13:14 AM","merge":false,"bot_like": false}],"is_bot_like": false} {"name":"Matt Smith","email":"matt.smith@mycompany.com","num_commits":1, "num_files":1,"added_lines":90,"deleted_lines":10,"commits":[{"sha1":"54527e7e3086758a23e3b069f183db6415aca304","date":"Sep 8, 2015 3:11:23 AM","merge":true,"bot_like": false}],"branches":["master"],"is_bot_like": false}
$ ssh -p 29418 admin@gerrit.mycompany.com analytics contributors myproject --since 2017-08-01 --until 2017-12-31 --extract-issues {"name":"John Doe","email":"john.doe@mycompany.com","num_commits":1, "num_files":4,"added_lines":9,"deleted_lines":1, "commits":[{"sha1":"6a1f73738071e299f600017d99f7252d41b96b4b","date":"Apr 28, 2011 5:13:14 AM","merge":false,"bot_like": false}],"is_bot_like": false,"issues_codes":["PRJ-001"],"issues_links":["https://jira.company.org/PRJ-001"]} {"name":"Matt Smith","email":"matt.smith@mycompany.com","num_commits":1, "num_files":1,"added_lines":90,"deleted_lines":10,"commits":[{"sha1":"54527e7e3086758a23e3b069f183db6415aca304","date":"Sep 8, 2015 3:11:23 AM","merge":true,"bot_like": false,}],"is_bot_like": false,"branches":["branch1"],"issues_codes":["PRJ-002","PRJ-003"],"issues_links":["https://jira.company.org/PRJ-002","https://jira.company.org/PRJ-003"]}