= Release notes for Gerrit 2.8.2

There are no schema changes from link:ReleaseNotes-2.8.1.html[2.8.1].

Download:
link:https://www.gerritcodereview.com/download/gerrit-2.8.2.war[
https://www.gerritcodereview.com/download/gerrit-2.8.2.war]


== Lucene Index

* Support committing Lucene writes within a fixed interval.
+
The `ramBufferSize` and `maxBufferedDocs` options control how often the
writer is flushed, but this does not fsync files on disk and thus
might not be permanent, particularly in a machine under heavy load.
+
As a result, commits to the index may not be completed, and updates may
be lost if the server goes down.
+
A new option `commitWithin` is added, to control how frequently the
indexes are committed.


== General

* Only add "cherry picked from" when cherry picking a merged change.
+
The "(cherry picked from commit ...)" line was being added in the commit
message when cherry picking from closed changes, which included those that were
abandoned.

* link:https://code.google.com/p/gerrit/issues/detail?id=2513[Issue 2513]:
Improve the "This patchset was cherry picked" message.
+
When cherry-picking a change, the message "This patchset was cherry picked to
change: <Change-Id>" was added as a message on the change.  This was not very
useful as the Change-Id is the same on the newly created change.
+
The message is changed to "This patchset was cherry picked to branch <branch
name> as commit <SHA1>".

* Fix PUSH permission check for draft changes.
+
It was not possible to block pushes to the `refs/drafts` namespace.

* Don't allow project owners to create branches if create is blocked.
+
Project owners were able to create branches through the WebUI, REST and SSH
even when the 'create reference' permission was actually blocked for them.

* link:https://code.google.com/p/gerrit/issues/detail?id=2397[Issue 2397]:
Remove quotes and trailing period from "topic edited" messages.
+
The quotes and trailing period were causing linkification to fail for topics
that were set to a URL.

* Check if user can read HEAD commit when resolving detached HEAD.
+
If HEAD was detached the `GetHead` REST endpoint refused to resolve HEAD
when the user was not a project owner.

* link:https://code.google.com/p/gerrit/issues/detail?id=2392[Issue 2392]:
Keep `status:closed` limit below MySQL Connector/J's hard limit.
+
Since MySQL Connector/J 5.1.21 does not allow limits above 50M rows
and aborts them with 'setMaxRows() out of range', we cannot use `MAX_VALUE`
as limit for plain `status:closed` queries.

* Fix IllegalArgumentException when running query with `limit:0` on secondary
index.
+
Running a query with `limit:0` when the secondary index is enabled was causing
an internal server error.

* link:https://code.google.com/p/gerrit/issues/detail?id=2331[Issue 2331]:
Make sure `change-merged` event contains correct patch set number.
+
When a change is submitted with the cherry-pick strategy, or when the
change is rebased with the "rebase if necessary" strategy, a new patch
set is created.  The newly created patch set was not being set in the
`change-merged` event.

* Guard against `diff.mnemonicprefix` in `commit-msg` hook.
+
When `diff.mnemonicprefix` was enabled in the git config, committing
changes with `git commit -v` caused the diff to be included in the
generated commit message.

* link:https://code.google.com/p/gerrit/issues/detail?id=2453[Issue 2453]:
Fix submit rule evaluation for non blocking labels.
+
Putting a negative score on a label configured as `NoBlock` was causing
the submit button to be disabled.

* link:https://code.google.com/p/gerrit/issues/detail?id=2441[Issue 2441]:
Allow to create branch with new commits.
+
Branches could not be created with a new commit which is not on other branches
already.

* Fix incompatibility between "Rebase if Necessary" and "copy scores".
+
When a project was set up with "Rebase if Necessary", one of its labels had
`copyAllScoresOnTrivialRebase` or `copyMaxScore`, and a change that actually
needed a trivial rebase was submitted, Gerrit first rebased the change, and in
the process copied the approval for the label.  It then copied all the
approvals, including the one already copied, which resulted in a constraint
violation on the database.

* Add `Implementation-Vendor` default manifest entry for plugins.
+
In buck, the `java_binary` rule merges manifest entries from dependent JARs
unless the input JAR possesses these entries itself.  This was causing some
plugins to display the wrong vendor information if they had dependency on
another JAR file that provided a `Implementation-Vendor` value.

* link:https://code.google.com/p/gerrit/issues/detail?id=2498[Issue 2498]:
Handle null commits when updating submodules.
+
In some edge cases it was possible that a null commit would exist, and this
caused a crash when updating submodules.

* Update and insert comments/approvals in a single step.
+
When a review includes both new label scores and updates to existing label
scores, use `upsert` to record them all at the same time, rather than in
separate `update` and `insert` operations.

* link:https://code.google.com/p/gerrit/issues/detail?id=2374[Issue 2374]:
Prevent duplicate commits in same project when uploading to `refs/changes/n`.
+
Under certain circumstances, when pushing to `refs/changes/n`, the same
commit could be pushed onto multiple changes even if the changes were on the
same branch.

* Remove dependency on joda time library in gerrit launcher.
+
The joda time library was being unnecessarily packaged in the root of
the gerrit.war file.

== Change Screen / Diff Screen


* link:https://code.google.com/p/gerrit/issues/detail?id=2398[Issue 2398]:
Enable syntax highlighting for Groovy, Clojure, Lisp, Ruby and Perl.

