Update Gerrit 2.5 release notes
Describe the recently merged changes in the Gerrit 2.5 release notes. Change-Id: I8eb902e17068688f1787b4b9be52927a86f05774 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
		@@ -298,6 +298,8 @@ a successor commit is pushed for one of the projects, the resulting
 | 
			
		||||
successor change was wrongly listing both changes in the 'Depends On'
 | 
			
		||||
section. Now only the predecessor change of the own project is listed.
 | 
			
		||||
 | 
			
		||||
* Highlight dependencies to abandoned changes by red background
 | 
			
		||||
 | 
			
		||||
* link:http://code.google.com/p/gerrit/issues/detail?id=1383[issue 1383]:
 | 
			
		||||
  Display the approval table on the PublishCommentsScreen.
 | 
			
		||||
+
 | 
			
		||||
@@ -408,6 +410,19 @@ GitWeb).
 | 
			
		||||
A link was added next to the "Reviewed" checkbox that marks the current
 | 
			
		||||
patch as reviewed and goes to the next unreviewed patch.
 | 
			
		||||
 | 
			
		||||
* Add key commands to mark a patch as reviewed
 | 
			
		||||
+
 | 
			
		||||
Add key commands
 | 
			
		||||
+
 | 
			
		||||
. to toggle the reviewed flag for a patch ('m')
 | 
			
		||||
+
 | 
			
		||||
and
 | 
			
		||||
+
 | 
			
		||||
. to mark the patch as reviewed and navigate to the next unreviewed
 | 
			
		||||
patch ('M').
 | 
			
		||||
 | 
			
		||||
* Use download icons instead of the `Download` text links
 | 
			
		||||
 | 
			
		||||
User Dashboard
 | 
			
		||||
^^^^^^^^^^^^^^
 | 
			
		||||
* Support for link:../Documentation/user-custom-dashboards.html[custom
 | 
			
		||||
@@ -491,6 +506,13 @@ the NotFoundScreen after sign in.
 | 
			
		||||
Instead of linking from a user name to the user's dashboards, link to
 | 
			
		||||
a search for changes owned by that user.
 | 
			
		||||
 | 
			
		||||
* link:../Documentation/config-gerrit.html#gerrit.reportBugUrl[Allow
 | 
			
		||||
  configuring the `Report Bug` URL]
 | 
			
		||||
+
 | 
			
		||||
Let site administrators direct users to their own ticket queue, as for
 | 
			
		||||
many servers most of the reported bugs are small internal problems like
 | 
			
		||||
asking for a repository to be created or updating group memberships.
 | 
			
		||||
 | 
			
		||||
* On project creation allow choosing the parent project from a popup
 | 
			
		||||
+
 | 
			
		||||
In the create project UI a user can now browse all projects and select
 | 
			
		||||
@@ -507,6 +529,18 @@ This makes users aware of open changes when deleting a branch.
 | 
			
		||||
This allows to see the branches of the `All-Projects` project in the
 | 
			
		||||
web UI.
 | 
			
		||||
 | 
			
		||||
* Move the project listing menu items to a new top-level item
 | 
			
		||||
+
 | 
			
		||||
Finding the project listing was very opaque to end users. Nobody
 | 
			
		||||
expected to look under `Admin` and furthermore, anonymous users were
 | 
			
		||||
unable to find that link at all.
 | 
			
		||||
+
 | 
			
		||||
Introduced a new top-level `Projects` menu that has `List` in it to
 | 
			
		||||
take you to the project listing.
 | 
			
		||||
+
 | 
			
		||||
In addition the `Create new project` link from the top of that listing
 | 
			
		||||
was moved to this new menu.
 | 
			
		||||
 | 
			
		||||
* Move form for group creation to own screen
 | 
			
		||||
+
 | 
			
		||||
Move the form for the group creation from the GroupListScreen to an
 | 
			
		||||
@@ -514,6 +548,19 @@ own new CreateGroupScreen and add a link to this screen at the
 | 
			
		||||
beginning of the GroupListScreen. The link to the CreateGroupScreen is
 | 
			
		||||
only visible if the user has the permission to create new groups.
 | 
			
		||||
 | 
			
		||||
* Drop the `Owners` column from the group list screen
 | 
			
		||||
+
 | 
			
		||||
The `Owners` column on the group list screen has been dropped in order
 | 
			
		||||
to link:#performance-issue-on-showing-group-list[speed up the loading
 | 
			
		||||
of the group list screen].
 | 
			
		||||
 | 
			
		||||
* Drop the `Group Type` column from the group list screen
 | 
			
		||||
+
 | 
			
		||||
Since link:#migrate-ldap-groups[the LDAP group type was removed] there
 | 
			
		||||
