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>
diff --git a/ReleaseNotes/ReleaseNotes-2.5.txt b/ReleaseNotes/ReleaseNotes-2.5.txt
index 3065b63..53369b0 100644
--- a/ReleaseNotes/ReleaseNotes-2.5.txt
+++ b/ReleaseNotes/ReleaseNotes-2.5.txt
@@ -298,6 +298,8 @@
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 @@
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 @@
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 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
* 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 @@
* 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 @@
* 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