commit | 4d2dd189b5eeb1bc1997f6cc4f90ed53c7a4d4ab | [log] [tgz] |
---|---|---|
author | Patrick Hiesel <hiesel@google.com> | Tue May 09 17:35:18 2017 +0200 |
committer | Patrick Hiesel <hiesel@google.com> | Tue May 30 09:42:34 2017 +0200 |
tree | 48e0f75c91fd5005ae5d75af5865a6667a307978 | |
parent | 1ead0c68f14e8e686244795cb44d511116470544 [diff] |
Add project~changeNumber as changeId pattern This change adds support for a new change identifier in the /changes REST API endpoint. It follows the discussion on Idac92e61ee1471b074034eef39901b1b8e961706 and the two recent Gerrit Hackathons. The new change identifier serves multiple purposes: 1) Since it contains the project name, we can directly construct the ChangeApi without a secondary index lookup. This means that we can still serve requests to some endpoints, even in case of a complete index failure. When the project is added in the UI, we will still be able to serve change pages in case of an index failure. While the triplet also contains the project, it is unfeasible for the UI since it requires a branch name (which we don't want to have in the UI URLs) and has the changeId instead of the change number. 2) Reducing the number of secondary index lookups is a performance gain. 3) The project name being contained in the URL enables load balancers to shard requests based on the project without a need for an index lookup (which most load balancers do not support). The sharding configuration can then be as easy as a regular expression and a static project-to-machine mapping. 4) This change is also a first step in deprecating the other three change identifiers and unifying our API access pattern. This will happen gradually in upcoming changes. Also the UI will be adapted. This change also adds extensive testing to both the new parsing logic as well as all change identifiers in both the Java and the REST API. Change-Id: I7a904fdd001c065af9897d9c08edce1cfbd43a14
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 IRC channel on freenode is #gerrit. An archive is available at: echelog.com.
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 --recursive 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 7 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-centos7[:version]
To run a Ubuntu 15.04 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-ubuntu15.04[:version]
NOTE: release is optional. Last released package of the version is installed if the release number is omitted.