is no need to display the group type on the group list screen anymore.
 | 
			
		||||
There are only 3 `SYSTEM` groups using well known names, and everything
 | 
			
		||||
else has the type `INTERNAL`.
 | 
			
		||||
 | 
			
		||||
* When adding a user to a group create an account for the user if needed
 | 
			
		||||
+
 | 
			
		||||
Trying to add a user to a group that doesn't have an account fails with
 | 
			
		||||
@@ -737,6 +784,8 @@ and how to release Gerrit subprojects.
 | 
			
		||||
 | 
			
		||||
Other
 | 
			
		||||
^^^^^
 | 
			
		||||
* Describe link:../Documentation/refs-notes-review.html[
 | 
			
		||||
  `refs/notes/review` and its contents]
 | 
			
		||||
 | 
			
		||||
* Specify output file for curl commands in documentation
 | 
			
		||||
+
 | 
			
		||||
@@ -757,6 +806,8 @@ command.
 | 
			
		||||
Add documentation of hook config for `change-restored`, `ref-updated`
 | 
			
		||||
and `cla-signed` hooks.
 | 
			
		||||
 | 
			
		||||
* Document that the commit message hook file should be executable
 | 
			
		||||
 | 
			
		||||
* Mention that also MySQL supports replication, not just Postgres
 | 
			
		||||
 | 
			
		||||
* Make sorting of release notes consistent so that the release notes
 | 
			
		||||
@@ -943,6 +994,7 @@ Example setting for link:../Documentation/config-gerrit.html#auth.type[
 | 
			
		||||
With this configuration Git over HTTP protocol will be authenticated using
 | 
			
		||||
`HTTP-BasicAuth` and credentials checked on LDAP.
 | 
			
		||||
 | 
			
		||||
[[migrate-ldap-groups]]
 | 
			
		||||
* Migrate existing internal LDAP groups
 | 
			
		||||
+
 | 
			
		||||
Previously, LDAP groups were mirrored in the AccountGroup table and
 | 
			
		||||
@@ -1109,6 +1161,78 @@ plugins.
 | 
			
		||||
 | 
			
		||||
Performance
 | 
			
		||||
~~~~~~~~~~~
 | 
			
		||||
[[performance-issue-on-showing-group-list]]
 | 
			
		||||
* Fix performance issues on showing the list of groups in the Gerrit
 | 
			
		||||
  WebUI
 | 
			
		||||
+
 | 
			
		||||
Loading `Admin` > `Groups` on large servers was very slow. The entire
 | 
			
		||||
group membership database was downloaded to the browser when showing
 | 
			
		||||
just the list of groups.
 | 
			
		||||
+
 | 
			
		||||
Now the amount of data that needs to be downloaded to the browser is
 | 
			
		||||
reduced by using the more leightweight `AccountGroup` type instead of
 | 
			
		||||
the `GroupDetail` type when showing the groups in a list format. As a
 | 
			
		||||
consequence the `Owners` column that showed the name of the owner group
 | 
			
		||||
had been dropped.
 | 
			
		||||
 | 
			
		||||
* Add a fast path to avoid checking every commit on push
 | 
			
		||||
+
 | 
			
		||||
If a user can forge author, committer and gerrit server identity, and
 | 
			
		||||
can upload merges, don't bother checking the commit history of what is
 | 
			
		||||
being uploaded. This can save time on servers that are trying to accept
 | 
			
		||||
a large project import using the push permission.
 | 
			
		||||
 | 
			
		||||
* Improve performance of `ReceiveCommits` by reducing `RevWalk` load
 | 
			
		||||
+
 | 
			
		||||
JGit RevWalk does not perform well when a large number of objects are
 | 
			
		||||
added to the start set by `markStart` or `markUninteresting`. Avoid
 | 
			
		||||
putting existing `refs/changes/` or `refs/tags/` into the `RevWalk` and
 | 
			
		||||
instead use only the `refs/heads` namespace and the name of the branch
 | 
			
		||||
used in the `refs/for/` push line.
 | 
			
		||||
+
 | 
			
		||||
Catch existing changes by looking for their exact commit SHA-1, rather
 | 
			
		||||
than complete ancestory. This should have roughly the same outcome for
 | 
			
		||||
anyone pushing a new commit on top of an existing open change, but
 | 
			
		||||
with lower computional cost at the server.
 | 
			
		||||
 | 
			
		||||
* Lookup changes in parallel during `ReceiveCommits`
 | 
			
		||||
+
 | 
			
		||||
If the database has high query latency, the loop that locates existing
 | 
			
		||||
changes on the destination branch given Change-Id can be slow. Start
 | 
			
		||||
