commit | 31f07a5e9fc2a466b89b3ec17d508e1d710fbf24 | [log] [tgz] |
---|---|---|
author | Alice Kober-Sotzek <aliceks@google.com> | Mon Sep 14 17:28:28 2020 +0200 |
committer | Alice Kober-Sotzek <aliceks@google.com> | Fri Sep 18 12:02:46 2020 +0200 |
tree | 24f276502a0100f9a432fb11482ecf69634f3a08 | |
parent | 6f34d005235952195b3c311ac986bffb553b868d [diff] |
CommentsUtil: Don't use the diff cache to look up the parent commit It's a bit strange that we used the diff caches to lookup a specific parent commit (e.g. first parent, second parent, auto-merge) of a patchset even though we weren't interested in the diff at all. One reason might be that auto-merge commits are only reliably available within the diff cache. Furthermore, the diff result is cached and hence quickly available on subsequent calls. Besides being confusing and possibly doing more than necessary (e.g. computing actual diffs), this approach has another major disadvantage: It returns the wrong commit SHA-1 if the specified 'side' doesn't exist for the commit (e.g. if the second parent is specified but the patchset isn't a merge commit). In such a case, the diff cache falls back to the first parent commit without further notice. That's problematic if you're relying on the returned commit SHA-1 to be correct as we do for ported comments. A better approach than using the diff cache is to directly lookup the desired parent commit. One possible disadvantage of this approach is that we always need to open the repository to do so. The new approach also lets callers decide how to react to a non-existent parent commit as it returns an Optional.empty() instead of directly throwing an exception. Callers may choose to ignore such a parent or throw an exception of a type and message of their choice. For auto-merge commits, we still need to use the old approach. With the redesigned diff caches, we should be able to switch to a different approach, too. Change-Id: Iad263b16c45b7c0d826b98aeb8f8865296326bf7
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.