Download: 3.10.0-rc2
Documentation: 3.10.0-rc2
It's now possible to rebase merge commits directly from the UI.
It's now possible to have plugin generated suggested fixes directly in the UI. This opens the door for AI integration in the review process with Gerrit Code Review.
Please see more details here
Imported projects from other servers is now fully supported, including also queries by change number on Lucene.
It's now possible to list all experiments currently enabled on a Gerrit server by hitting the config/server/experiments
endpoint. Please see more details here
A number of rest endpoints have been added to simplify management and observability of Gerrit indexes. It's now possible to:
Attention has been put on reducing the number of email notifications that Gerrit users receive even when no actions need to be taken.
Gerrit no longer send emails to everyone when additional reviewers or CCs are added. Please note, this is also a breaking change, see more details on the change, Change 400822.
Only add owner and uploader to the attention set if the label is copied over to the latest patchset, avoiding emails for votes on older patchsets that don't affect the latest one. The reason for the user being in the attention set is also automatically updated.
Stop always cc'ing all “reviewers by email”, as otherwise they receive more emails than intended.
So far querying changes using the change:
predicate did not allow to use the project~changeNumber
format. However, since Change 387794 this is the default ID format returned in the ChangeInfo. Being able to use it directly for further queries would be advantageous.
i.e. https://gerrit-review.googlesource.com/q/change:gerrit~399319
This reinforces the concept that project~changeNumber
should be the Id to use when trying to unique identify changes. This should be preferred to project~branch~changeId
as this can theoretically contain duplicates, as specified in Issue 313935024
Schedule of cache pruning of H2 caches is now configurable. This means that it doesn't necessarily need to run on startup, therefore improving Gerrit startup times. Find more information in the docs.
Indexes have been added to the H2 cache databases, greatly improving performance of persistent caches, especially pruning and building bloom filters.
Robot Comments have been officially deprecated for some time and the checks API framework is recommended since Gerrit 3.6. This is great as it provides a way of greatly reducing the size of the repository. However, unlike fixes suggested in Robot-Comments, Human Suggested fixes could not be applied programmatically, until now.
Gerrit 3.10 introduces a way of suggesting fixes that could then be programmatically applied with the the Apply Stored Fixes endpoint. This is done by adding an extra field fix_suggestions
in CommentInfo that will be stored separately on NoteDB.
We don't consider this a breaking change as the comment info payload is serialized as JSON and unknown fields should be ignore when parsing such data format. To be extra cautious, this field is only written if the experiment is enabled.
The experiment can be enabled in gerrit.config
like so
[experiments] enabled = GerritBackendFeature__allow_fix_suggestions_in_comments
So far Gerrit admins have always needed to rely on external tools to delete old logs files, now this feature is brought within Gerrit itself and made easily configurable. See more details under log.timeToKeep
It's now possible to update the commit message with a secondary email, both in the UI and via Rest API.
It's now possible to update the author and the committer identities directly in the UI.
Change 394841: The commit-msg hook now operates as a no-op for temporary commits, which are identified by a lowercase word followed by an exclamation mark (e.g., fixup!, squash!).
Configure gerrit.createChangeId to ‘always’ to force creation on these cases.
Change 394841 Introduce server_id in change_notes cache and update its version number.
This means that if you're using the change_notes cache, the file needs to be deleted. It will be automatically regenerated.
The accounts
index version has been increased to version 14. The changes
index version has been increased to version 86. The groups
index version has been increased to version 11. The projects
index version has been increased to version 9.
The schema version hasn't been updated, however, because Lucen was bumped 2 versions from 7.x to 9.8 the upgrade is supported only from Gerrit v3.9, as Lucene libraries do not support more than one version upgrade at a time.
By default, if you’re upgrading from 3.9, the index is automatically rebuilt upon Gerrit startup after the upgrade.
If you’re upgrading from 3.8 or an earlier version, you must use the Offline upgrade steps below, because of the Lucene upgrade mentioned above.
Download the new gerrit.war
Stop Gerrit
Ensure all installed plugins are compatible with the new API
Run init java -jar gerrit.war init -d site_path --batch
Reindex if you are upgrading from a 3.9 versions you don’t need to run reindex (see Online index schema upgrade from 3.9 above). If you still want to you will need to run reindex:
java -jar gerrit.war reindex -d site_path
If you are upgrading from a 3.8 or an earlier version, you must run a reindex of all indexes:
java -jar gerrit.war reindex -d site_path
See the reindex command for other options.
Downgrade to any Gerrit v3.9 release is possible, but requires the following manual steps:
java -jar gerrit.war init -d site_path --batch java -jar gerrit.war reindex -d site_path
Updated almalinux to 9.3.
Change 409738: Added validation for label copy conditions
Change 407417: Branch links in change metadata now ignore status
This means that clicking the branch link in the change detail section returns all changes associated with that branch, rather than the ones matching the change's status. This will return a much greater number of changes than before, potentially impacting plugin/workflow performance.
Change 404717: Deprecate review command without project argument
Issue 325070428 Added new current_revision_number
field to ChangeInfo that contains the current patch set number
If the consumer is “well designed” adding one extra field in the JSON response should not break any existing behaviour. However, as it‘s a change in the response payload, we’re highlighting this as potentially breaking change.
Change 400821: AutoMerger#lookupFromGitOrMergeInMemory
: Remove mergeStrategy parameter
This only impacts plugins.
Change 401198 DiffOperations: Remove unused diffOptions parameter from load methods
Potentially breaking change as it impacts plugins that use the DiffOperations interface.
Change 401977: Use RetryScheduler
with backoff when server returns 429
Gerrit UI will now automatically retry the Rest API calls to the backend when the HTTP status code is 429. This could lead to duplicated requests sent to the backend and consequently higher load on the system.
Change 396859: Disable dropdown items for downlading files >50 MB
The 50MB limit is hardcoded and cannot be changed via configuration.
Change 400622: PluginCommandModule
requires the plugin name in its constructor, hence all plugins that expose SSH commands need amending with an explicit constructor like the following:
class MySshModule extends PluginCommandModule { @Inject MySshModule(@PluginName String pluginName) { super(pluginName); } }
Change 409729: Added REST endpoint to get the commit message of a change
Change 391494: Committer and author identities can be updated in change edit mode via REST
Change 394795: Remove ActionType, ChangeActions and RevisionActions enums forwarded as properties from ChangeActionsPluginApi implementation
Issue 240676565: Reviewer updates for reviewers by email are returned in change details
Issue 326096919: Fixed internal server error when posting a review with a ReviewerInput that didn't set the reviewer
field
Change 412617: Fix bug that allows inserting a broken pack
Change 413077: Plugins can use VersionedConfigFile
to read/write a config file stored in git
Change 399657: Fix WorkQueue
bug to ensure reliable execution of scheduled tasks
Change 392460: Added commit sha and change number to “commit already exists (in change)” Push Rejected response.
Change 399237: Improved WorkQueue task thread names
Change 412438: Fix behavior of rules.enable config to disable prolog
Change 419157 Solves a latency regression related to CallerFinder
Change 399618: Populate project-created
event with instanceId
Change 398918: Don't fire project-created
events not produced locally
Change 417000: Allow to reindex changes without notifying listeners
Change 413257: Allow listing tags in descending order
Bump JGit version to c0b415f. You can retrieve the full list of changes with:
git log --no-merges --abbrev-commit --format=oneline bf70c9f4c2e35548bc6d7853284b2c4d5e1d29ef...c0b415fb028b4c1f29b6df749323bbb11599495d
Notable changes are:
ref-prefix
scanningIssue 321784734 Fix endless loop when using “is:watched” in project watches.
Previous setting up email notification with is:watched
predicate would create an infinite loop that would take a CPU offline.
Change 389854: Update protobuf version to 21.7
Change 408697: update Soy library
Change 387360: Update Bazel version to 7.0.0
Change 391534: Bazel: Add support for JDK 21
Issue 319778767,: Update commons-compress to 1.25.0
Change 399557: Update reload4j to 1.2.25
Issue 317782004: Update httpcore to 4.4.16
Issue 317790747: Update auto-value to 1.10.4
Issue 317782000: Update httpclient to 4.5.14
Change 400697: Upgrade yarn deps (January 2024)
Change 412497: Update Truth to 1.4.2.
Issue 315957653: account-chip hover-card shows correct email for author and committer
Change 397457: Add syntax highlight support for cjs, cts, and mts file
Change 400824: Fix scrolling to diff rows covered by the header UI
Change 402837: Revert CLs should still say Ready To Submit UI supports updating commit message using a registered secondary email
Change 407157: Add plugin endpoint for account links
Change 407660: Turn Reply button into Sign in button when logged out
Change 407820: Improve reviewer autocomplete on restricted refs/branches
Change 407823: Show checks findings on file list
Change 407825: Prevent pencil wrapping by itself in change metadata
Issue 40015337: Fix browser BACK button when going to plugin pages
Change 416260: Diff processor was simplified. It does not split up into multiple async chunks of work anymore.
Change 396859: Disable dropdown items for downlading files >50 MB
Change 401384: Stop considering combo key after first hit
Change 403277: Only show the Show Blame button if blame is enabled.
Change 416001: Add a replysent
plugin event
Change 411358: Fix revision actions constantly showing as “loading” when not signed in
Issue 40004507: Added support for filtering branches/tags in plugins
Issue 330574510: Fix issue with gr-file-list-header
not working correctly after writing a comment
Change 394446: fix tabbing for non-emojis starting with colon
Change 395461: Fix emoji selector for all keys
Change 399797: Enable highlighting for Qt code components