all of the queries as commits are discovered, but don't block on
 | 
			
		||||
results until all queries were started.
 | 
			
		||||
+
 | 
			
		||||
If the database can build the `ResultSet` in the background, this may
 | 
			
		||||
hide some of the query latency by allowing the queries to overlap when
 | 
			
		||||
more than one lookup must be performed for a push.
 | 
			
		||||
 | 
			
		||||
* Perform change update on multiple threads
 | 
			
		||||
+
 | 
			
		||||
When multiple changes need to be created or updated for a single push
 | 
			
		||||
operation they are now inserted into the database by parallel threads,
 | 
			
		||||
up to the maximum allowed thread count. The current thread is used
 | 
			
		||||
when the thread pool is already fully in use, falling back to the
 | 
			
		||||
prior behavior where each concurrent push operation can do its own
 | 
			
		||||
concurrent database update. The thread pool exists to reduce latency
 | 
			
		||||
so long as there are sufficient threads available.
 | 
			
		||||
+
 | 
			
		||||
This helps push times on databases that are high latency, such as
 | 
			
		||||
database servers that are running on a different machine from the
 | 
			
		||||
Gerrit server itself, e.g. gerrit.googlesource.com.
 | 
			
		||||
+
 | 
			
		||||
The new thread pool is
 | 
			
		||||
link:../Documentation/config-gerrit.html#receive.changeUpdateThreads[
 | 
			
		||||
disabled by default], limiting the overhead to servers that have good
 | 
			
		||||
latency with their database, such as using in-process H2 database, or
 | 
			
		||||
a MySQL or PostgreSQL on the same host.
 | 
			
		||||
 | 
			
		||||
* Use `BatchRefUpdate` to execute reference changes
 | 
			
		||||
+
 | 
			
		||||
Some storage backends for JGit are able to update multiple references
 | 
			
		||||
in a single pass efficiently. Take advantage of this by pushing
 | 
			
		||||
any normal reference updates (such as direct push or branch create)
 | 
			
		||||
into a single `BatchRefUpdate` object.
 | 
			
		||||
 | 
			
		||||
* Assume labels are correct in ListChanges
 | 
			
		||||
+
 | 
			
		||||
To reduce end-user latency when displaying changes in a search result
 | 
			
		||||
@@ -1284,6 +1408,14 @@ If a collapsed patch set panel was expanded and re-closed it's patch
 | 
			
		||||
list wasn't updated anymore when the selection for `Old Version History`
 | 
			
		||||
was changed.
 | 
			
		||||
 | 
			
		||||
* link:http://code.google.com/p/gerrit/issues/detail?id=1523[issue 1523]:
 | 
			
		||||
  Update diff base to match old version history
 | 
			
		||||
+
 | 
			
		||||
When changing the diff base in the `Old Version History` on the change
 | 
			
		||||
screen and then entering the Side-By-Side view for a file, clicking on
 | 
			
		||||
the back button in the browser (reentering the change screen) was
 | 
			
		||||
causing the files to be wrongly compared with `Base` again.
 | 
			
		||||
 | 
			
		||||
* Don't NPE if current patch set is not available
 | 
			
		||||
+
 | 
			
		||||
Broken changes may have the current patch set field incorrectly
 | 
			
		||||
@@ -1296,6 +1428,16 @@ claim the change is not reviewed.
 | 
			
		||||
Published and draft comments that are posted on deleted files were not
 | 
			
		||||
loaded and displayed.
 | 
			
		||||
 | 
			
		||||
* link:https://code.google.com/p/gerrit/issues/detail?id=735[issue 735]:
 | 
			
		||||
  Fix `ArrayIndexOutOfBoundsException` on navigation to next/previous
 | 
			
		||||
  patch
 | 
			
		||||
+
 | 
			
		||||
An `ArrayIndexOutOfBoundsException` could occur when navigating from
 | 
			
		||||
one patch to the next/previous patch if the next/previous patch was a
 | 
			
		||||
newly added binary file. The exception occurred if the user was not
 | 
			
		||||
signed in or if the user was signed in and had `Syntax Coloring` in the
 | 
			
		||||
preferences enabled.
 | 
			
		||||
 | 
			
		||||
* Only set reviewed attribute on open changes
 | 
			
		||||
+
 | 
			
		||||
If a change is merged or abandoned, do not consider the reviewed
 | 
			
		||||
@@ -1368,6 +1510,14 @@ STARTTLS enabled, aka. `sendemail.smtpEncryption = tls`.
 | 
			
		||||
 | 
			
		||||
SSH
 | 
			
		||||
~~~
 | 
			
		||||
