commit | 107c2e025afdef50a60974b91a35e0bba3fd7e51 | [log] [tgz] |
---|---|---|
author | Edwin Kempin <ekempin@google.com> | Thu Nov 24 15:01:31 2022 +0100 |
committer | Edwin Kempin <ekempin@google.com> | Tue Nov 29 13:13:10 2022 +0100 |
tree | eacccfaeb7a75a2059ac531cf8e92e616d5f5a1b | |
parent | 3e04849335a632b1d3f298ae731ecfe90d8a4a69 [diff] |
Include copied votes into change message when voting on outdated patch set Since change I4d9b71616 votes that are applied on outdated patch sets are copied to follow-up patch sets if possible (follow-up patch sets are all patch sets that are newer than the outdated patch set on which the vote was applied). When votes are copied to follow-up patch sets they are applied in NoteDb, but users are not informed about them. This means if a vote is applied on an outdated patch set and is then copied forward to follow-up patch sets, including the current patch set, users can see the copied vote on the change, but they can't find out how it appeared there. With this change we are now informing in the change message that is posted when a vote is applied on an outdated patch set about the follow-up patch sets to which the vote is copied forward. In other words we are extending the existing change message that informs about the user vote on the outdated patch set with information about the copied votes on the follow-up patch sets that have been updated as result of the user voting on the outdated patch set. Informing the user about the follow-up patch sets that have been updated as result of the user voting on the outdated patch set via the change message is consistent with how we inform users about copied votes when a new patch set is created (also in this case we post this information as a change message). When the user votes on an outdated patch sets there are 3 possibilities how copied votes on follow-up patch sets are updated: 1. a copied approval is added on a follow-up patch set (no copied approval existing on this patch set yet) 2. an existing copied approval is updated on a follow-up patch set (e.g. if Code-Review-2 on PS1 was sticky and got copied to PS2, but now the vote on PS1 is changed to Code-Review+2 which is also sticky the copied vote on PS2 gets updated from Code-Review-2 to Code-Review+2) 3. an existing copied approval is removed from a follow-up patch set (example 1: if Code-Review-2 on PS1 was sticky and got copied to PS2, but now the vote on PS1 is changed to Code-Review-1 which is not sticky the existing copied vote on PS2 gets removed; example 2: if Code-Review-2 on PS1 was sticky and got copied to PS2, but now the vote on PS1 is removed the existing copied vote on PS2 gets removed) Note: The approval copying that is done when a user votes on an outdated patch set only affects copied approvals on follow-up patch sets, but never non-copied approvals nor explicit approval deletions. The existing change message already informs about the user action (which vote was applied on which patch sets), e.g. "Patch Set 1: Code-Review+2". In addition we include now information about the updates on the follow-up patch sets. If label votes have been copied to follow-up patch sets (case 1.) the additional information in the change message is: * <label-vote> has been copied to patch sets: 3, 4 (copy condition: "<copy-condition>"). If existing copied votes on follow-up patch sets have been updated (case 2.), the old copied votes are included into the message: * <label-vote> has been copied to patch sets: 3 (was <old-label-vote>), 4 (was <old-label-vote>) (copy condition: "<copy-condition>"). If existing copied votes on follow-up patch sets have been removed (e.g. because the new vote is not copyable) (case 3.) the message is: * Copied <label> vote has been removed from patch set 3 (was <old-label-vote>), 4 (was <old-label-vote>) (copy condition: "<copy-condition>"). If copied votes have been both added/updated and removed, 2 messages are included: * <label-vote> has been copied to patch sets: 3 (was <old-label-vote>), 4 (was <old-label-vote>) (copy condition: "<copy-condition>"). * Copied <label> vote has been removed from patch set 5 (was <old-label-vote>) (copy condition: "<copy-condition>"). Passing atoms in copy conditions are not highlighted. This is because the passing atoms can be different for different follow-up patch sets (e.g. 'changekind:TRIVIAL_REBASE OR changekind:NO_CODE_CHANGE' can have 'changekind:TRIVIAL_REBASE' passing for one follow-up patch set and 'changekind:NO_CODE_CHANGE' passing for another follow-up patch set). Including the copy condition once per follow-up patch set with differently highlighted passing atoms would make the message unreadable. Hence we don't highlight passing atoms here. Signed-off-by: Edwin Kempin <ekempin@google.com> Change-Id: I7ca035f668ce5dadc8403ebe9195a3aac27e354d Bug: Google b/235818646 Release-Notes: Votes that are copied to follow-up patch sets when a vote on an outdated patch set is applied are now posted as a change message.
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.