Schema Change

WARNING This release contains multiple schema changes. To upgrade:

  java -jar gerrit.war init -d site_path

To export prior review information into refs/notes/review branches within each Git repository:

  java -jar gerrit.war ExportReviewNotes -d site_path

Memory Usage Increase

WARNING The JGit delta base cache, whose size is controlled by core.deltaBaseCacheLimit, has changed in this release from being a JVM-wide singleton to per-thread. This alters the memory usage, going from 10M for the entire JVM to 10M per concurrent operation. The change improves performance on big repositories, but may need a larger container.heapLimit if the number of concurrent operations is high.

New Features

Change Data

  • issue 64 Create Git notes for submitted changes

    Git notes are automatically added to the refs/notes/review.

Query

  • Search project names by substring

    Entering a word with no operator (for example gerrit) will be expanded to all projects whose names contain the string gerrit.

  • issue 722 ownerin and reviewerin search predicates

    New search predicates ownerin:'GROUP' and reviewerin:'GROUP' search for changes whose owner or that has a reviewer in (or not in if prefixed with -) the specified group.

Web UI

  • Add reviewer/verifier name beside check/plus/minus

    Change lists (such as from a search result, or in a user’s dashboard) can now optionally display the name of the reviewer or verifier who gave the score being shown in the summary column. This is an optional per-user preference that can be enabled in the Settings screen.

  • Add a "revert change"-button to a submitted patchset

    Clicking "Revert Change" creates a new change with the inverse of the submitted patch set ready for review and submission. This makes it easy to undo a build-breaking change right from the web UI.

  • issue 194 Diff patch sets

    Change pages now offer a selection box, "Old Version History", to compare patch sets against one another and view only the files that differ between two patch sets. This new feature can speed up re-reviewing a change.

  • issue 913 Support different color palette when not signed in

    Site administrators can configure a different theme in gerrit.config for the signed-in and signed-out states, making it more obvious to site users they are currently signed-in (or not).

  • Add parent info to each change screen Patch Set

    This mirrors the data shown in the Commit Message file, making it easy to identify the parent(s) of the commit without opening up the Commit Message or gitweb.

  • Remove the SSH key loading applet

    The Java based SSH key loading applet is no longer included as part of the Gerrit Code Review interface. Users need to copy and paste their SSH public key files by hand.

SSH Commands

  • issue 674 Add abandon/restore to gerrit review

  • Add gerrit version command

Change Upload

  • Display a more verbose "you are not author/committer" message

Documentation

  • Detailed error message explanations

    Most common error messages are now described in detail in the documentation under User Guide, Error Messages. Each error is explained, along with possible courses of action for an end-user to resolve the issue.

  • issue 905 Document reverse proxy using Nginx

  • Updated system scaling data in System Design

Outgoing Mail

  • Optionally add Importance and Expiry-Days headers

    New gerrit.config variable sendemail.importance can be set to high or low to classify outgoing mail, and sendemail.expiryDays can be set to suggest clients should automatically expire or expunge messages this many days after being sent.

  • Add support for SMTP AUTH LOGIN

Administration

  • Group option to make group visible to all users

    A new group option permits the group to be visible to all users, rather than just its members. Some sites may find this useful for a project owners group, to help users contact the relevant folks.

  • Group option to only email change authors on updates

    A new group option causes all users who are a member of that group to only send email notifications to change authors, excluding reviewers and watchers. This can be useful for automated build and testing users to reduce the amount of email sent to reviewers.

  • Hide non-visible groups from suggestion service

    Groups that are not visible to a user are not shown as suggestions in contexts where a group name completion is supported. The previously mentioned make group visible to all users flag can be used on a per-group basis to expose groups to everyone.

  • Use suggest.accounts to control user completion suggestions

    The new suggest.accounts configuration variable in gerrit.config can control how suggestions for users are offered.

  • Permit groups to be members of other groups

    Groups can now be a member of another group, users are automatically a member of the transitive closure of their group membership.

  • READ +3 permission required to upload merges

    The new READ +3 permission is required to upload merge commits. Users with only READ +2 permission may upload new changes, but not merges. The schema upgrade will automatically convert any current READ +2 access lines to be READ +3 to maintain prior behavior.

  • "Show Inherited Rights" checkbox in Project Access

    This checkbox enables showing or hiding the lines that are inherited from the parent project. This makes it easier to find the rules that are unique to the project being viewed.

  • Allow single letter usernames

    Username requirements are relaxed to permit single letter usernames.

  • Fine-grained control over authentication cookie

    Site administrators can now set auth.cookieSecure to request browsers only send the cookie over https:// connections, preventing eavesdropping.

    Site administrators can now set auth.cookiePath to override the path used for the authentication cookie, which may be necessary if a reverse proxy maps requests to the managed gitweb.

