Schema Change

WARNING: This release contains schema changes. To upgrade:

  java -jar gerrit.war init -d site_path

WARNING: Upgrading to 2.4.x requires the server be first upgraded to 2.1.7 (or a later 2.1.x version), and then to 2.4.x. If you are upgrading from 2.2.x.x or newer, you may ignore this warning and upgrade directly to 2.4.x.

New Features

Security

  • Restrict visibility to arbitrary user dashboards

    Administrators have some expectation when using the suggest.accounts visibility restriction feature that users cannot get the names or email addresses for arbitrary accounts. In fact, because account IDs are sequential, it would be easy for an adversary to get personal information of all users on the server by requesting every user’s dashboard.

    This includes changing the meaning of the suggest.accounts config option to be a boolean indicating whether account suggestion should happen at all, which is now orthogonal to the account visibility restriction policy. We still recognize the old values for suggest.accounts, with the slight behavior change that suggest.accounts=OFF now means that users cannot access the dashboards of any other users. Administrators who do not want this behavior can update their configuration.

  • Indicate that not found may actually be a permission issue

Web

  • Add user preference to mark files reviewed automatically or manually

    Add a checkbox to the preferences header on the diff screen which allows a user to specify whether they want manual-reviewing enabled or disabled. Previously, every file was auto marked reviewed when a user first displayed it. The new manual mode prevents this auto marking and only marks a file reviewed when the user explicitly clicks on the reviewed checkbox.

  • Use Auto Merge for merge commit’s base comparison

    When reviewing a merge commit, the old wording in the version history dropdown of Base doesn’t really match Gerrit’s behavior. Updating this to use Auto Merge as suggested by Shawn Pearce on IRC.

  • issue 1035 Add rebase button to the change screen

    This change adds a rebase button along with the rest of the action buttons in the change page. When pressing the button, the most recent patch set will be rebased onto the tip of the destination branch or the latest patchset of the change we depend upon. A new patch set containing the rebased commit will be produced and added to the change.

    Rebasing of a change in web UI is restricted to change owner, submitter or those with the (new) rebase permission.

  • Add a new permission rebase to permit rebasing changes in the web UI

  • Make a user’s dashboard visible if any of the changes are visible to the current user.

  • Change Loading … to say Working … as, often, there is more going on than just loading a response.

Performance

  • Asynchronously send email so it does not block the UI

  • Optimize queries for open/merged changes by project + branch

Git

  • Implement a multi-sub-task progress monitor for ReceiveCommits

  • Close corresponding change when pushing to refs/heads/*

    Gerrit would not close the open changes with matching change-ids, when the user pushes commits directly to refs/heads/*.

    This issue could be triggered for two reasons:

    1. It is triggered when Gerrit detects no changes between the pushed commits and the current patchset on the open changes. This patch make sure that the matching open change is always closed when pushing to refs/heads/*, even if no visible changes is detected.

    2. The same commit exists on another branch than the destination branch. This could trick gerrit into just "re-closing" the wrong change.

  • Run ReceiveCommits in a shared thread pool

    Since the work to ReceiveCommits may take a long, potentially unbounded amount of time, we would like to have it run in the background so it can be monitored for timeouts and cancelled, and have stalls reported to the user from the main thread.

  • Add the --dependencies option to the query command.

    This option includes information about patch sets which depend on, or are needed by, each patch set.

  • Branch Operator: Support full branch names

    The search operator for branches required the provided value to be the short branch name that is shown in the web interface (without the refs/heads/ prefix). Change the branch operator so that it also supports full branch names as value.

    It is intuitive that searching with branch:master and searching with branch:refs/for/master deliver the same result. So far branch:refs/for/master was the same as searching with refs:refs/heads/refs/heads/master which is unexpected for most users.

  • Add comment inclusion via &comments=true over HTTP

    With this change, we can fetch the comments on a patchset by sending a request to https://site/query?comments=true

Access Rights

  • Added the emailReviewers as a global capability.

    This replaces the emailOnlyAuthors flag of account groups.

Dev

  • issue 1272 Add scripts to create release notes from git log

    These script generates a list of commits from git log between two given commits and outputs the asciidoc format containing list of commits subject and body.

  • Update URL for m2eclipse

    The project is now under the Eclipse Foundation umbrella.

  • Add missing ignore for m2e prefs in gerrit-ehcache

  • Add --issues and --issue_numbers options to the gitlog2asciidoc.py

Miscellaneous

  • Remove perl from commit-msg hook

    Removing perl from the commit-msg hook reduces the dependencies gerrit imposes on its users.

  • updating contrib trivial_rebase.py for 2.2.2.1

Upgrades

  • Updated to Guice 3.0.

  • Updated to gwtorm 1.4.

  • Update JGit to 1.3.0.201202151440-r.75-gff13648

  • Update to gwtjsonrpc 1.3

    The change also shrinks the built WAR from 38M to 23M by excluding the now unnecessary GWT server code.

Bug Fixes

  • issue 904 Users who starred a change should receive all the emails about a change.

  • Fix: Diff All Side-by-Side and Diff All Unified buttons

    When pressing the Diff All Side-by-Side or Diff All Unified button on the change screen, the opened browser windows/tabs shows diffs using "Base" as old version and the latest one as active patch set, regardless what has been set using the "Old Version History:" drop down menu and what is currently active patch set.

    Gerrit doesn’t remember the base patch set in the URL, making it impossible to copy-and-paste the URL to co-workers to show them the same diff a user is looking at.

    This change fixes this behavior to make sure that the opened new browser windows shows diffs using the correct old patch set and active patch set.

  • Fix NPEs looking up groups by UUID in GroupCache

  • Fix default receive.timeout

    This should be in milliseconds, not seconds. Set the default to be 2 minutes in milliseconds and update the documentation to reflect that milliseconds are the default unit of time used here.

  • Fix development_become_any_account redirects

  • issue 1299 Allow configuration of optional pattern for gitweb file history link

  • Use servlet context path during logout

  • issue 1353 Fix case check for project name so that symlinks work again

  • Fix merging of access sections

  • Fix inconsistent behavior when replicating refs/meta/config

  • Fix duplicated results on status:open project:P branch:B

Documentation

Access Rights

  • Capabilities introduced

  • Kill and priority capabilities

  • Administrate server capability

  • Create account capability

  • Create group and project capability

  • Flush caches capability

  • Capability replication and view caches

  • Capability view conn. & queue

  • Example roles introduced

  • Developer example role

  • CI system example role

  • Integrator example role

  • Project owner example role

  • Administrator example role

Miscellaneous

  • User upload documentation: Replace changes

  • Add visible-to-all flag in the documentation for cmd-create-group

  • Add a contributing guideline for annotations

  • Add missing header for suggest.accounts documentation

  • Fix anchors for description of gitweb config parameters

  • Add missing section name to config-gerrit documentation

  • Fix documentation of ls-projects