Create release notes for Gerrit 3.10 Change-Id: I6c5a7439b6cbbd342eb8f627162d15e30ca88e87
diff --git a/pages/site/releases/3.10.md b/pages/site/releases/3.10.md new file mode 100644 index 0000000..4eadc21 --- /dev/null +++ b/pages/site/releases/3.10.md
@@ -0,0 +1,422 @@ +--- +title: "Gerrit 3.10.x" +permalink: 3.10.html +hide_sidebar: true +hide_navtoggle: true +toc: true +--- + +## Release highlights + +### Rebase merge commits +It's now possible to rebase merge commits directly from the UI. + +### Further improve Suggest Fixes +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](https://gerrit-review.googlesource.com/Documentation/user-suggest-edits.html) + +### Import changes from other servers +Imported projects from other servers is now fully supported, including also +queries by change number on Lucene. + +### List enabled features/experiments via REST API +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](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#list-experiments) + +### Index management is now more accessible +A number of rest endpoints have been added to simplify management and +observability of Gerrit indexes. It's now possible to: +- [List + indexes](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#list-indexes) +- [Get a + index](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#_get_index), + along side information on it's version. +- [Create + snapshots](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#snapshot-index) + of the index. These can then be used as backups of the index. +- [Re-index an index + version](https://gerrit-review.googlesource.com/Documentation/rest-api-config.html#_reindex_an_index_version). + It is also possible to specify whether to re-use up-to-date index documents. + +### Less email notifications +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](https://gerrit-review.googlesource.com/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. + +### Support project~changeNumber when querying for changes +So far querying changes using the `change:` predicate did not +allow to use the `project~changeNumber` format. However, since +[Change 387794](https://gerrit-review.googlesource.com/c/gerrit/+/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](https://issues.gerritcodereview.com/issues/313935024) + +### Configurable H2 cache pruning +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](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#cachePruning). + +### Improved H2 Cache performances +Indexes have been added to the H2 cache databases, greatly improving performance +of persistent caches, especially pruning and building bloom filters. + +### Allow fixes in Human comments via Rest API + +Robot Comments have been officially deprecated for some time and the [checks API +framework](https://gerrit-review.googlesource.com/Documentation/pg-plugin-checks-api.html) +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](https://review.gerrithub.io/Documentation/rest-api-changes.html#apply-stored-fix) +endpoint. +This is done by adding an extra field `fix_suggestions` in +[CommentInfo](https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#comment-info) +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 + ``` + +### Native log deletion +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](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html) + +### Support for secondary emails +It's now possible to update the commit message with a secondary email, both in +the UI and via Rest API. + +### Update author and committer from the UI +It's now possible to update the author and the committer identities directly in +the UI. + +## Important Notes +* [Change 394841](https://gerrit-review.googlesource.com/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. + +### Submit Requirement Changes +* [Change 396517](https://gerrit-review.googlesource.com/396517) allow a + max_count = 50 for label predicates for SRs. +* [Issue 325070428](https://crbug.com/gerrit/325070428) Fixed PostReview to not + execute the submit rules twice when the SUBMIT_REQUIREMENTS or SUBMITTABLE + options were requested + +### Schema and index changes + +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. + +### Online index schema upgrade from 3.9 +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. + +### Offline upgrade +- 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](https://gerrit-documentation.storage.googleapis.com/Documentation/3.9.0/pgm-reindex.html) + command for other options. + +### Downgrade + Downgrade to any Gerrit v3.9 release is possible, but requires the following +manual steps: + +1. Shutdown all migrated Gerrit servers +2. Update the gerrit.war and plugins to the previous v3.7/v3.8 version +3. Run offline change reindexing using the previous gerrit.war version + +```sh + java -jar gerrit.war init -d site_path --batch + java -jar gerrit.war reindex -d site_path +``` + +4. Startup Gerrit server + +### Native packaging +Updated almalinux to 9.3. + +### Breaking Changes + +* [Change 409738](https://gerrit-review.googlesource.com/409738) Added + validation for label copy conditions +* [Change 407417](https://gerrit-review.googlesource.com/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](https://gerrit-review.googlesource.com/404717 )Deprecate review + command without project argument +* [Issue 325070428](https://crbug.com/gerrit/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](https://gerrit-review.googlesource.com/400821) + AutoMerger#lookupFromGitOrMergeInMemory: Remove mergeStrategy parameter + + This only impacts plugins. +* [Change 401198](https://gerrit-review.googlesource.com/401198) DiffOperations: + Remove unused diffOptions parameter from load methods + + Potentially breaking change as it impacts plugins that use the DiffOperations + interface. + +* [Deprecated robot-comments](#deprecated-robot-comments) + +* [Change 401977](https://gerrit-review.googlesource.com/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](https://gerrit-review.googlesource.com/396859) Disable + dropdown items for downlading files >50 MB + + The 50MB limit is hardcoded and cannot be changed via configuration. + +### Other changes +* [Change 409729](https://gerrit-review.googlesource.com/409729) Added REST + endpoint to get the commit message of a change +* [Change 391494](https://gerrit-review.googlesource.com/391494) committer and + author identities can be updated in change edit mode via REST +* [Change 394795](https://gerrit-review.googlesource.com/394795) Remove + ActionType, ChangeActions and RevisionActions enums forwarded as properties + from ChangeActionsPluginApi implementation +* [Issue 240676565](https://crbug.com/gerrit/240676565) Reviewer updates for + reviewers by email are returned in change details +* [Issue 326096919](https://crbug.com/gerrit/326096919) Fixed internal server + error when posting a review with a ReviewerInput that didn't set the + 'reviewer' field. +* [Change 412617](https://gerrit-review.googlesource.com/412617) Fix bug that + allows inserting a broken pack +* [Change 413077](https://gerrit-review.googlesource.com/413077) Plugins can use + VersionedConfigFile to read/write a config file stored in git +* [Change 399657](https://gerrit-review.googlesource.com/399657) Fix WorkQueue + bug to ensure reliable execution of scheduled tasks +* [Change 392460](https://gerrit-review.googlesource.com/392460) Added commit + sha and change number to "commit already exists (in change)" Push Rejected + response. +* [Change 399237](https://gerrit-review.googlesource.com/399237) Improved + WorkQueue task thread names +* [Change 412438](https://gerrit-review.googlesource.com/412438) Fix behavior of + rules.enable config to disable prolog + +## Other Changes related to Multi-Site +* [Change 399618](https://gerrit-review.googlesource.com/399618) Populate + project-created event with instanceId +* [Change 398918](https://gerrit-review.googlesource.com/398918) Don't fire + project-created events not produced locally +* [Change 417000](https://gerrit-review.googlesource.com/417000) Allow to + reindex changes without notifying listeners +* [Change 413257](https://gerrit-review.googlesource.com/413257) Allow listing + tags in descending order + +## Plugin changes +- codemirror-editor updated to: d4f9247d3efb6a0e461af701986235511d05b7e3 +- commit-message-length-validator updated to: c38e0a9d36767092b20558b28eff7f546c6d754c +- delete-project updated to: ea78b4b817151f47f6e3aca7bf1e90f14518caa1 +- download-commands updated to: 978e803c87416eb9e96236446b15b167017c0385 +- gitiles updated to: 4e8bd706e87eb11e3cfe2bfa9bbcb29020f39482 +- hooks updated to: f975f914312b258f84957d19f96014c3edd12644 +- plugin-manager updated to: cdd2d2d69666a70a16ac02bacf8e7fbbf4ca9979 +- replication updated to: 012f04240eafe6dfa21fd94e012e97498881c621 +- reviewnotes updated to: 18c867b6a957b3ddeb7a9e9789819fc60bdcd99a +- singleusergroup updated to: 4bee62cbbc21979b841843dd5faaf79470a35966 +- webhooks updated to: 2e5ec3b3bcf5e7ba50edba9eca3c15c8057ad6c2 + +## JGit changes +Bump JGit version to c0b415f. You can retrieve the full list of changes + with: + + ```shell + git log --no-merges --abbrev-commit --format=oneline bf70c9f4c2e35548bc6d7853284b2c4d5e1d29ef...c0b415fb028b4c1f29b6df749323bbb11599495d + ``` + +Notable changes are: + * 81d64c913 Cache refreshed loose ref dirs in SnapshottingRefDirectory + * 72fa0a53e TreeRevFilter: correct changedPathFilter usage for multi-paths inclusion + * 9e841dd4a PathFilterGroup: implement getPathsBestEffort() + * c1eba8abe DfsPackFile: get commitGraph.readChangePaths from repo config + * 21f7fdff7 Introduce core.trustLooseRefStat config + * 5c94dcc56 DfsObjDatabase: Let object database instantiate DfsPackFiles + * 049749558 DfsPackFile: Abstract the bitmap loading to support other backends + * 3e624306d Allow to discover bitmap on disk created after the packfile + * 15363e4c3 PackWriterBitmapPreparer: Do not generate bitmaps for excessive branch tips. + * c64664925 CherryPick: add ability to customise cherry-picked commit message + * ba5adc4ce Add tests for handling pack files removal during fetch + * ee4443091 PackWriterBitmapPreparer: Set limit on excessive branch count + * 788487316 BasePackFetchConnection: Skip object/ref lookups if local repo is empty + * faa50c683 LooseObjects: Use File#exists when possible + * b2abab271 DfsReader: give subclasses visiblity over the pack bitmap index + * e25bf9573 PackBitmapIndex/StoredBitmap: Expose size and counts + * 52c18ae15 PackWriter/Statistics: Remove the bitmapt hit stats + * ab132937f FooterLine: Protect from ill-formed message + * 340cc787a Improve footer parsing to allow multiline footers. + * aab75dba7 BitmapIndex: Add interface to track bitmaps found (or not) + * 4f18c5095 Optimize RefDirectory.getRefsByPrefix(String...) + * b761a0fc3 Use try-with-resource to ensure UploadPack is closed + * 3937300f3 Optimise Git protocol v2 `ref-prefix` scanning + * 5f563e386 UploadPack: use want-refs as advertised set in fetch v2 + * 093bde518 BasePackFetchConnection: Avoid full clone with useNegotiationTip + * 8ca649c16 Generate SBOMs using cyclonedx maven plugin + * f91afe5f5 DfsPackFile: Do not attempt to read stream if pack doesn't have it + * 9323b430b PackObjectSizeIndexLoader: Log wrong bytes on exception + * 0f078da4e FileBasedConfig: in-process synchronization for load() and save() + * cb46ee354 FileBasedConfig: ensure correct snapshot if no file + * f93ccb7fd RebaseCommand: return correct status on stash apply conflicts + * 42917767f UploadPack: Delay freeing refs in sendPack() + + +## Documentation changes +* [Issue 312899496](https://gerrit-review.googlesource.com/q/bug:312899496) + Reworked the project config documentation page +* [Issue 312890385](https://gerrit-review.googlesource.com/q/bug:312890385) + Improved the submit requirements documentation +* [Change 395681](https://gerrit-review.googlesource.com/395681) Update + instructions about filing security issues +* [Change 395997](https://gerrit-review.googlesource.com/395997) Update + documentation for the ChangeInfo. +* [Change 398418](https://gerrit-review.googlesource.com/398418) Document Byte + Buddy issue with running mock tests +* [Change 399697](https://gerrit-review.googlesource.com/399697) + submit-requirements.txt: Document how to restore SRs via REST +* [Issue 313411537](https://gerrit-review.googlesource.com/q/bug:313411537) + Improve docs around submit requirements and access rights +* [Change 400398](https://gerrit-review.googlesource.com/400398) SR + documentation: Mention that label function should be set to NoBlock +* [Issue 320820903](https://gerrit-review.googlesource.com/q/bug:320820903) + Update docs on Project ownership. +* [Change 410725](https://gerrit-review.googlesource.com/410725) Document + behaviour of RetryScheduler + +## Other dependency changes + +* [Change 389854](https://gerrit-review.googlesource.com/389854) Update protobuf + version to 21.7 +* [Change 408697](https://gerrit-review.googlesource.com/408697) update Soy + library +* [Change 387360](https://gerrit-review.googlesource.com/387360) Update Bazel + version to 7.0.0 +* [Change 391534](https://gerrit-review.googlesource.com/391534) Bazel: Add + support for JDK 21 +* [Issue 319778767,](https://crbug.com/gerrit/319778767,) Update + commons-compress to 1.25.0 +* [Change 399557](https://gerrit-review.googlesource.com/399557) Update reload4j + to 1.2.25 +* [Issue 317782004](https://crbug.com/gerrit/317782004) Update httpcore to + 4.4.16 +* [Issue 317790747](https://crbug.com/gerrit/317790747) Update auto-value to + 1.10.4 +* [Issue 317782000](https://crbug.com/gerrit/317782000) Update httpclient to + 4.5.14 +* [Change 400697](https://gerrit-review.googlesource.com/400697) Upgrade yarn + deps (January 2024) +* [Change 412497](https://gerrit-review.googlesource.com/412497) Update Truth to + 1.4.2. + +## Frontend changes +* [Issue 315957653](https://crbug.com/gerrit/315957653) account-chip hover-card + shows correct email for author and committer +* [Change 397457](https://gerrit-review.googlesource.com/397457) Add syntax + highlight support for cjs, cts, and mts file +* [Change 400824](https://gerrit-review.googlesource.com/400824) Fix scrolling + to diff rows covered by the header UI +* [Change 402837](https://gerrit-review.googlesource.com/402837) Revert CLs +should still say Ready To Submit UI supports updating commit message using a +registered secondary email +* [Change 407157](https://gerrit-review.googlesource.com/407157) Add plugin + endpoint for account links +* [Change 407660](https://gerrit-review.googlesource.com/407660) Turn Reply + button into Sign in button when logged out +* [Change 407820](https://gerrit-review.googlesource.com/407820) Improve + reviewer autocomplete on restricted refs/branches +* [Change 407823](https://gerrit-review.googlesource.com/407823) Show checks + findings on file list +* [Change 407825](https://gerrit-review.googlesource.com/407825) Prevent pencil + wrapping by itself in change metadata +* [Issue 40015337](https://crbug.com/gerrit/40015337) Fix browser BACK button + when going to plugin pages +* [Change 416260](https://gerrit-review.googlesource.com/416260) Diff processor + was simplified. It does not split up into multiple async chunks of work + anymore. +* [Change 396859](https://gerrit-review.googlesource.com/396859) Disable + dropdown items for downlading files >50 MB +* [Change 401384](https://gerrit-review.googlesource.com/401384) Stop + considering combo key after first hit +* [Change 403277](https://gerrit-review.googlesource.com/403277) Only show the + "Show Blame" button if blame is enabled. +* [Change 416001](https://gerrit-review.googlesource.com/416001) Add a + `replysent` plugin event +* [Change 411358](https://gerrit-review.googlesource.com/411358) Fix revision + actions constantly showing as "loading" when not signed in +* [Issue 40004507](https://crbug.com/gerrit/40004507) Added support for + filtering branches/tags in plugins. +* [Issue 330574510](https://crbug.com/gerrit/330574510) Fix issue with + gr-file-list-header not working correctly after writing a comment +* [Change 394446](https://gerrit-review.googlesource.com/394446) fix tabbing for + non-emojis starting with colon +* [Change 395461](https://gerrit-review.googlesource.com/395461) Fix emoji + selector for all keys +* [Change 399797](https://gerrit-review.googlesource.com/399797) Enable + highlighting for Qt code components + \ No newline at end of file