* link:https://code.google.com/p/gerrit/issues/detail?id=2416[Issue 2416]:
Fix copy functionality in Firefox and Safari.
+
Ctrl-C/Cmd-C was activating the 'insert comment' feature, and preventing the
browser from copying the selected text to the clipboard.

* link:https://code.google.com/p/gerrit/issues/detail?id=2428[Issue 2428]:
Fix truncation of long lines in side-by-side diff.
+
Lines whose length exceeded the width of the window were being truncated
and only shown fully after zooming out/in on the browser.

* Fix handling of the enter key when editing the topic.
+
The enter key was causing the file diff view to open, instead of confirming
the topic edit.

* Fix wrong button being passed to the 'revert' action.
+
The action was using the cherry-pick button instead of the revert button.

* Improve the error message shown when cherry picking a change fails.
+
The error message "Could not create merge commit during cherry pick" was
confusing for users, and is replaced with simply "Cherry pick failed".

* Add newline on commit messages created by cherry picking a change in the UI
or via the REST API.
+
If a commit was cherry-picked from the UI or via the REST API, the
trailing newline on the end of the commit message was lost.

* link:https://code.google.com/p/gerrit/issues/detail?id=2405[Issue 2405]:
Update change to invalidate cache after deletion of draft revision.
+
When a non-current draft patch set was deleted no update of the change
was made, causing the change screen to not work properly because it
relied on cached data.

* Extend change screen's horizontal bars to full width.
+
This allows the title of the change message to have some padding within
the bar.

* Fix tab alignment to be correct width in side-by-side diff.
+
This fixes the tab width to be the user's preference, rather than
1 + user's preference when show tabs is enabled.

* Fill the browser width in side-by-side diff.
+
Filling the browser available space with each side of the diff at
50% size allows the user to more easily view long lines if they
have a wide display, and better fit on more narrow displays by
splitting the available width at 50%.

* Fire `comment-added` stream event even when mail notification is not sent.
+
Unchecking the "and send email" option on the change screen prevented the
`comment-added` event from being sent to the event stream.

* link:https://code.google.com/p/gerrit/issues/detail?id=2493[Issue 2493]:
Set uploader to current user in `patchset-created` event upon rebasing
a change in the UI.
+
When a change was rebased from the change screen, the `uploader` field
of the `patchset-created` event was incorrectly set to the original
change uploader, rather than the user that performed the rebase.

* Display a warning instead of an error when the intraline diff times out.
+
Displaying an error was confusing for users and administrators.

* link:https://code.google.com/p/gerrit/issues/detail?id=2514[Issue 2514]:
Display an error message when commentlink regex is invalid.
+
If a commentlink was configured with an invalid regular expression, for example
an expression that is valid in Java but not in JavaScript, the change screen
failed to load.
+
Now, an error message will be displayed in the UI.

== ssh


* Support for nio2 backend is removed.
+
The nio2 backend is link:https://issues.apache.org/jira/browse/SSHD-252[
broken in MINA SSHD].  Support is removed until the next release of MINA
SSHD in which it is fixed.

* link:https://code.google.com/p/gerrit/issues/detail?id=2424[Issue 2424]:
Add descriptions on commands that are disabled in slave mode.
+
Commands that are disabled on a server running in slave mode were being listed
with an empty description.

* Remove obsolete commands from slave mode commands list.
+
The `approve` and `replicate` commands, which no longer exist, were still being
listed in the available commands shown when running the ssh `gerrit` command
without any arguments on a server running in slave mode.

* Remove 'including replication' from the `show-queue` command description.
+
The `replication` command is provided by the replication plugin, so it is no
longer relevant to mention this in the description of a core command.

* Fix aliasing of SSH commands.

* link:https://code.google.com/p/gerrit/issues/detail?id=2515[Issue 2515]:
Fix internal server error when updating an existing label with `gerrit review`.

== Replication Plugin


* Never replicate automerge-cache commits.
+
Commits in the `automerge-cache` namespace are used on the master to
improve performance of the diff UI.  They are not needed on remote
mirrors and it is wasteful to replicate them.

* link:https://code.google.com/p/gerrit/issues/detail?id=2420[Issue 2420]:
Fix failure to create missing remote repository via git:// protocol.
+
When replicating to a mirror over the anonymous git:// protocol and the
repository did not exist on the remote (i.e. if the remote was offline
when the repository was originally created), the replication failed with
a "remote repository error", rather than the expected "no repository".

* Improve info logging related to repository creation and deletion, and
differentiate between local and remote repository errors.

* Update documentation to clarify replication of refs/meta/config when
refspec is 'all refs'.

== Upgrades


* JGit is upgraded to 3.2.0.201312181205-r

== Documentation


* Add missing documentation of the secondary index configuration.
+
Document that open and closed changes are indexed in separate indexes,
and for Lucene indexes the RAM buffer size and maximum buffered documents
can be configured.

* Correct the Gerrit download link.
+
The link on the documentation index was pointing to the Google Code page,
which has not been used for some time.

* Correct the description of the `revisions` field in the REST API's
`ChangeInfo` entity.

* Add a link from the plugin documentation to the validation listeners API
documentation.

* Remove double border around code snippets.

* Add border around tables.
