= Release notes for Gerrit 2.4 Gerrit 2.4 is now available: link:https://www.gerritcodereview.com/download/gerrit-2.4.war[https://www.gerritcodereview.com/download/gerrit-2.4.war] == 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: . 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. . 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. === Search * 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