Replication

  • Add adminUrl to replication for repository creation

    Replication remotes can be configured with remote.name.adminUrl to indicate an SSH path for repository creation that is different from the normal push URL in remote.name.url. The adminUrl can be used by Gerrit to create a new repository when the normal URL is a non-SSH URL, such as git:// or http://.

  • Support HTTP authentication for replication

    Replication can now be performed over an authenticated smart HTTP transport, in addition to anonymous Git and authenticated SSH.

Misc.

  • Alternative URL for Gerrit’s managed Gitweb

    The internal gitweb served from /gitweb can now appear to be from a different URL by using a reverse proxy that does URL rewriting.

  • Internal dependencies updated

    Updated H2 Database to 1.2.147, PostgreSQL JDBC Client to 9.0-801, openid4java to 0.9.6, ANTLR to 3.2, GWT to 2.1.1, JSch to 0.1.44, Gson to 1.6, Apache Commons Net to 2.2, Apache Commons Pool to 1.5.5, JGit to 0.12.1.53-g5ec4977, MINA SSHD to 0.5.1-r1095809.

Bug Fixes

Web UI

  • issue 853 Incorrect side-by-side display of modified lines

    A bug in JGit lead to the side-by-side view displaying wrong and confusing output of modified lines. This bug also caused some automatic merges to be carried out incorrectly, usually resulting in compile failures. Fixed.

  • Disallow negative/zero columns in difference views

    Previously a negative or zero value in the number of columns field would break the user’s account and prevent them from viewing any file differences through the web UI. Values less than 1 are now rejected, and existing broken accounts will work again by resetting to a sane column count.

  • Fix branches table displaying symbolic references (e.g. HEAD).

    In the project’s "Branches" tab symbolic references like HEAD always displayed the wrong target name. Fixed to display the target name of the reference.

  • Disallow deletion of HEAD and targets of symbolic refs

    Deleting the target of a symbolic reference causes the symbolic to become dangling, and it becomes useless.

  • Prevent creating refs/for/branch in web UI.

  • issue 804 Display proper error message on invalid group

    Attempting to browse a group that does not exist or that is not visible to the current user now displays a proper error message, instead of a scary generic "Application Error, Server Error".

  • issue 822 Up To Change link activates last browsed patch set

  • issue 846 Disable buttons during RPCs

  • issue 915 Always display button text in black

  • issue 946 Make sure that ENTER works in all text fields

  • issue 963 Go back to change screen if Publish and Submit fails

  • Enable "Sign Out" when auth.type = CLIENT_SSL_CERT_LDAP.

  • Fix handling of "Session Expired" with SSL certificates.

  • Fix compatibility with recent releases of Gitweb.

  • Fix "review" link in Gitweb integration.

  • Always display button text in black

  • Always disable content merge option if user can’t change project

commit-msg Hook

  • issue 922 Fix commit-msg hook to run on Solaris

Outgoing Mail

  • issue 780 E-mail about failed merge should not use Anonymous Coward

    Some email was sent as Anonymous Coward, even when the user had a configured name and email address. Fixed.

  • Fix calculation of project owners

    When sending out new changes for review, Gerrit automatically tries to address the project owners on the To line of the outgoing message. This sometimes included the owner of a branch. Fixed.

  • Do not email reviewers adding themselves as reviewers

  • Fix comma/space separation in email templates

