# Gerrit interface to a global-refdb

Global ref-database interface for use with Gerrit Code Review.

Enables the de-coupling between Gerrit, its libModules and the different
implementations of a globally shared ref-database.

## Design

[The design for a global ref-db interface](https://gerrit.googlesource.com/plugins/multi-site/+/refs/heads/master/DESIGN.md#global-ref_db-plugin)
can be found as part of the multi-site design documentation, where it first
originated and was approved by the community.

## Bindings

In order to consume this library, some Guice bindings need to be registered
appropriately. More information in the relevant [documentation](./bindings.md).

## Metrics

Global ref-database expose metrics to measure the global ref-database operation latency.
List of the available metrics can be found [here](./metrics.md).

## How to build

This libModule is built like a Gerrit in-tree plugin, using Bazelisk.

### Build in Gerrit tree

Create a symbolic link of the repository source to the Gerrit source tree /plugins/global-refdb directory.

Example:

git clone https://gerrit.googlesource.com/gerrit
git clone https://gerrit.googlesource.com/modules/global-refdb
cd gerrit/plugins
ln -s ../../global-refdb .
From the Gerrit source tree issue the command bazelsk build plugins/global-refdb

Example:

```
bazelisk build plugins/global-refdb
```

The libModule jar file is created under basel-bin/plugins/global-refdb/global-refdb.jar

To execute the tests run bazelisk test plugins/global-refdb/... from the Gerrit source tree.

Example:

```
bazelisk test plugins/global-refdb/...
```

## How to import into Eclipse as a project

Add `global-refdb` in the `CUSTOM_PLUGINS` section of the `tools/bzl/plugins.bzl`.

Example:

```
CUSTOM_PLUGINS = [
    "global-refdb",
]
```

Run `tools/eclipse/project.py` for generating or updating the Eclipse project.