Files
gerrit/ReleaseNotes/ReleaseNotes-2.6.txt
Edwin Kempin 57fa179fcf Add 'Dev' section to Gerrit 2.6 release notes
Change-Id: Ib01785b259c0e94af493b68d3fe85058ae1be589
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
2013-03-27 20:30:57 +00:00

987 lines
37 KiB
Plaintext

Release notes for Gerrit 2.6
============================
Gerrit 2.6 is now available:
link:http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.6.war[http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.6.war]
Gerrit 2.6 includes the bug fixes done with
link:ReleaseNotes-2.5.1.html[Gerrit 2.5.1] and
link:ReleaseNotes-2.5.2.html[Gerrit 2.5.2]. These bug fixes are *not*
listed in these release notes.
Schema Change
-------------
*WARNING:* This release contains schema changes. To upgrade:
----
java -jar gerrit.war init -d site_path
----
*WARNING:* Upgrading to 2.6.x requires the server be first upgraded to 2.1.7 (or
a later 2.1.x version), and then to 2.6.x. If you are upgrading from 2.2.x.x or
newer, you may ignore this warning and upgrade directly to 2.6.x.
New Features
------------
Web UI
~~~~~~
Global
^^^^^^
* Rename "Groups" top-level menu to "People"
* Move "Draft Comments" link next to "Drafts" link
* Highlight the active menu item
* Move user info, settings, and logout to popup dialog
* Show a small version of the avatar image next to the user's name.
* Show avatar image in user info popup dialog
* Always show 'Working ...' message
+
The 'Working ...' message is now not anymore sticked to the Gerrit page
top border so that it is now always displayed, even if the user has
scrolled down the page and the top border is not visible.
+
This change make 'Working ...' message relatively positioned to
browser top border, so that it is always visible for users.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#suggest.from[
suggest.from] configures a minimum number of characters before
matches for reviewers, accounts, groups or projects are offered.
* Make the default font size "small".
* Mark all CSS classes as external so users can rely on them.
Search
^^^^^^
* Animate search bar by expanding & unexpanding
+
When the search bar is used, expand it to allow for more text to be
visible. When it is blurred, shrink it back to the original size.
* Suggest projects, groups and users in search panel
+
Suggest projects, groups and users in the search panel as parameter for
those search operators that expect a project, group or user.
* In search panel suggest 'self' as value for operators that expect a user
* Quote values suggested for search operators only if needed
+
The values that are suggested for the search operators in the search
panel are now only quoted if they contain a whitespace.
Change Screens
^^^^^^^^^^^^^^
* A change's commit message can be edited from the change screen.
* A change's topic can be added, removed or changed from the
change screen.
* An "Add Comment" button is added to change screen
* The reviewer matrix on a change displays gray boxes where permissions
do not allow voting in that category.
+
The coloring enables authors to quickly identify if another reviewer
is necessary to continue the change.
* link:https://code.google.com/p/gerrit/issues/detail?id=353[Issue 353] &
link:https://code.google.com/p/gerrit/issues/detail?id=1123[Issue 1123]:
New link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/project-setup.html#rebase_if_necessary[
Rebase If Necessary] submit type
+
This is similar to cherry pick, but honors change dependency
information.
* The rebase button is hidden when the patch set is current.
* Improved review message when a change is rebased in the UI
+
When a change is rebased in the UI by pressing the rebase button, a
comment is added onto the review. Instead of only saying 'Rebased' the
message is now more verbose, e.g. 'Patch Set 1 was rebased'.
* The submit type that is used for submitting a change is shown on the
change screen in the info block.
+
This is useful because the submit type of a change can now be
link:#submit-type-from-prolog[controlled by Prolog].
* Replace the All Diff buttons on the change screen with links
+
The action buttons to open the diff for all files in own tabs consumed
too much space due to the long label texts.
* The patch set review screen can include radio buttons for custom
labels if enabled by
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html#_how_to_write_submit_rules[submit rules].
* Recommend rebase on Path Conflict
* link:https://code.google.com/p/gerrit/issues/detail?id=1685[Issue 1685]:
After 'Up to change' expand the patch set that was just reviewed
+
After clicking on the 'Up to change' link on a patch screen, the patch
set that was just reviewed is automatically expanded on the change
screen.
* Allow direct change URLs to end with '/'.
* Slightly increase commit message text size from 8px to 9px.
* link:https://code.google.com/p/gerrit/issues/detail?id=1381[Issue 1381]:
Remove the ID column from change tables
+
Users don't really need the ID column present. For most changes the
subject is descriptive and unique enough to identify the correct
change.
* Do not wrap project/branch/owner fields in change table
+
This makes it easier to use Gerrit on narrow screens.
Patch Screens
^^^^^^^^^^^^^
* Support for file comments
+
It is now possible to comment on a whole file in a patch.
* Have the reviewed panel also at the bottom of the patch screen
+
Reviewers normally review patches top down, finishing the review when
they reach the bottom of the patch. To use the streamlined review
workflow they now don't need to scroll back to the top to find the
reviewed checkbox and link.
* link:https://code.google.com/p/gerrit/issues/detail?id=1494[Issue 1494]:
Use mono-font for displaying the file contents
+
This avoids alignment errors when syntax highlighting is enabled.
Project Screens
^^^^^^^^^^^^^^^
* Support filtering of projects in the project list screen
+
Filter matches are highlighted by bold printing.
+
The filter is reflected by the `filter` URL parameter.
* Support filtering of projects in ProjectListPopup
+
Filter matches are highlighted by bold printing.
* Display a query icon for each project in the project list screen that
links to the default query/dashboard of that project.
* Replace projects side menus with top menus
+
The top menus are submenus to the Project Menu and they appear only
when a project has been selected.
* Remember the last Project Screen used
+
Remember the last project screen used every time a project screen is
loaded. Go to the remembered screen when selecting a new project from
the project list instead of always going to the project info screen.
* Remember the last project viewed
+
Remember the last project viewed when navigating away from a project
screen. If there is a remembered project, then the extra project links
are not hidden.
* Add clone panel to the project general screen
* New screen for listing and accessing the project dashboards.
* link:https://code.google.com/p/gerrit/issues/detail?id=1677[Issue 1677]:
Place the 'Browse' button to select a watched project next to input field
* Ask user to login if project is not found
+
Accessing a project URL was failing with 'Not Found - The page you
requested was not found, or you do not have permission to view this
page' if the user was not signed in and the project was not visible to
'Anonymous Users'. Instead Gerrit now asks the user to login and
afterwards shows the project to the user if it exists and is visible.
If the project doesn't exist or is not visible, the user will still get
the Not Found screen after sign in.
* Improve error handling on branch creation
+
Improve the error messages that are displayed in the WebUI if the
creation of a branch fails due to invalid user input.
Group Screens
^^^^^^^^^^^^^
* Support filtering of groups in the group list screen
+
Filter matches are highlighted by bold printing.
+
The filter is reflected by the `filter` URL parameter.
* Remove group type from group info screen
+
The information about the group type was not much helpful. All groups
that can be seen in Gerrit are of type 'INTERNAL', except a few
well-known system groups which are of type 'SYSTEM'. The system groups
are so well-known that there is no need to display the type for them.
Dashboard Screens
^^^^^^^^^^^^^^^^^
* Link dashboard title to a URL version of itself
+
When using a stable project dashboard URL, the URL obfuscates the
content of the dashboard which can make it hard to debug a dashboard or
copy and modify it. In the special case of stable dashboards, make the
title a link to an unstable URL version of the dashboard with the URL
reflecting the actual dashboard contents the way a custom dashboard
does.
* Increase time span for "Recently Closed" section in user dashboard to 4 weeks.
Account Screens
^^^^^^^^^^^^^^^
* link:https://code.google.com/p/gerrit/issues/detail?id=1740[Issue 1740]:
Display description how to generate SSH Key in SshPanel
+
Display a description of how to generate an SSH Key in an expandable
section in the SshPanel instead of linking to the GitHub SSH tutorial.
The GitHub SSH tutorial was partially not relevant and confused users.
* Make the text for "Register" customizable
Plugin Screens
^^^^^^^^^^^^^^
* Show status for enabled plugins in the WebUI as 'Enabled'
+
Earlier no status was shown for enabled plugins, which was confusing to
some users.
Project Dashboards
~~~~~~~~~~~~~~~~~~
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-dashboards.html#project-dashboards[
Support for storing custom dashboards for projects]
+
Custom dashboards can now be stored in the projects
`refs/meta/dashboards/*` branches.
+
The project dashboards are shown in a new project screen and can be
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-projects.html#dashboard-endpoints[
accessed via REST].
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-dashboards.html#project-default-dashboard[
Allow defining a default dashboard for projects]
* Support inheritance for project dashboards.
+
In dashboards queries the `${project}` token can be used as placeholder
for the project name. This token will be replaced with the project to
which a dashboard is being applied.
* On the project list screen a query icon is displayed for each project
that links to the default dashboard of that project.
* Support a `foreach` parameter for custom dashboards.
+
The `foreach` parameter which will get appended to all the queries in
the dashboard.
Access Controls
~~~~~~~~~~~~~~~
* Allow to overrule `BLOCK` permissions on the same project
+
It was impossible to block a permission for a group and allow the same
permission for a sub-group of that group as the `BLOCK` permission
always won over any `ALLOW` permission. For example, it was impossible
to block the "Forge Committer" permission for all users and then allow
it only for a couple of privileged users.
+
An `ALLOW` permission has now priority over a `BLOCK` permission when
they are defined in the same access section of a project. To achieve the
above mentioned policy the following could be defined:
+
[access "refs/heads/*"]
forgeCommitter = block group Anonymous Users
forgeCommitter = group Privileged Users
+
Across projects the `BLOCK` permission still wins over any `ALLOW`
permission. This way one cannot override an inherited `BLOCK`
permission in a subproject.
+
Overruling of `BLOCK` permissions with `ALLOW` permissions also works
for labels i.e. permission ranges. If a dedicated 'Verifiers' group
need to be the only group who can vote in the 'Verified' label and it
must be ensured that even project owners cannot change this policy,
then the following can be defined in a common parent project:
+
[access "refs/heads/*"]
label-Verified = block -1..+1 group Anonymous Users
label-Verified = -1..+1 group Verifiers
* link:https://code.google.com/p/gerrit/issues/detail?id=1516[issue 1516]:
Show global capabilities to all users that can read `refs/meta/config`
+
Users can now propose changes to the global capabilities for review
from the WebUI.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_remove_reviewer[
Remove Reviewer] is a new permission.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_push_signed[
Pushing a signed tag] is a new permission.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_edit_topic_name[
Editing the topic name] is a new permission.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#capability_accessDatabase[
Raw database access] with the `gsql` command is a new global capability.
+
Previously site administrators had this capability by default. Now it has
to be explicitly assigned, even for site administrators.
* link:https://code.google.com/p/gerrit/issues/detail?id=1585[Issue 1585]:
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_view_drafts[
Viewing other users' draft changes] is a new permission.
* link:https://code.google.com/p/gerrit/issues/detail?id=1675[Issue 1675]:
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_delete_drafts[Deleting] and
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_publish_drafts[publishing]
other users' draft changes is a new permission.
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#ldap.groupName[
LDAP group names] are configurable, `cn` is still the default.
* Kerberos authentication to LDAP servers is now supported.
* Basic project properties are now inherited by default from parent
projects: Use Content Merge, Require Contributor Agreement, Require
Change Id, Require Signed Off By.
* Allow assigning `Push` for `refs/meta/config` on `All-Projects`
+
The `refs/meta/config` branch of the `All-Projects` project should only
be modified by Gerrit administrators because being able to do
modifications on this branch means that the user could assign himself
administrator permissions.
+
In addition to being administrator Gerrit requires that the
administrator has the `Push` access right for `refs/meta/config` in
order to be able to modify it (just as with all other branches
administrators do not have edit permissions by default).
+
The problem was that assigning the `Push` access right for
`refs/meta/config` on the `All-Projects` project was not allowed.
+
Having the `Push` access right for `refs/meta/config` on the
`All-Projects` project without being administrator has no effect.
Hooks
~~~~~
* Change topic is passed to hooks as `--topic NAME`.
* link:https://code.google.com/p/gerrit/issues/detail?id=1200[Issue 1200]:
New `reviewer-added` hook and stream event when a reviewer is added.
* link:https://code.google.com/p/gerrit/issues/detail?id=1237[Issue 1237]:
New `merge-failed` hook and stream event when a change cannot be submitted due to failed merge.
* link:https://code.google.com/p/gerrit/issues/detail?id=925[Issue 925]:
New `ref-update` hook run before a push is accepted by Gerrit.
SSH
~~~
* New SSH command to http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-gc.html[
run Git garbage collection]
+
All GC runs are logged in a GC log file.
* Descriptions are added to ssh commands.
+
If `gerrit` is called without arguments, it will now show a list of available
commands with their descriptions.
* `create-account --http-password` enables setting/resetting the
HTTP password of role accounts, for Git or REST API access.
* http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-ls-user-refs.html[
ls-user-refs] lists which refs are visible for a given user.
* `ls-projects --has-acl-for` lists projects that mention a group
in an ACL, identifying where rights are granted.
* `review` command supports project-specific labels
* `test-submit-rule` was renamed to `test-submit rule`:
+
`rule` is now a subcommand of the `test-submit` command.
* http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-test-submit-type.html[
test-submit type] tests the Prolog submit type with a chosen change.
Query
~~~~~
* Allow `{}` to be used for quoting in query expressions
+
This makes it a little easier to query for group names that contain
a space over SSH:
+
ssh srv gerrit query " 'status:open NOT reviewerin:{Developer Group}' "
* The query summary block includes `resumeSortKey`.
* Query results include author and change size information when certain
options are specified.
* When a file is renamed the old file name is included in the Patch
attribute
Plugins
~~~~~~~
* Plugins can contribute Prolog facts/predicates from Java.
* Plugins can prompt for parameters during `init` with `InitStep`.
* Plugins can now contribute JavaScript to the web UI. UI plugins can
also be written and compiled with GWT.
* New Maven archetypes for JavaScript and GWT plugins.
* Plugins can contribute validation steps to received commits.
* Commit message length checks are moved to the `commit-message-length-validator`
plugin which is included as a core plugin in the Gerrit distribution and
can be installed during site initialization.
* Creation of code review notes is moved to the `reviewnotes` plugin
which is included as a core plugin in the Gerrit distribution and can
be installed during site initialization.
* A plugin extension point for avatar images was added.
Prolog
~~~~~~
[[submit-type-from-prolog]]
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html#HowToWriteSubmitType[
Support controlling the submit type for changes from Prolog]
+
Similarly like the `submit_rule` there is now a `submit_type` predicate
which returns the allowed submit type for a change. When the
`submit_type` predicate is not provided in the `rules.pl` then the
project default submit type is used for all changes of that project.
+
Filtering the results of the `submit_type` is also supported in the
same way like filtering the results of the `submit_rule`. Using a
`submit_type_filter` predicate one can enforce a particular submit type
from a parent project.
* Plugins can contribute Prolog facts/predicates from Java.
* link:https://code.google.com/p/gerrit/issues/detail?id=288[Issue 288]:
Expose basic commit statistics for the Prolog rule engine
+
A new method `gerrit:commit_stats(-Files,-Insertions, -Deletions)` was
added.
* A new `max_with_block` predicate was added for more convenient usage
Email
~~~~~
* Notify project watchers if draft change is published
* Notify users mentioned in commit footer on draft publish
* Add new notify type that allows watching of new patch sets
* link:https://code.google.com/p/gerrit/issues/detail?id=1686[Issue 1686]:
Add new notify type that allows watching abandoning of changes
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-notify.html[
Notifications configured in `project.config`] can now be addressed
using any of To, CC, or BCC headers.
* link:https://code.google.com/p/gerrit/issues/detail?id=1531[Issue 1531]:
Email footers now include `Gerrit-HasComments: {Yes|No}`.
* `#if($email.hasInlineComments())` can be used in templates to test
if there are comments to be included in this email.
* Notification emails are sent to included groups.
* Comment notification emails are sent to project watchers.
* "Change Merged" emails include the diff output when `sendemail.includeDiff` is enabled.
* When link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-changes.html#set-review[
posting a review via REST] the caller can control email delivery
+
This may help automated systems to be less noisy. Tools can now choose
which review updates should send email, and which categories of users
on a change should get that email.
Labels
~~~~~~
* Approval categories stored in the database have been replaced with labels
configured in `project.config`. Existing categories are migrated to
`project.config` in `All-Projects` as part of the schema upgrade; no user
action is required.
* Labels are no longer global;
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-labels.html[
projects may define their own labels], with inheritance.
Dev
~~~
* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-readme.html#debug-javascript[
Support loading debug JavaScript]
* Gerrit acceptance tests
+
An infrastructure for testing the Gerrit daemon via REST and/or SSH
protocols has been added. Gerrit daemon is run in the headless mode and
in the same JVM where the tests run. Besides using REST/SSH, the tests
can also access Gerrit server internals to prepare the test environment
and to perform assertions.
+
A new review site is created for each test and the Gerrit daemon is
started on that site. When the test has finished the Gerrit daemon is
shutdown.
* Lightweight LDAP server for debugging
* Add asciidoc checks in the documentation makefile
+
Exit with error if the asciidoc executable is not available or has
version lower than 8.6.3.
+
The release script is aborted if asciidoc is missing.
* Added sublime project files to `.gitignore`
* Exclude all `pom.xml` files that are archetype resources in `version.sh`
Performance
~~~~~~~~~~~
* Bitmap Optimizations
+
On running the http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-gc.html[
garbage collection] Jgit creates bitmap data that is saved to an
auxiliary file. The bitmap optimizations improve the clone and fetch
performance. git-core will ignore the bitmap data.
* Improve suggest user performance when adding a reviewer.
+
Do not check the visibility of the change for each suggested account if
the ref is visible by all registered users.
+
On a system with about 2-3000 users, where most of the projects are
visible by every registered user, this improves the performance of the
suggesting reviewer by a factor of 1000 at least.
* Cache RefControl.isVisible()
+
For Git repositories with many changes the time for calculating visible
refs is reduced by 30-50%.
* Allow admins to disable magic ref check on upload
+
Some sites manage to run their repositories in a way that prevents
users from ever being able to create `refs/for`, `refs/drafts` or
`refs/publish` names in a repository. Allow admins on those servers
to disable this (somewhat) expensive check before every upload.
* Permit ProjectCacheClock to be completely disabled
+
Some admins may just want to require all updates to projects to be
made through the web interface, and avoid the small expense of a
background thread ticking off changes.
* Batch read Change objects during query
* Default `core.streamFileThreshold` to a larger value
+
If this value is not configured by the server administrator
performance on larger text files suffers considerably and
Gerrit may grind to a halt and be unable to answer users.
+
Default to either 25% of the available JVM heap or ~2048m.
* Improve performance of ReceiveCommits for repositories with many refs
+
Avoid adding `refs/changes/` and `refs/tags/` to RevWalk's as
uninteresting since JGit RevWalk doesn't perform well when a large
number of objects is marked as uninteresting.
* PatchSet.isRef()-optimizations.
+
PatchSet.isRef() is used extensively when preparing for a ref
advertisment and the regular expression used by isRefs() was notably
costly in these circumstances, especially since it could not be
pre-compiled.
+
The regular expression is removed and the check is now directly
implemented. As result the performance of `git ls-remote` could be
increased upto 15%.
* New config option `receive.checkReferencedObjectsAreReachable`
+
If set to true, Gerrit will validate that all referenced objects that
are not included in the received pack are reachable by the user.
+
Carrying out this check on Git repositories with many refs and commits
can be a very CPU-heavy operation. For non public Gerrit servers it may
make sense to disable this check, which is now possible.
* Cache config value in LdapAuthBackend
* Perform a single /accounts/self/capabilities on page load
+
This joins up 3 requests into a single call, which should speed up
initial page load for most users.
* Only gzip compress responses that are smaller compressed
* Caching of changes
+
During Ref Advertisments (via VisibleRefFilter), all changes need to
be fetched from the database to allow Gerrit to figure out which change
refs are visible and should be advertised to the user. To reduce
database traffic a cache for changes was introduced. This cache is
disabled by default since it can mess-up multi-server setups.
Upgrades
~~~~~~~~
* link:https://code.google.com/p/gerrit/issues/detail?id=1619[Issue 1619]:
Embedded Jetty is now 8.1.7.v20120910.
* ASM bytecode library is now 4.0.
* JGit is now 2.3.1.201302201838-r.78-g8fcde4b.
* asciidoc 8.6.3 is now required to build the documentation.
* link:https://code.google.com/p/gerrit/issues/detail?id=1155[Issue 1155]:
prettify is now r225
* The used GWT version is now 2.5.0
+
Fixes some issues with IE9 and IE10.
Bug Fixes
---------
Web UI
~~~~~~
* link:https://code.google.com/p/gerrit/issues/detail?id=1662[Issue 1662]:
Don't show error on ACL modification if empty permissions are added
+
This error message was incorrectly displayed if a permission without
rules was added, although the save was actually successful.
* Don't show error on ACL modification if a section is added more than once
+
This error message was incorrectly displayed if multiple sections for
the same ref were added, although the save was actually successful.
* Links to CGit were broken when `remove-suffix` was enabled.
* link:https://code.google.com/p/gerrit/issues/detail?id=926[Issue 926]:
Internet Explorer versions 9 and 10 are supported.
* link:https://code.google.com/p/gerrit/issues/detail?id=1664[Issue 1664]:
Reverting a change did not preserve the change's topic
* Fix: User could get around restrictions by reverting a commit
+
The Gerrit server may enforce several restrictions on the commit
message (change-id required, signed-off-by, etc). A user was able to
get around these restrictions by reverting a commit using the UI.
* link:https://code.google.com/p/gerrit/issues/detail?id=1518[Issue 1518]:
Reset 'Old Version History' if dependent change is opened
+
Following the navigation link in the dependencies table on the
change screen, the user can directly navigate to dependent changes.
The value for 'Old Version History' of the current change was
incorrectly applied to the new change. If the value was invalid for
the new change the 'Old Version History' field became blank.
* link:https://code.google.com/p/gerrit/issues/detail?id=1736[Issue 1736]:
Clear 'Old Version History' ListBox before populating it
+
The ListBox was not always cleared and as result the same entries were
sometimes added multiple times e.g. after rebasing a change in the
WebUI.
* link:https://code.google.com/p/gerrit/issues/detail?id=1673[Issue 1673]:
Fix disappearance of patch headers when compared patches are identical
+
When two patches were compared that were identical 'No Differences' is
displayed to the user. In this case the patch headers disappeared and
as result the user couldn't change the patch selection anymore.
* link:https://code.google.com/p/gerrit/issues/detail?id=1759[Issue 1759]:
Fix ArrayIndexOutOfBoundsException on intraline diff
+
In some cases displaying the intraline diff failed with an exception like
this:
+
----
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 10
at com.google.gerrit.prettify.common.SparseFileContent.mapIndexToLine(SparseFileContent.java:149)
at com.google.gerrit.prettify.common.PrettyFormatter.format(PrettyFormatter.java:188)
at com.google.gerrit.client.patches.AbstractPatchContentTable.getSparseHtmlFileB(AbstractPatchContentTable.java:287)
at com.google.gerrit.client.patches.SideBySideTable.render(SideBySideTable.java:113)
at com.google.gerrit.client.patches.AbstractPatchContentTable.display(AbstractPatchContentTable.java:238)
at com.google.gerrit.client.patches.PatchScreen.onResult(PatchScreen.java:444)
...
----
+
This happened when the old line was:
+
----
foo-old<LF>
----
+
and the new line was:
+
----
foo-new<CRLF>
----
* Prevent leading and trailing spaces on user's Full Name
+
Strip off the leading and trailing spaces from the Full Name that the
user enters on the Contact Information form.
* link:https://code.google.com/p/gerrit/issues/detail?id=1480[Issue 1480]:
Show proper error message if registering email address fails
* link:https://code.google.com/p/gerrit/issues/detail?id=816[Issue 816]:
Due to issues with the diff_intraline cache the file indention in the
Side-By-Side diff was sometimes wrong.
* Make rebase failed and merge failed messages consistent
* Select 'Projects' menu on loading of a project screen
+
If in the top level menu 'All' is selected and the user navigates to
a change and then from the change to the project by clicking on the
project link in the ChangeInfoBlock, the project screen is loaded but
the 'Projects' menu was not selected.
* Fix display issues for inline comments and inline comment editors
+
** Sometimes a second comment editor was shown instead of using the
existing comment editor.
** Fix doublicated border line between comments.
** Sometimes the parts of the border were missing when a comment was
expanded.
** Fix displaying the blue line that marks the current line when there
are several published comments.
** Sometimes on discard of a comment some frames of the comment editor
stayed and some border lines of neighbour comments disappeared.
* In diff view don't let arrow column accept clicks.
* Fix display of commit message
+
If there are no HTML tags in the text, just break on lines.
* Upon selection in AddMemberBox, focus the box's text field
+
In the change screen, after clicking on an element of the 'Add
Reviewer' suggestion list, users expect to be able to add the reviewer
by hitting enter. This did not work in Firefox.
* Fix enter key detection in project creation screen
+
The enter key detection was not working in all browsers (e.g. Firefox).
* Display a tooltip for all tiny icons and ensure that the cursor is
shown as pointer when hovering over them.
* Clean query string when switching pages
+
If we load a page without a query string, such as Projects->List,
My->Changes, or Settings, it might be confusing to show the old query
string from the previous page. The query string is now cleared out
when switching pages, leaving the help text visible.
* Fix highlighting in search suggestions
+
The provided suggestions should highlight the part that the user has
already typed as bold text. This only worked for the first operator.
For suggestions of any further operator no hightlighting was done.
* Fix style of hint text in search box on initial page load
+
The hint text should be a light gray on the white background,
but was coming up black on initial page load due to a style setup
ordering issue between the SearchPanel and the HintTextBox.
* link:https://code.google.com/p/gerrit/issues/detail?id=1661[Issue 1661]:
Update links to Change-Id and Signed-off-by docu on project info
screen
* Use href="javascript;" for All {Side-by-Side,Unified} links
+
These links shouldn't have an anchor location. There is nothing for
the browser to remember or visit if it were opened in a new tab for
example.
* Improve message for unsatisfiable dependencies
+
If a change cannot be merged due to unsatisfiable dependencies a
comment is added to the change that lists the missing commits and says
that a rebase is necessary.
+
For each missing commit the comment said "Depends on patch set X
of ..., however the current patch set is Y."
+
If multiple commits are missing it may be that for some commits the
dependency is not outdated (X == Y). In this case the message was
confusing.
+
", however the current patch set is Y." is now skipped if Y == X.
Git
~~~
* The wildcard `.` is now permitted in reference regex rules.
* Checking if a change is mergeable no longer writes to the repository.
* Improved `git ls-remote` and `git fetch` performance by caching
changes, decreasing database queries and traffic.
* link:https://code.google.com/p/gerrit/issues/detail?id=1608[Issue 1608]:
Commits pushed without a Change-Id now warn with instructions on how
to download and install the commit-msg hook.
* Submitted but unmerged changes are periodically retried. This is
necessary for a multi-master configuration where the second master
may need to retry a change not yet merged by the first. Please note
we still do not believe this is sufficient to enable multi-master.
* Added a server-level option to use JGit's new, experimental recursive
merger.
SSH
~~~
* `review --restore` allows a review score to be added on the restored change.
* link:https://code.google.com/p/gerrit/issues/detail?id=1721[Issue 1721]:
`review --message` only adds the message once.
* `ls-groups` prints "N/A" if the group's name is not set.
* `set-project-parent --children-of`: Fix getting parent for level 1 projects
+
For direct child projects of the `All-Projects` project the name of the
parent project was incorrectly retrieved if the parent name was not
explicitly stored as `All-Projects` in the project.config file.
Query
~~~~~
* link:https://code.google.com/p/gerrit/issues/detail?id=1729[Issue 1729]:
Fix query by 'label:Verified=0'
* link:https://code.google.com/p/gerrit/issues/detail?id=1772[Issue 1772]:
Set `_more_changes` if result is limited due to configured query limit
* Fix query cost for "status:merged commit:c0ffee"
Plugins
~~~~~~~
* Skip disabled plugins on rescan
+
In a background thread Gerrit periodically scans for new or changed
plugins. On every such a rescan disabled plugins were loaded and a new
copy of their jar files was stored in the review site's tmp folder.
* Fix cleanup of plugins from tmp folder on graceful Gerrit shutdown
+
Loaded plugin jars are copied to the review site's tmp folder to support
hot updates of the plugin jars in the plugins folder. On Gerrit shutdown
these copies of the jar files should be cleaned up. For this purpose a
CleanupHandle is created, but the CleanupHandle wasn't enqueued in the
cleanupQueue which is why cleanup on Gerrit shutdown didn't happen.
* Reattempt deletion of plugin jars from tmp folder on JVM termination
+
Loaded plugin jars are copied to the review site's tmp folder to support
hot updates of the plugin jars in the plugins folder. On Gerrit shutdown
these copies of the jar files should be cleaned up. For this purpose a
CleanupHandle is created. The deletion of the tmp file in the
CleanupHandle can fail although the jar file was closed. In this case
reattempt the deletion on termination of the virtual machine. This
normally succeeds.
* Fix unloading of plugins
+
When two plugins, say pluginA, and pluginB had been loaded, and pluginA
was removed from $sitePath/plugins, pluginA got stopped, and a cleaning
run was ordered. But this cleaning run cleaned both plugins and both
plugins had their jars removed. This left pluginB visible to Gerrit
although it's backing jar was gone. Upon calling not yet initialized
parts of pluginB (e.g.: viewing not yet viewed Documentation pages of
pluginB), exceptions as following were thrown:
+
----
java.lang.IllegalStateException: zip file closed
at java.util.zip.ZipFile.ensureOpen(ZipFile.java:420)
at java.util.zip.ZipFile.getEntry(ZipFile.java:165)
----
* Fix double bound exception when loading extensions
+
ServerInformation class was already bound, therefore it shouldn't be
bound a second time for Gerrit extensions.
* Do not call onModuleLoad() second time
+
onModuleLoad() method is automatically called by GWT framework. Calling
it once again in PluginGenerator caused double plugin initialization.
* Require `Administrate Server` capability to GET /plugins/
+
Listing plugins requires being an administrator. This was missed in the
REST API.
Email
~~~~~
* Merge failure emails are only sent once per day.
* Unused macros are removed from the mail templates.
* Unnecessary ellipses are no longer applied to email subjects.
* The empty diff output from an "octopus merge" is now explained in change notification emails.
* link:https://code.google.com/p/gerrit/issues/detail?id=1480[Issue 1480]:
Proper error message is shown when registering an email address fails.
* link:https://code.google.com/p/gerrit/issues/detail?id=1692[Issue 1692]:
Review comments are sorted before being added to notification emails.
* Fix watching of 'All Comments' on `All-Projects`
+
If a user is watching 'All Comments' on `All-Projects` this should
apply to all projects.
Documentation
-------------
User Documentation
~~~~~~~~~~~~~~~~~~
* Added documentation of how to authenticate uploads over HTTP.
* Added documentation of the `auth.editFullNameUrl` and `auth.httpPasswordUrl` configuration parameters.
* Improved the push tag examples in the access control documentation.
* Improved documentation of error messages related to commit message footer content.
* Added documentation of the "commit already exists" error message.
* Added documentation of contributor agreements.
* Added missing documentation of JSON attributes.
* Added missing documentation of mail templates.
* Added missing documentation of the ssh `version` command.
* link:https://code.google.com/p/gerrit/issues/detail?id=1602[Issue 1602]:
Corrected references to `refs/changes` in the access control documentation.
* Various minor grammatical and formatting corrections.
* Manual pages can be optionally created/installed for core gerrit ssh commands.
Developer And Maintainer Documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Updated the Maven plugin installation instructions for Eclipse 3.7 (Indigo).
* Improved the release documentation.
* The release notes are now made when a release is created by running the `tools/release.sh` script.