blob: 341f82d1ec3069a158bd22a2838ba27713fbdc5d [file] [log] [blame] [view]
---
title: "Gerrit 3.10.x"
permalink: 3.10.html
hide_sidebar: true
hide_navtoggle: true
toc: true
---
Download: **[3.10.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.10.1.war)**
| [3.10.0](https://gerrit-releases.storage.googleapis.com/gerrit-3.10.0.war)
Documentation: **[3.10.1](http://gerrit-documentation.storage.googleapis.com/Documentation/3.10.1/index.html)**
| [3.10.0](http://gerrit-documentation.storage.googleapis.com/Documentation/3.10.0/index.html)
## Release highlights
### Dropped support for Java 11
Java 11 is EOL since September 2023 and Gerrit already supports Java 17.
Support for building Gerrit with Java 11 has been dropped and the default
minimum version set to Java 17.0.5.
### 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.
### Allow specifying plugins load ordering using `plugins.loadPriority`
Currently there is no way of specifying an order in which plugins should be
loaded, other than alphabetical. However, in some complex Gerrit deployments,
the order in which plugins are enabled during startup matters.
I.e. In a multi-site setup, if whichever flavour of events-broker implementation
is loaded before pull-replication, then some events could effectively go lost,
as pull-replication won't be ready to consume them.
By using `plugins.loadPriority` we can now define the order in which plugins
should be loaded, ensuring that no events are lost.
> **Note**: If manually enabling/disabling plugins at runtime, the order is no
> longer guaranteed.
## 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.
* [Change 394841](https://gerrit-review.googlesource.com/418257) 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.
### 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.
> Note that it is advised to backup existing indexes prior the upgrade in case
> there is a need to rollback as already existing indexes are affected.
### Offline upgrade
- Download the new gerrit.war
- Stop Gerrit
- Backup the existing indexes in case a rollback is required
- 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.10.0/pgm-reindex.html)
command for other options.
### Online upgrade with zero-downtime
Gerrit v3.10.x supports zero-downtime upgrade from Gerrit v3.9 when configured
using either
[high-availability](https://gerrit.googlesource.com/plugins/high-availability/+/refs/heads/master/README.md)
or
[multi-site](https://gerrit.googlesource.com/plugins/multi-site/+/refs/heads/master/README.md)
setup.
During the zero-downtime upgrade, Gerrit end-users will not experience any
outage or service disruption and will be able to perform any read/write Gerrit
operation seamlessly.
The zero-downtime upgrade process for high-availability or multi-site setups
consists of the following steps ([demo](https://youtu.be/vK5qsb0W7q4)):
1. Have Gerrit servers running v3.9 in high-availability or multi-site
configuration, healthy and able to handle the incoming traffic properly.
2. Set one of the Gerrit servers to unhealthy.
3. Shutdown the Gerrit server, backup indexes in case a rollback is required,
update gerrit.war and plugins to v3.10.x and start Gerrit again.
4. Verify that the Gerrit server is working properly (e.g. run automated smoke
tests) and then make it healthy again.
5. Ensure the Gerrit server is fully caught up with the events that happened while
it was down before directing traffic to it.
6. Repeat steps 2 to 5 for each of the remaining Gerrit servers.
### Downgrade
Downgrade to 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.9 version
3. Restore all indexes from backup
4. Run offline 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
```
5. 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.
* [Change 400622](https://gerrit-review.googlesource.com/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:
```java
class MySshModule extends PluginCommandModule {
@Inject
MySshModule(@PluginName String pluginName) {
super(pluginName);
}
}
```
### Other changes
* [Change 424338](https://gerrit-review.googlesource.com/424338):
Fix inline editor
* [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
* [Change 419157](https://gerrit-review.googlesource.com/419157):
Solves a latency regression related to CallerFinder
* [Change 424957](https://gerrit-review.googlesource.com/424957):
Mention who owns the change in comment emails
## 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: 56b8ffbab5bf619c0b6b5d44f0255fd41b9e1c89
- 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()
* 11429c6d1 Improve naming of disk cache pruning thread/task
## Security Fixes
* [Issue 321784734](https://gerrit-review.googlesource.com/q/bug: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.
## 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 424318](https://gerrit-review.googlesource.com/424318):
Update CodeMirror frontend library
* [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
* [Issue 335613081](https://crbug.com/gerrit/335613081):
Fix the saving and rendering of diff-preferences not having an immediate impact
on the UI
* [Change 421257](https://gerrit-review.googlesource.com/421257):
Fix redirection to the target page upon a successful login
* [Issue 295374158](https://crbug.com/gerrit/295374158):
Fix UI issue where the focus was unpredictably lost while typing a draft comment
* [Change 420337](https://gerrit-review.googlesource.com/420337):
Fix the login button disappearing when the page title was big enough in
the navigation bar
* [Issue 337076005](https://issues.gerritcodereview.com/issues/337076005):
Fix vertical alignment of header icon and text
* [Change 425577](https://gerrit-review.googlesource.com/425577):
Fix bogus account labels
## Bugfix releases
### 3.10.1
* Enhancements
* [Change 429477](https://gerrit-review.googlesource.com/429477):
Update Material Icons, as they were last updated in 2022 and some icons were missing,
like the `expand_circle_up`.
* Bug Fixes
* [Issue 346618790](https://issues.gerritcodereview.com/issues/346618790):
Fix reload of plugins causing incorrect deregistration of dynamic items.
* [Issue 346350837](https://issues.gerritcodereview.com/issues/346350837):
Fix binding of ApiModule bindings upon plugin reload.
* [Issue 344608194](https://issues.gerritcodereview.com/issues/344608194):
Only suggest hashtags for those matching the input, including also regular
expressions.
* [Issue 343218480](https://issues.gerritcodereview.com/issues/343218480):
Fix translation of custom Prolog rules SubmitRecord to SubmitRequirement(s).
* Security Fixes
* [Change 431217](https://gerrit-review.googlesource.com/431217):
Use constant-time comparison for hashed password validation, for increased security.
* Performance fixes
* [Change 431497](https://gerrit-review.googlesource.com/431497):
Improved offline reindex performance when disk caches have many hits.
* [Change 430777](https://gerrit-review.googlesource.com/431017):
Re-use revwalk for loading ChangeKindCache.
* [Change 431037](https://gerrit-review.googlesource.com/431037):
Stop calling `addPatchSets()` twice call when populating change query result.
* [Change 431039](https://gerrit-review.googlesource.com/431039):
Lazy load labelTypes when populating change query result.
* [Change 431040](https://gerrit-review.googlesource.com/431040):
Reduce duplicate work when a caller uses both `--patch-sets` and `--current-patch-set`
in change query.
* [Change 431018](https://gerrit-review.googlesource.com/431018):
Clone `PatchSetAttribute` for `currentPatchSet` when populating change query result.
if both `--patch-sets` and `--current-patch-set` are given, populate the
`patchSetAttribute` for `currentPatchSet` using the fields already populated
or all patch sets.
* Documentation Fixes
* [Issue 352081004](https://issues.gerritcodereview.com/issues/352081004):
Clarify that comment links work on html-escaped text.
* [Change 432157](https://gerrit-review.googlesource.com/432157):
HttpPasswordUpdateEmailDecorator: Fix link to http credentials.
* UI Fixes
* [Change 431878](https://gerrit-review.googlesource.com/c/gerrit/+/431878):
gr-rest-api-impl: Remove duplicate base url from _fetchB64File
* [Change 431657](https://gerrit-review.googlesource.com/431657):
Fix code commenting popup position under Firefox.
* [Change 431417](https://gerrit-review.googlesource.com/431417):
Add support for using `diff3` for rebasing and cherry-pick with conflicts.
`change.diff3ConflictView` setting is now honoured also for rebase
and cherry-pick with conflicts
* [Change 429857](https://gerrit-review.googlesource.com/429857):
Use h2 header for `Run GC` command.
* [Change 429822](https://gerrit-review.googlesource.com/429822):
Relative comment links without `/` prefix are converted to absolute links.
Any link not starting with `/` is automatically prefixed `https://`.
* Plugin changes
* `replication` updated to 445cd03
You can retrieve the full list of changes with:
```shell
git log --no-merges --format=oneline 56b8ffb..445cd03
```
notable changes are:
* [Change 384754](https://gerrit-review.googlesource.com/c/plugins/replication/+/384754):
Avoid opportunity to inadvertently block the distributor.
* [Change 383694](https://gerrit-review.googlesource.com/c/plugins/replication/+/383694):
Reduced log level for Task deletion errors in MP setups.
* [Change 352174](https://gerrit-review.googlesource.com/c/plugins/replication/+/352174):
Reduced log level for no-op distributor push consolidations.
* `delete-project` updated to bd49c1bf
You can retrieve the full list of changes with:
```shell
git log --no-merges --format=oneline ea78b4b..bd49c1bf
```
* JGit changes
* [Change 433257](https://gerrit-review.googlesource.com/c/gerrit/+/433257) and
[Change 432237](https://gerrit-review.googlesource.com/c/gerrit/+/432237):
Update JGit to cfdfb01f4
You can retrieve the full list of changes with:
```shell
git log --no-merges --format=oneline c0b415fb0..cfdfb01f4
```
notable changes are:
* cfdfb01f4 RepoProject: read the 'dest-branch' attribute of a project
* 4bc6eb8a7 RepoCommand: Add error to ManifestErrorException
* 784f0baec RepoCommand: Copy manifest upstream into .gitmodules ref field
* e55341115 RepoProject: read the "upstream" attribute of a project
* c0c59ccf2 PatchApplier: Set a boolean on the result if conflict markers were added
* cac835835 WalkFetchConnection: Remove marked packs on all function exits
* 6e9a17036 Allow applying a patch with conflicts
* 28c3ae172 sshd: fix IdentiesOnly if SSH agent is enabled and has keys
* c1f95130c Check an execution bit by reading it from the file system
* 567315af5 ResolveMerger: Fix the issue with binary modify-modify conflicts
* e4b4f063b MergeAlgorithm: Fix diff3 conflict hunk computation
* d24eee7d5 [gpg] Correct finding public keys from pubring.gpg
* ed8c394eb [gpg] Fix reading ed25519 GPG keys