blob: 10a5aa8feb6a325b80bf4418215daf186f622b3d [file] [log] [blame] [view]
# Plugin to collect Git repository metrics
This plugin allows a systematic collection of repository metrics. It's primary use-case is
with Gerrit, however it's possible for it to work with multiple Git SCM systems, including bare
Git repositories.
Metrics are updated either upon a `ref-update` receive or on a time based refresh interval.
`ref-update` events are received only on primary nodes, so on replicas `gracePeriod` will need to be set.
## How to build
Clone or link this plugin to the plugins directory of Gerrit's source tree, and then run bazel build
on the plugin's directory.
Example:
```
git clone --recursive https://gerrit.googlesource.com/gerrit
git clone https://gerrit.googlesource.com/plugins/git-repo-metrics
pushd gerrit/plugins && ln -s ../../git-repo-metrics . && popd
cd gerrit && bazel build plugins/git-repo-metrics
```
The output plugin jar is created in:
```
bazel-genfiles/plugins/git-repo-metrics/git-repo-metrics.jar
```
## How to install with Gerrit
Copy the git-repo-metrics.jar into the Gerrit's /plugins directory and wait for the plugin to be automatically
loaded.
## How to install with a different SCM
This plugin can also work with Git repositories hosted by other Git based SCM tools,
however the metrics are still expose via Gerrit, so a dedicated Gerrit instance running alongside
the current SCM tool is still required.
So to make this plugin work with other Git SCM tools, a Gerrit installation needs to be set-up and
the `basePath` needs to be set to the git data directory of the tool of choice.
You will also need to set `gracePeriod` and `forceCollection`, as when using a different SCM tool
than Gerrit the usual hooks aren't triggered.
Finally, a configuration option will need to be specified to indicate which Backend is being used.
Currently supported backend, other than GERRIT are:
- GITLAB
Find more in the configuration section below.
## Configuration
More information about the plugin configuration can be found in the [config.md](src/resources/Documentation/config.md)
file.