Pushing Changes

  • Avoid huge pushes during refs/for/BRANCH push

    With Gerrit 2.1.6, clients started to push possibly hundreds of megabytes for what should be a tiny patch set changing 1 line of 1 file. This large push was caused by the server advancing ahead of the client (e.g. due to another change being submitted) and the client not having fetched the new version. Fixed by adding some recent history to the advertisement so that clients don’t have to upload the entire project for a small change.

  • issue 414 Reject pushing multiple commits with same Change-Id

    If multiple new commits are uploaded to a refs/for/ branch and they have the same Change-Id, the push is now rejected. Within a project, the Change-Id should be unique and users should either squash the commits, or modify them to use unique Change-Ids.

  • issue 635 Match Change-Id by project and branch combination

  • issue 635 Auto close changes by Change-Id on same branch only

    Changes are automatically closed during direct push to branch only if the Change-Id line matches and the branch name matches. Previously changes were closed automatically if only the Change-Id matched, making it difficult to cherry-pick changes across branches.

  • issue 947 Disallow to push to non-connected target

    If a repository stores disconnected history graphs on different branches, changes may only be pushed to the correct branch.

  • Always do Change-Id checks on receiving commits

    Ensure Change-Ids aren’t incorrectly used, even if the project does not require them to be present. Previously some validity checks were only performed if the project required Change-Id lines.

  • Make Change-Id requirement applicable only to reviews

    Change-Ids are not required when directly pushing to a branch. This permits projects that normally require Change-Ids to still perform direct branch pushes for updates received from an upstream project that does not use Change-Ids.

  • Reject invalid Change-Id lines

    Severely malformed Change-Id lines were previously accepted by the server. These are now rejected.

  • Fix error message returned on push to closed change

    If a commit with a Change-Id was pushed, and the corresponding change was already closed, the server incorrectly errored out with "No new changes". Now it reports the change is closed and does not accept a new patch set.

  • Fix error message for rejecting a change of another project

    Instead of saying change not found when pushing to a commit to a refs/changes/NNNN reference that belongs in another project, the error now indicates the change belongs to another project.

  • Better help message when commit message is malformed

    If the commit message is badly formatted Gerrit displays an error message to the client. This message has been extended to offer suggestions on how to correct the commit message.

  • Log warning on change state corrupt error

    If a change state corrupt error is reported to a client, there was no mention if it on the server error log. Now it is reported so the site administrator also knows about it.

SSH Commands

  • issue 755 Send new patchset event after its available

  • issue 814 Evict initial members of group created by SSH

  • issue 879 Fix replication of initial empty commit in new project

  • Disallow setting a project as parent for itself

  • Automatically create user account(s) as necessary

  • Move SSH command creation off NioProcessor threads

Administration

  • Enable git reflog for all newly created projects

    Previously branch updates were not being recorded in the native Git reflogs ($GIT_DIR/logs/refs/heads) due to a misconfiguration on new projects created by gerrit create-project. Fixed.

  • Fix IllegalArgumentException caused by non-ASCII user names

    An invalid username is now always reported in UTF-8.

  • PostgreSQL: conditional installation of PL/pgSQL.

    Conditional installation is needed to install Gerrit on PostgreSQL 9.

  • issue 961 Fix NPE on Gerrit startup if mail.from is invalid

  • issue 966 Enable git:// download URLs if canonicalGitUrl set

  • Stop logging keepalive@jcraft.com errors in error_log

  • gerrit.sh: Fix issues on SuSE Linux

  • gerrit.sh: Fix issues on Solaris

  • gerrit.sh: Support spaces in JAVA_HOME

Documentation

  • issue 800 documentation: Show example of review -m

  • issue 896 Clarify that ${name} is required for replication.

  • Fix spelling mistake in Searching Changes documentation

  • Fix spelling mistake in user-upload documentation

  • Document cache diff_intraline

  • Document change set dependencies and cherry-pick

  • Include user in scp commands to copy commit hook

  • Adjust documentation to build with current AsciiDoc version