commit | 1459bf72e0067b4642addcdada69b3f8752b0d51 | [log] [tgz] |
---|---|---|
author | Luca Milanesio <luca.milanesio@gmail.com> | Sat Jun 08 02:00:11 2024 +0100 |
committer | Luca Milanesio <luca.milanesio@gmail.com> | Thu Jun 13 12:56:28 2024 +0000 |
tree | 4a89b283ab74da6c5dd4902ec357792c44e8a52b | |
parent | 245006d0f18a201b27544aa63c0f6c54c1fd851c [diff] |
Introduce @DynamicItem.Final for immutable bindings In some cases plugins would like to expose their API to other plugins, for example to give access to internal state or to programatically modify its configuration. This can be potentially done currently with the usage of DynamicItem, but that doesn't guarantee that the implementation will not be overwritten by other plugins. Also, one plugin may have specific expectations of where the implementation of those interfaces must be found and therefore exposing that constraint to Gerrit plugin load so that only the allowed plugin is accepted for binding that item. Introduce the @DynamicItem.Final annotation that, once assigned to a type, requires the type to be bound at most once. Any attempt to re-bind a DynamicItem.Final twice or from a plugin which is not the expected one, would result in a Guice ProvisionException. Example: @DynamicItem.Final(implementedByPlugin="foo-plugin") public interface FooInterface { String fooApi(String param); } Bug: Issue 338786480 Release-Notes: Introduce @DynamicItem.Final for allowing immutable dynamic bindings of interfaces to implementations in other plugins. Change-Id: Ie7edf73e27fc6de898dbf248b9c4cda6b97e8153
Gerrit is a code review and project management tool for Git based projects.
Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.
Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer.
For information about how to install and use Gerrit, refer to the documentation.
Our canonical Git repository is located on googlesource.com. There is a mirror of the repository on Github.
Please report bugs on the issue tracker.
Gerrit is the work of hundreds of contributors. We appreciate your help!
Please read the contribution guidelines.
Note that we do not accept Pull Requests via the Github mirror.
The Developer Mailing list is repo-discuss on Google Groups.
Gerrit is provided under the Apache License 2.0.
Install Bazel and run the following:
git clone --recurse-submodules https://gerrit.googlesource.com/gerrit cd gerrit && bazel build release
The instruction how to configure GerritForge/BinTray repositories is here
On Debian/Ubuntu run:
apt-get update && apt-get install gerrit=<version>-<release>
NOTE: release is a counter that starts with 1 and indicates the number of packages that have been released with the same version of the software.
On CentOS/RedHat run:
yum clean all && yum install gerrit-<version>[-<release>]
On Fedora run:
dnf clean all && dnf install gerrit-<version>[-<release>]
Docker images of Gerrit are available on DockerHub
To run a CentOS 8 based Gerrit image:
docker run -p 8080:8080 gerritcodereview/gerrit[:version]-centos8
To run a Ubuntu 20.04 based Gerrit image:
docker run -p 8080:8080 gerritcodereview/gerrit[:version]-ubuntu20
NOTE: release is optional. Last released package of the version is installed if the release number is omitted.