* Fix reject message if bypassing code review is not allowed
 | 
			
		||||
+
 | 
			
		||||
If a user is not allowed to bypass code review, but tries to push a
 | 
			
		||||
commit directly, Gerrit rejected this push with the error message
 | 
			
		||||
"can not update the reference as a fast forward". This message was
 | 
			
		||||
confusing to the user since the push only failed due to missing
 | 
			
		||||
access rights. Go back to the old message that says "prohibited
 | 
			
		||||
by Gerrit".
 | 
			
		||||
 | 
			
		||||
* link:http://code.google.com/p/gerrit/issues/detail?id=1437[issue 1437]:
 | 
			
		||||
  Send event to stream when draft change is published
 | 
			
		||||
@@ -1506,6 +1656,8 @@ trace when a program stops with a Die exception.
 | 
			
		||||
 | 
			
		||||
* Do not automatically add author/committer as reviewer to drafts
 | 
			
		||||
 | 
			
		||||
* Do not automatically add reviewers from footer lines to drafts
 | 
			
		||||
 | 
			
		||||
* Fix NullPointerException in MergeOp
 | 
			
		||||
+
 | 
			
		||||
The body of the commit object may have been discarded earlier to
 | 
			
		||||
@@ -1514,6 +1666,27 @@ save memory, so ensure it exists before asking for the author.
 | 
			
		||||
* link:http://code.google.com/p/gerrit/issues/detail?id=1396[issue 1396]:
 | 
			
		||||
  Initialize the submodule commit message buffer
 | 
			
		||||
 | 
			
		||||
* Fix file name matching in `commit_delta` to perform substring
 | 
			
		||||
  matching
 | 
			
		||||
+
 | 
			
		||||
The `commit_delta` predicate was matching the entire file name against
 | 
			
		||||
the given regular expression while other predicates (`commit_edits`,
 | 
			
		||||
`commit_message_matches`) performed substring matching. It was
 | 
			
		||||
inconsistent that for `commit_delta` it was needed to write something
 | 
			
		||||
like:
 | 
			
		||||
+
 | 
			
		||||
----
 | 
			
		||||
  commit_delta('.*\.java')
 | 
			
		||||
----
 | 
			
		||||
+
 | 
			
		||||
to match all `*.java` files, while for `commit_edits` it was:
 | 
			
		||||
+
 | 
			
		||||
----
 | 
			
		||||
  commit_edits('\.java$', '...')
 | 
			
		||||
----
 | 
			
		||||
+
 | 
			
		||||
to match the same set of (Java) files.
 | 
			
		||||
 | 
			
		||||
* Create index for submodule subscriptions on site upgrade
 | 
			
		||||
 | 
			
		||||
* Fix URL to Jetty XML DTDs so they can be properly validated
 | 
			
		||||
@@ -1522,6 +1695,31 @@ save memory, so ensure it exists before asking for the author.
 | 
			
		||||
 | 
			
		||||
* Fix possible synchronization issue in TaskThunk
 | 
			
		||||
 | 
			
		||||
* Fix possible NPEs in `ReplaceRequest.cmd` usage in `ReceiveCommits`
 | 
			
		||||
+
 | 
			
		||||
The `cmd` field is populated by `validate(boolean)`. If this method
 | 
			
		||||
fails, results on some `ReplaceRequests` may not be set. Guard the
 | 
			
		||||
attempt to access the field with a null check.
 | 
			
		||||
 | 
			
		||||
* Match no labels if current patch set is not available
 | 
			
		||||
+
 | 
			
		||||
If the current patch set cannot be loaded from `ChangeData`, assume no
 | 
			
		||||
label information. This works around an NullPointerException inside of
 | 
			
		||||
`ChangeControl` where the `PatchSet` is otherwise required.
 | 
			
		||||
 | 
			
		||||
* Create new patch set references before database records
 | 
			
		||||
+
 | 
			
		||||
Ensure the commit used by a new change or replacement patch set
 | 
			
		||||
always exists in the Git repository by writing the reference first
 | 
			
		||||
as part of the overall `BatchRefUpdate`, then inserting the database
 | 
			
		||||
records if all of the references stored successfully.
 | 
			
		||||
 | 
			
		||||
* Fix rebase patch set and revert change to update Git first
 | 
			
		||||
+
 | 
			
		||||
Update the Git reference before writing to the database. This way the
 | 
			
		||||
repository cannot be corrupted if the server goes down between the two
 | 
			
		||||
actions.
 | 
			
		||||
 | 
			
		||||
* Make sure we use only one type of NoteMerger for review notes creation
 | 
			
		||||
 | 
			
		||||
* Fix generation of owner group in GroupDetail
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user