Download: 3.4.8 | 3.4.6 | 3.4.5 | 3.4.4 | 3.4.3 | 3.4.2 | 3.4.1 | 3.4.0
Documentation: 3.4.8 | 3.4.6 | 3.4.5 | 3.4.4 | 3.4.3 | 3.4.2 | 3.4.1 | 3.4.0
Deprecated JCraft JSch client library is replaced with MINA SSHD client library per default. There is still option to switch to using JCraft JSch client library. Support for JCraft JSch will be removed in the next gerrit release.
The java language level is now set to Java 11 by default for Gerrit.
Issue 13494; Generate a Java 11 Eclipse project by default
Update dev-{eclipse,intellij} development for Java 11.
Gerrit source code is still compatible with Java 8.
This release doesn't contain schema changes.
The changes index version has been increased to version 61, new change search operators were added: mergedafter
and mergedbefore
.
To run off-line reindexing of the changes (optional):
java -jar gerrit.war reindex --index changes -d site_path
By default the changes index is automatically rebuilt upon the Gerrit startup after the upgrade.
Gerrit supports zero-downtime upgrade from Gerrit v3.3 when configured using a high-availability configuration, when the Git repositories are stored in a shared filesystem such as NFS or similar.
For upgrading with zero-downtime, you should enable the rolling upgrade migration in gerrit.config
on both Gerrit servers by setting the gerrit.experimentalRollingUpgrade
to true
.
During the zero-downtime upgrade, Gerrit end-users would not notice any outage or service disruption. They will be able to perform any read/write Gerrit operation on the GUI or using the Git protocol.
The zero-downtime upgrade consists of the following steps:
gerrit.experimentalRollingUpgrade
to true
in gerrit.config
on both Gerrit servers.gerrit.experimentalRollingUpgrade
from gerrit.config
on both Gerrit servers.Downgrade to any Gerrit v3.3.x release is possible, but requires the following manual steps:
is:mergeable
predicate is disabled per default.Computing is:mergeable
has a O(N^2) runtime computation complexity depending on the number of open changes on a branch and on the size of the changes. Hence skip this computation per default to avoid the associated runtime effort.
Most Gerrit installation already disabled this feature and thus wouldn't need to change anything. Otherwise, to restore the previous behaviour this option: change.mergeabilityComputationBehavior
should be changed to API_REF_UPDATED_AND_CHANGE_REINDEX
.
HTML plugins should be migrated to JavaScript plugins. This also implies Polymer 2 plugins wouldn't work any more. See also this announcement for more details.
These unused JavaScript Plugin API methods were removed:
plugin.annotationApi().setLayer()
, plugin.annotationApi().enableToggleCheckbox()
plugin.changeMetadata().*
plugin.changeReply().send()
plugin.eventHelper().on()
, plugin.eventHelper().captureClick()
, plugin.eventHelper().captureTap()
plugin.project().*
plugin.settings().*
plugin.styles().*
plugin.theme().*
plugin.get()
, plugin.post()
, plugin.put()
, plugin.delete()
: Replaced by their counterparts in plugin.restApi()
.As noted in the v3.3 release notes, ChangeAttributeFactory has been removed.
Gerrit now has a native UI for displaying run/result info from builds, tests, analyzers, etc. The data for this new Checks UI must be provided by JavaScript plugins using the Checks API. Checks information will be summarized by chips below the commit message. Detailed information is shown on a dedicated Checks
tab next to the Files
and Comments
tabs.
Unresolved comments that were left on older patchsets will now also be shown on newer patchsets. The backend provides two new endpoints ported_comments/
and ported_drafts/
for the UI to retrieve the data and for showing the comments in the correct position.
Comment state (resolved, unresolved, draft) is summarized by chips below the commit message. The Comments Tab and the Change Log will not just show the comment thread, but also the snippet of code (where the comment was made) as context.
Limit overview image interactions to primary mouse button
Fix: cannot select names in hovercards in the reply dialog
Fix thick border on votes in reply dialog
Add a simple hovercard for check runs
Add hover states to summary chips
Align relation chain section with the change info section and button
Show ‘show all’ button only when commit message has 17 or more lines
Show hovercard actions in submit requirement account chips
Update UX for selecting and filter checks
Show hovercard actions in change log
Fix condition check of show_file_comment_button
Do not try to open reply dialog when change is not loaded
Fix Show all button on related changes for wide screen
Explicitly refit overlay for cherry pick dialog
Align text and radio button in cherry pick dialog
PolyGerrit: Simplify some regular expressions
Redesign Show all button in related changes
Add View Diff button to comment context
Fix show more button
Comments tab - radio buttons
Issue 14057; Add check for undefined commentThread property in submit dialog
Do not render confirm submit dialog until it is opened
Show unresolved comments in the confirm submit dialog
Show View Diff button for merge change messages
trigger range highlight on long range comment chip hover
Issue 13905; Fix attention icon in reply dialog
Enable prev/next button on first/last file to go to change page
A11y - when dialog opened make rest of page unfocusable
Add feedback button to top bar
Fix the “View Diff” button padding
Disable cherry pick button if branch is not specified
Add tooltip when Send Reply button is disabled
Do not show quick approve button on merged changes
Use RestApiService instead of Polymer element
Move chunks - UX improvements
Show quick-approve button even when change is already approved
A11y - Shortcuts tables in dialog
A11y - return focus when closing dialog
Provide clearer above / below mapping for context expansion buttons
Ensure changes with outdated patchsets have a disabled submit button
Add Publish button to editor
Update Save button to Save & Close file in edit view
A11y - Fix reading whole diff preferences dialog
Replace polymer readonly attribute with ts readonly
Issue 13511; Fix repositioning the reply dialog when the attention section expands
Issue 13506; Change the tooltip of the ‘MODIFY’ button to be fancier
Fix ‘Send’ button being enabled even without the user making any changes
Add more functionalities to hovercard
Change when and how attention can be modified in the reply dialog
Use a selection chip also in the attention summary of the reply dialog
Issue 13427; Do not show attention related hovercard actions to guest users
Documentation: SHA-1 iso. SHA1
Issue 14295; Tidy up cross-repository-changes documentation
Add user privacy documentation
Document how to get pretty-printed JSON for REST calls
Fix image url in documentation page
Documentation: avoid * in ref expressions.
Document a 24h waiting period for features/API extension
Update the documentation of ReviewInput.tag
Document when cherry pick fields in ChangeInfo are set
Fix documentation of config_web_links field in ProjectAccessInfo
Add documentation for change.maxFiles and change.maxPatchSets
Add user documentation for ported comments
DeleteTags: document corner case behavior
CreateTag: document why we don't check for visibility
CommitsCollection: document parseBody() call
Tidy up dev-plugins documentation table of files
Add more details of what a plugin's documentation contains
Fix documentation for MoveAPI keepAllVotes option
Issue 11621; Document that a CVE should be filed for security issues
Document that external-ids paths variably nested
Documentation: clarify how the default branch is set
Document log4j config override
Document how to generate the html documentation
Replace obsolete ACCOUNT_GROUPS table in documentation
Document how vacant non-Google ESC seats get refilled
This update includes this change, which (when configured) will make repacking with Gerrit less racy by ensuring a pruned object is still available for some amount of time after repacking finishes.
Update jgit to 9bfb0f3a4
Update jgit to 4560bdf7e
InitJgitConfig: Git protocol v2 is enabled per default
Add passing the ‘compression-level’ argument to the JGit ArchiveCommand
Update JGit to 59420886e98bfcb574511cea191ccb3953004610
Update JGit to 415788df2
Issue 13544; Upgrade JGit to 5cd485e5
Move elasticsearch back to WORKSPACE
Elasticsearch: Add support for configuring REST client timeouts
Issue 14075; Bazel: Specify exact dependencies for licenses rules
Upgrade Flexmark to 0.50.42
Upgrade jackson-core to 2.12.0
Upgrade protobuf version to 3.14.0
Upgrade jetty version to 9.4.36.v20210114
Upgrade rules_nodejs version to 3.2.3
Upgrade MINA SSHD version to 2.6.0
Trim dependencies in httpd/auth/restapi/BUILD
Issue 13140; Issue 14330; OpenID: Remove support for Yahoo! OpenID provider
ChangeInfo: change _number from int to Integer
PatchScriptFactory: Access Metrics constants in static way
MissingMetaObjectException: Add default serialVersionUID
Flush file diff cache after change Ic1eeccfeb6b18f6
Support panning magnified image by dragging
Add comments on boolean arg for calls of ProjectLevelConfig#getWithInheritance
Re-render diff when useNewImageDiffUi is changed
Include the boy scout rule in Gerrit contribution guide
Add the meta_diff endpoint to the Change API
Indicate soft hyphen in diff
Use MINA sshd library for key generation and export
Issue 12599; Git transport: Switch to using Apache MINA ssh client per default
Issue 12599; Git transport: Add option to switch to using MINA ssh client
Update file status colors
Make rows in change log with same height (36px)
Fix file size for executable files in new diff cache
Ensure image diff data URLs are accepted by goog.html.SafeUrl
Issue 14301; Fix change reload not loading because js error in checks service
Issue 14300; Revert “Revert “Convert gr-app_test to typescript””
Convert SectionSortCache to use get/loader instead of getIfPresent/put
Add comments chips to tab navigation
Issue 14300; Revert “Convert gr-app_test to typescript”
Expose auto-value-gson in plugin API
Improve vote chips in dark theme
Let image diff builder know when to use new UI
Add border outline for +1, -1
Glossary terms regarding Events
Improve alert message for syntax highlighting turned off
Show both ‘Expand All’ and ‘Collapse All’ if some files are expanded
Add the missing green-400 color
Add basic overlay / blink image viewer
Fix regression - enable insensitive search for repo search
Introduce a glossary section
Move all soy templates files to unique namespaces
Add commitSha to the Checks API fetch() interface
Load multiple groups more efficiently
Persist group cache by uuid
Preload comments with context
Add simple attempt support to Checks UI
Update the header of the Checks tab
Specify background color for dark theme for ported comments
Move InternalGroup to the entities package
Add an internalId to check runs and results
Fix expanded result rows to not react on click to expand/collapse
Issue 12639; Bump guice version to 5.0.1
Compute AutoMerge commits synchronously when processing merge commits
Reduce tooltip delay from 500 to 200 ms
Add comment context to draft comments
Add 6 colors for check result tags
Update colors
SubmitRecords: Accept empty records from the change index
ChangeData: Disallow computing submit rules when serving query results
Fix computation of ChangeData#merge
Describe Timing reporting constants
Adapt old path in FileInfoJsonNewImpl to old diff cache representation
Fix NPE in FileInfoJsonComparingImpl when base = null
Add ChangeInfo to the ChangeData that the Checks API send to plugins
Introduce reporting constants - Timing
Navigate to previous unreviewed file when pressing “p”
Add timeout to DiffOperations
Switch GetDiff to use the new diff cache
Add spacing between party poppers and text in the comment tab
Add more spacing between related changes sections
Stop container jump on show all/less in Other Labels
Implement host-level default for ‘HEAD’ when new projects are created.
Add user guide for using topics.
Fix auto-merge detection in new diff cache
Replace tap by click event
Ignore new work-in-progress status if it hasn't changed
Add frontend reporting of “usp” URL parameter
Add tracking to the global Gerrit object
Fix endpoint parameters for check result rows
Fix typing of ‘reply’ event
Add link that mentions bots to the attention set user guide
Introduce reporting constants - Execution
Lowercase C in ‘No Comments’
GrCursorManager: One-way-bind index
Move GrCursorManager element hooks to parents
Issue 14214; Fix alert text color
Replace this.async() with setTimeout()
Dark launch the new diff cache for the list files endpoint
Nothing to be forward-compatible with Lit 2
Replace at-/de-tached with dis-connectedCallback
Introduce reporting constants - Life Cycle
Related changes sections use all space if needed
Autocomplete for adding topic
Update designdoc to current state
Show toast when user stars a change
Issue 14199; Add attention operator for auto-complete
UI improvements for show all bar in commit message
Clean up ported comments experiment
Fix tracking of plugin-api calls
Update logic for clicking checks chips in the summary
Adapt old/new paths of the new diff cache to current Get Diff behaviour
Add tooltips to check links
Do not mark file reviewed when navigating using “n”
Read SubmitRecords back from NoteDb if allowClosed is false
PatchScriptFactory: Add logging statements for dark launch in mismatch
Minor improvements to ported comments message without range
Show arrows that indicate collapsed ancestors/descendents
Add count of results to section headers of check results
Add a ‘usp’ URL parameter that can be used for tracking
Hide comment context if screen width is less than 1200 px
Minor improvements to comment context
Add a request parameter to the Get Diff endpoint to use new diff cache
Issue 12983; Allow users to specify default branch when creating a repo
Add commit message to ChangeData of Checks API interface
Move show file comment to RenderPreferences
Convert ranged comment and move chips into hints
Implement syntax highlighting for comment context
Only show run and results filters in new Checks UI when needed
Modify the GetDiff endpoint to use the redesigned diff cache
Use Python 3 in populate-fixture-data.py
Fix reading empty subsections from plugin config
Add tracking for all frontend API calls
Add regular polling for checks
Implement patchset picker for new Checks UI
ProjectLevelConfig: Cache parsed config and avoid reparsing
Feedback for triggered actions
Fix tiny performance nit in ApprovalInferance
Enforce size limits for post submit diffs
Do not call Diff Cache when not needed
New Change Summary - fixing styling issues
Use StringBuilder instead of String concatenation to avoid O(n^2) performance.
Add separator between date and patchset in change log
Add a loading state to the checks model and use it for the summary
Fix how the change gets updated in the change-model and -service
Issue 14141; Add more data to successful runs in the new Checks UI
Update all rows of a change on the dashboard when one is changed
Handle checks summary chip clicks by filtering the tab accordingly
ReviewJson: Load SubmitRecords from ChangeData to avoid reevaluation in loop
Fix caching for SubmitRecords in ChangeData
Implement expanding and collapsing of run and result sections
Replace all colors with css vars defined in app-theme
Fix chip styles in Checks UI for dark theme
Introduce components for new image diff UI
Fix alignment of runnable chip title
Retry the creation of auto-merge commits more persistently
Use primary background color var to support dark theme
Retry submits more persistently
Add ‘parentof’ operator that matches parent changes for a change
Allow CCs to change the attention set
Avoid using underscores for private properties
Implement filtering and lazy loading of checks
New change summary - align count nonvisible changes
Change the long comment threshold from 5 to 10.
Adding sameTopic, mergeConflicts, cherrypicks to new change summary
Fix rebase action in new change summary
Expose instanceId in GerritInfo
Add readonly to restApiService property
Properly check the required ‘action’ property
Change the Checks fetch API to send a data object
Add a plugin endpoint to the expanded check result
Add support for top-level actions
Do not render more than 5 links in one check result row
Fix the gap between commit message and summaries
Limit total lines of context shown
Highlight the entire line in comment context for line comments
Click on comment chip will select same category in comments tab
Move render only properties to RenderPreferences
Filter out merged changes when submitting a topic
Issue 14102; Return empty context if the comment range is outside file boundaries
GetChange: provide meta=SHA1 option
Change expand diff context shortcut to be a toggle
New Change Summary - small fixes
Disallow creating projects with Gerrit internal refs as branch input
Add context padding to comment context request
Add zero state messages for Checks and Comments
Reduce the gap between commit message and summaries
GetChange: populate ChangeInfo.metaRevId with the NoteDb meta ref SHA1
Change cursor to pointer for run selection chips
Fix ‘Completed without results.’ font-weight
Highlight comment range
Vertically align first run section with first result section
Show the lines of code around a comment as context
Adding Related changes to new change summary
Request comment context along with the comments from server
Exclude unneeded ref prefixes when getting refs
Set commit message min-height to 100px
Add resolved text to comment
Filter robotComments without Human Reply
Change horizontal padding of summary chip from 4px to 8px
Add experiment ID for new image diff UI
Support experiment features in Gerrit backend
Create and move plugin APIs to api/ folder
Issue 14080; Split configs for RevisionDiffIT to different subclasses
Manually revert RefFilterOptions.returnMostRecentRefChanges
Check for old and new file modes in FileDiffCacheImpl
Handle single file diffs for non-existent files
Fix the alignment of the Change Info section
Change SAVE to SEND AS WIP
Set min-width for search
Add handling for run actions in new Checks UI
uploadPackAuditEventLog: Avoid commit timestamp mismatch
Find out why the error-manager initiates page reloads
Fix bug: don't lookup in NoteDb when reading cached changes
InternalServerWithUserMessageException: Add serialVersionUID
Issue 14046; Fix bug: Do not change WIP status when not needed during rebase
Fix long range comment selection on Firefox
Clarify LOST value of LineNumber
Fix the height and background color of comments tab header
Fix the metadata reviewers line height
Small styling fix of successful check summary
Collapsing related changes
Issue 13836; Add a css var for coloring change log entries by service users
Fix account overflow problems in Change Log
Fix bug: also advertise refs/changes/../robot-comments when applicable
Fix bug not loading robot comments notes
Show all bar when editing commit message
Clean up auto reload dashboard experiment
Fix CmdLineParser.MyParser to not throw ClassCastException
Add option to dismiss new messages toast
Issue 13717; Add reviewers to attention set when replying to WIP changes
Some small checks summary UI tweaks
Fix a tiny bug in FileDiffCache for commit messages
Add selection of check run chips
Update comment tooltip if shortcuts are disabled
Drop outdated comments from Change.java
Configure maximum allowed value for the number of context padding lines
Add the context-padding parameter to the comment context
Issue 13571; Suppress keyboard shortcuts if user has disabled them
Revise the summary of the new Checks UI
Inline entity protobufs directly into cache protobufs
Fix FilesInCommitCollection when parent = 0
Add to missing declare
statements
New Change Summary - Submitted together
FileEdits: Simplify instance creation
Retry more often on submit
Show avatars for unresolved comments authors
Extract persistent cache base factory
Move DiffLayer to the API
Move move-link-click event details to API
Move LineNumber to API
Move ContentLoadNeededEventDetail to the API
Make GrDiffGroupRange use LineRange
Fix being able to reload the Checks UI
Comments summary - unresolved comments + styling
Introducing new component for relation chain
Use a new custom exception instead of StorageException on submit
Left align ‘No changes need your attention’ message'
Add a RefFilterOption to always return all most recent ref changes
Send all user's votes instead of only changed votes
Add single file diff to the DiffOperations interface
Issue 14034; Fix bug of removableReviewers without votes
Add extra width to display full names
Resolve TODO about removing SPECIAL_PATCH_SET_NUM
Comments Summary - initial work
Issue 13392; Fix text overflow in account labels
Issue 12536; Auto focus on the first input field
Issue 14000; Fix being able to flip your own attention flag
Fix font-weight in new Checks UI
LocalDiskRepositoryManager: Don't compute base path before it is needed
Handle the comment context for merge list
Fix comment context for commit messages
New change summary - commit message with show all bar
Apply same spacing rules for long range chips as in move detection
Add message that files were not changed on submit
Fix loading of plugin provided coverage layer
Allow user to re-vote their same vote
ReviewerRecommender: Fix an imprecise comment
Add author name to new messages toast
Issue 2335; Add repository browser link to repo detail page
Adapt getRefs + filter to use the more efficient implementation
Use quotes in search query only when neccessary
Use the redesigned diff cache in the list files endpoint
Fix diff cursor side for chunks on first or last line of file
Add undefined check for accessing account id
Change linked URL for topic
Return the commit message and merge list for auto-merge with > 2 parents
Prevent duplicate ranged comment chips on rerender
Update message text in ported comments
Replace the placeholders in checks tab with something more decent
Allow posting the same vote on a new patchset
Do not show fake runs by default, but allow them to be toggled
Introduce material web components for use
Prevent skipping chunks on first or last line of file
A11y - announce that change is in edit mode
Propagate error's text received from backend to a plugin
Add an option for checks to provide HTML results
Issue 12838; Add manual sync of cursor for gr-change-list
Move CommentRange to api/
Move GetOAuthToken out of the core restapi
Return empty comment context if line and range info are not available
Add basic support for expanding a checks row
Fix issue with rounding in calculation of time duration
Reload dashboard when visibility changes
Issue 13970; Increase the memory allocation for acceptance tests to 512m
Move the Side enum to the API
Reload ported comments when patchset picker is changed
Issue 13914; Prioritize ‘ADDED’ entries over ‘DELETED’ for file diffs
Refine the Checks Results UI
A11y - Each page should have only one main
Fix getSelection error
Reland: Use LoadingCache#getAll in AccountCacheImpl
Adapt voting chips to new chip style sizing
Handle clicks on new checks chips
Refine the UI of the checks chips
Add long range comment chip
Add ported drafts to comment count string
Throw one exception for both unresolvable commits and permission denied
Move OAuth and LDAP support out of server target
Add lit elements for Runs and Results
Only allow involved users to change the attention set
Disallow creating branches in Gerrit internal or tag refs namespaces
Create Branch: clarify that BranchInput and URL should match for ref
Add tracking when user navigates to original comment
Propagate the exception cause in CherryPickChange#cherryPick
DeleteRef: clarify ‘prefix’ argument
Make code compile in Eclipse
Rebase: Include conflicting files into the conflict response
Allow rebase with conflicts
Exempt JimFS from Library-Compliance.
tools/coverage.sh: Expand bash aliases and source bash profile
Add handling for Commit message and Rebase change messages
Add handling for ported comments with side=Parent
CheckAccess: print a useful message if no rules apply
restapi/project: move CheckAccessReadView into CheckAccess
restapi/project: add some comments
restapi/accounts: clarify permission related behaviors
Introduce the new DiffsOperations interface
Replace enable_context with enable-context in docs
Set path to null after filling the comment context
Allow users to select which changes to cherry pick
Create enum for the progress status of cherry picked change
Expose the entire commit message instead of only the subject
Disallow creating changes on internal Gerrit refs
Filter disabled experiments from settings view
Add the file diff cache
ExternalUser: Allow specifying a PropertyMap
Expose email addresses for ExternalUsers
Increase visibility of failed retries
Avoid passing @Singleton to args4j
Move ExternalUser from change.query into server package
Add status chip to file dropdown in diff view
Issue 13571; Add preference to disable all keyboard shortcuts
Update _computeMessageContent to use optional properties
Add diff between patchset N vs N - 1 on uploaded messages
Use current timestamp for creating group
CurrentUser: Expose set of ExternalId.Keys
GroupBackend: Accept CurrentUser instead of IdentifiedUser
CreateChange: Allow specifying correct project
Take empty arrays into account to break down chunks
Disallow creating changes on NoteDb refs
Fix compile error because of required new actions
parameter
Fix unquoted properties of HTMLElementEventMap
Verify destination change of cherry-pick before trying to update it
Fix the z-index of the main header
Add top-level actions for Checks API
Allow porting comments to contribute to comment count string
Update comment route to handle comments created with side=PARENT
Only request ported comments when experiment is enabled
Add checks service
Add a model for router and change
Update existing change on cherry-pick with CommitApi
Implement mergedafter and mergedbefore change search operator
Change the default permissions from READ on refs/* to refs/heads/*
Support refs/users/self for the GET branch rest endpoint
Fixes for tools/coverage.sh
Adopt last updated time predicates to reuse for merged time predicates
Add an extension point to extend the change message on post review
Port drafts across patchsets
New change summary - introduce edit pencil
Fix PluginLogFile to not open multiple appenders when run in parallel
Port comments across patchsets
Fix for text selection in comment
Hide quick-approve for your own change or if you have already given max vote
Move __editing property to be part of only UIDraft
Add missing parameter to getThreadsBy* call
Add an option to keep votes when moving the change to another branch.
Clean up error reporting
Issue 13770; Do not add owner to the attention set when added as reviewer
Define a default errFn for REST API calls from plugins
Convert commentSide to diffSide in GrCommentThread
Move chunks: Add links to line numbers
Change all components to use the service for rest-api-interface
Add a service for rest-api
Set AutocompleteSuggestion property value to be string
Expose the mergedOn date of a change in ChangeNotes
Ignore no-unused-vars rule on args pattern ^_
Do not collapse lines of code with less than 4 lines
Get rid of some globals
Avoid throwing IllegalArgumentException when failing to parse an enum
Extend PatchSetWebLink to include subject and branch name
Replace non-standard event.path with event.composedPath
Show Submitted Date in change summary
Issue 13728; Fix dashboard not showing up for not-logged in user
A11y - improve announcing
Add a constant for ‘current’
Issue 13734; Fix the change message for removing cc
Move java_tools javac argument into tools parameter.
Fix A11y regression
Fix DynamicOptions to support a custom bean
Exempt guava from LC review
New change summary ui - flag, metadata
Do not re-initialise toast displayed time when navigating
Add braces to arrow functions returning void
Add simple visual distinction for move control text
A11y - Fix tabbing out of searchbar
Replace comment route in url bar with meaningful url
Clean-up ChangeNotesCache.Weigher
Add basic scaffolding for the checks tab
Add ‘prefer null’ to frontend style guide
Wrap isAtStart/End() in GrDiffCursor
Move some of the old diff cache entities to a new package
Add the git file diff cache
Make isAtStart/End() return true when no stops
Show all comments upon creation if user had hidden them
Show robot id for robot comments in comment card
Pass on CursorMoveResult
Show reviewer on comment tooltip
ChangeInfo: Serve reviewers when LABELS are requested
A11y - Improve diff a11y
Show alert when syntax highlighting is turned off
Improve description of moved chunks
Fix empty filter handling in list-view
Issue 13689; Bazel: Fix eclipse project generation
Fix Shift-A shortcut for hiding the left side of the diff
Update stops when a diff starts or stops loading
Make show_on... fields boolean
ProjectConfig: Write resolved groups to file
ChangeNotes: Don't use ChangeIndex when we can avoid it
Issue 13612; Fix bazel run_shell usage for newer versions
Issue 13669; Remove --line-height-code in favor of calc() rules
Reduce boiler plate for event listening
When added as author, be added as CC and not reviewer
auth-check: Set content length only if authorization is valid
Add new ChecksApi to PluginApi
Treat spaces as ordinary characters in diff view
Issue 13658; Convert comment counts to comment thread counts around the UI
Specify line-height for code in terms of rem
Refuse to expand skip groups with WHOLE_FILE
Fix showing “Add Patchset Description” for users that are not logged in
Support diffing for octopus merges against a specific parent
Fix broken link to release notes of 2.2.2 in prolog cookbook
Update developer list in Maven pom files
Abort cursor movements across a loading diff
Issue 7458; Fix iron-dropdown positioning
Abort cursor moves via a sentinel, not a callback
Don't unset scroll on non-existant stop
ported draft comments: Require authentication
Allow multiple plugins to provide coverage data
Hide patch file download when the commit has multiple parents
Add support to skip chunks
Issue 13336; Support accessing other users' named queries
Only request ported drafts if user is logged in
Catch errors in getPortedComments request
Allow adding and removing invisible users to the attention set
Issue 13336; Support to query for user specific named destinations
Ensure users are active on the change when adding to attention set
Use ChangeData in LabelJson
Add latency tracking for porting comments
Add hasDrafts property to re-compute attention set
Fix headline for user queries for users without name
A11y - headlines for Diff Page
A11y - headlines for Change Page
Flip the defaults of the attention and assignee flags
A11y - headlines for Dashboard Page
Add the GitModifiedFilesCache and ModifiedFilesCache
Add constant for Service Users
Linkify branch name in repo detail list
Do not navigate to Base vs X if X is Base and file is unchanged
Submit emails should always be sent
Issue 13522; Fix topic creation in command line to send a topicEditedEvent
Improve message if submit fails due to non-fulfilled submit requirements
Add fatal to consistency and validation error enums
Add keyboard shortcut ‘f’ to open file list in diff view
Fix DefaultPermissionBackend#absentUser to work outside the request scope
Issue 13543; Fix navigate back to change page with ‘[’ on first diff.
Update mixins to avoid compilation issues
Required fixes to match internal google rules
Ensure that all assignment to window.Gerrit properties are safe
Use overridden ChangeEmail#add instead of OutgoingEmail#add
Show comment in viewport when navigating to Base vs X
Do not skip lines marked as dueToMove
Replace parseInt() with Number
Fix TseTse errors
DefaultPermissionBackend: Reuse current user where possible
Add event detail interfaces for dispatchEventThroughTarget
Replace “Since” by “Waiting”
Fix patchset comparison when adding coverages
Compute known groups lazily when writing groups to the trace
Fix TseTse errors.
Toggle default to show unresolved comments
Do not add reviewer to the attention set when they add themselves
Fix attention set tip not showing up
Add email notification option ATTENTION_SET_ONLY
Add more fine logging to SubmitStrategyOp
Replace dispatchEvent with dispatchEventThroughTarget
Add a header about attention set for all change emails
IdentifiedUser.RequestFactory#runAs allow passing properties
Allow user preference to receive emails only when in attention set
Fix TseTse error
Convert patchNum into integer if possible
Bold the user name, if they are in the attention set
Fix showing the CC section in the attention modify section
Change attention set logic to take unresolved state into account
Do not add the owner to an otherwise empty attention set
Fix “Do not update attention set” message
Do not rely on SortedMap / Set semantics for Flogger tags
Cache the comment context
Add ‘Since’ and ‘Submitted’ columns to dashboard sections
Change the sorting of changes in the ‘Your Turn’ dashboard section
Highlight the dashboard rows with attention as reviewer
Use auto-value-gson
Maintain all attention set updates in ChangeNotesState
ReceivePackRefCache, locate patch-sets instead of refs
Include repo config into CommitReceivedEvent
PostWatchedProjects: Throw BRE in case of empty input
CheckAccess: Return ACL debug logs
download-commands: use unqiue constants for each download command
Performance Improvements
Change 350236 Optimized change visibilty checking when the project is hidden
Looping over every change when the whole project isn‘t readable is a waste of CPU. It’s a bigger waste to fetch all the change data in the first place.
Native packaging
GerritForge RPM repository updated for arm64 architecture
GerritForge RPM v1.4 has been released, including the native packages for arm64 architecutre.
DockerHub images for arm64 architecture
DockerHub Gerrit images include images for arm64 architecture.
Bug Fixes
Issue 16404: Fix disabled caches when reading all keys at once
When disabling some caches like git_file_diff
the fetching of the keys was causing a ClassCastException and the associated Gerrit functionality was broken. This change fixes the bulk loading of all keys and allows to disable any of the Gerrit caches without regressions.
Change 350414 Fix index rewriter to rewrite all Or/AndPredicates. AndSource chooses right source more often
Known issues
New features
Issue 16322: Limit the number of changes that can be submitted together
When chaining changes together, the sequence of commits to navigate was previously unbound, causing the potential operations explosion. The explosion could have also been accidental and caused by the push of a change with a non-existent branch, which would have resulted in the full scan of the repository for changes. Introduce a new Gerrit configuration change.maxSubmittableAtOnce
with a safe default of 1024
, which would allow any use case that would have also worked before this change.
Change 347496: Enable project_list cache warmer when cache.project_list.maxAge
is set
Change 341454: GitwebServlet: Retrieve git path from FileRepository so that it can be used with multi-site and cached-refdb modules
Performance Fixes
Issue 16379: Remove key locking for disabled caches
This change also makes the memoryLimit behaviour consistent with the diskLimit set to zero means disabling the implementation of the cache.
Change 349895: Add AndCardinalPredicate and OrCardinalPredicate
Before this change, IndexSource derived cardinality from predicate which implement HasCardinality
. Since AndPredicate
and OrPredicate
does not return cardinality, IndexSource defaults to 10 when query comprises more than one predicate. Due to this behavior, AndSource
chooses IndexSource almost always when query contains more than one index predicate. This helps AndSource
to choose the right source more often.
Change 347956: Introduce possibility to define the cardinality so that AndSource
predicate can work more efficiently
Before this change, cardinality of the IndexSource was always set to 10. This makes AndSource
to choose IndexSource over other sources most of the time. Add a HasCardinality
interface which can be used by all the predicates which implement IndexPredicate to set a cardinality. This helps AndSource to choose the right datasource.
Change 349355: Cache repository locations in LocalDiskRepositoryManager
Obtaining the actual location of a repository using base-path and project name can be slow as it involves some guessing to locate the repository. Cache the locations once they are obtained to avoid repeated work, thereby improving performance when opening repositories.
Change 347955: Consider cardinality while choosing the data source for AndSource
predicate
Before this change, AndSource
considered cost to choose a datasource. Ideally cost should be used to determine which predicate to run #match()
against first, so that queries are faster. Cardinality should be used to determine which datasource to be picked so that there are fewer changes to process. Consider cardinality of the datasource to choose the source and use cost when cardinality is same.
Bug Fixes
Change 350014: Do not set cherryPickOf on RevertSubmission
The RevertSubmission internally uses CherryPickChange operation. It creates the ‘normal’ revert for the first change in the relation chain, for each subsequent change it creates a revert commit that is then cherry-picked. This cherry-pick is not a cherry-pick of the reverted change. This is a cherry-pick of the revert commit of the original change. This change fixes the bug in the logic that sets cherryPickOf to the original (reverted) change, using the CherryPickChange operation.
Change 349894: Don't always rewrite And/OrPredicate to And/OrSource
Before this change OrPredicate was always rewritten to OrSource. This is not the right thing to do as OrSource#read()
will eventually fail when there is at least one non-datasource child. Since Change 347955, AndSource
picks a source which has the lowest cardinality which makes the OrSource#read()
failures more visible. Rewrite OrPredicate
to OrSource
only when all the children in the predicate are DataSources.
Change 348715; Clarify that a restart is needed before changes to email templates take effect
Issue 16182: Reintroduce the Change-Id footer in change screen
This change reintroduce the Change-Id footer below the commit message on the Gerrit UI.
Issue 10168: Fix HTTP 404 when browsing tags on Gitweb
The Gitweb links to tags have been broken in v2.14.10 onwards. Gitweb supports the ‘a=tags’ rendering action for annotated tags only, returning 404 for all lightweight tags. Use the generic ‘a=shortlog’ for Gitweb links to tags which would work for both annotated and lightweight ones.
Change 347495: Fix for IllegalStateException during the Gerrit start when cache.projects.refreshAfterWrite
is set to true and prolog rules are used
Issue 15997: Make DelegateRepository#delegate() method public to allow plugins/modules to access it
Security Fixes
Issue 16054: Fix confidentiality leak by users with create ref permission using the create branch REST-API
Any user with create ref permission was able to gain access to any SHA1 or refs, including the ones that they would not have permission to see.
Breaking changes
Issue 15941: Fix SSH queries to not show commit-message unless --commit-message is provided
This issue has existed for several years and should be considered breaking as users might expect commit message to be included by default in SSH query results. Obtaining the commit message is a costly operation as the commit data has to be loaded. So, showing it even when --commit-message is not provided degrades the performance of SSH queries.
Change 344300: Add missing return values in MetricMaker's newCallbackMetric
and newConstantMetric
When new callback and constant metrics were created the RegistrationHandle was not returned, making impossible to de-register them. The method signature is now aligned, however, all plugins, including the core ones, that were registering callback or constant metrics would need to be rebuilt from source or downloaded from the latest build on Gerrit-CI.
New features
Change 343096: Introduce index.paginationType=SEARCH_AFTER
configuration for speeding up query pagination
Change 343798: Introduce index.pageSizeMultiplier
configuration to paginate index queries with increasing size
Change 344334: Implement no-limit
queries with multiple pages, make them usable with Elasticsearch
Change 345017: Add public EventTypes.getRegisteredEvents()
for accessing all stream event types from plugins
Change 340714: Introduce metrics configuration for different data reservoirs
Performance Fixes
Change 338834: Avoid creating an IdentifiedUser multiple times in a SSH query This improves performance of SSH queries.
Change 338574: Cache ProjectControl instances in SSH queries A PerThreadCache is used to cache ProjectControl instances to improve SSH query performance.
Change 338474: Allow async receive-commits to have a thread-local cache Improve caching when merging changes through git push
Change 338154: Lazy load change notes when submit by push Improves performance of change submit via push
Bug Fixes
Change 347474: Fix DefaultMemoryCacheFactory to correctly set refreshAfterWrite Setting refreshAfterWrite in gerrit.config now works and does not mistakenly set expireAfterAccess
Issue 15997: Make delegate() method public git-repo-metrics plugin now works with multi-site setup
Issue 16038: Fix “internal error” when pushing to refs/users/xx/xxxx Push over HTTP to refs/users/* branch now works and doesn't fail with “error: internal error” / Not Signed In
Issue 16001: AsciiDoctor: skip attribute when looking for title Fix documentation search showing :linkattrs: instead of the document title
Issue 15134: Apply the match operator to filter projects Next-arrow is now not hidden when searching for repositories in the Repository section
Change 337474: Use sane value for QueryProcessor's effective limit on “--no-limit” Fix errors seen when --no-limit query option is used with ES index backend
Change 339754: Fix gerrit review command with branch option
The gerrit review command was not able to find the commit with branch option; ensure “refs/heads/” prefix is present for branch option.
Issue 16106: Fix label operator to work with external groups, which never worked before since its addition in v2.10.
Change 331762: Cache permission filtering for All-Projects, allowing a faster ACL evaluation to any refs.
Change 343694: Improve performance of queries that check the visibility of changes wrt a non-current user
Change 346254: Fix change queries evaluation of AND
terms to run match on predicate whose cost is least
Sort the change queries predicates in AND
based on cost and cardinality, which was broken since Change 79391.
WARNING: queries containing predicates with poorly defined costs or cardinalities could perform worse now.
Dependency Updates
Update JGit to 035e0e23f251fdb766a6630509bcf342efb8b3ad, including the following fixes and improvements:
Other Fixes
Change 340534: Fix link to change.mergeabilityComputationBehavior in user-search.txt
Change 337835: rest-api-projects: Fix documentation for #inherited-boolean-info
Bug Fixes
Change 335705: Fix bazel build on Mac M1 (aarch64)
Change 334762: Use original javax.servlet-api instead of tomcat's copy
Change 334299: Reject invalid queries with status code 400 on POST /accounts/<account-identifier>/watched.projects
Issue 14109: Fix NPE with cherry pick REST-API onto an existing change in a different branch
Dependency Updates
Update rules_nodejs version to 5.1.0.
Update JGit to 78c9b9260a5287d09c87b407e396021590714513.
Update Apache sshd-mina, sshd-sftp and sshd-osgi to 2.7.0.
Update hamcrest to 2.2.
Security Fixes
Change 333304: Ignore --no-limit
query changes option for anonymous users
Prevent the use of no-limit
option with query changes REST API. The option can result in excessive resources usage make Gerrit subject to DoS and DDoS by any remote endpoint without the need to have any Gerrit account or signing in.
Breaking changes
Issue 15589: Add SHA-1 hash variable to gitweb file links
This change necessitates a Gitiles plugin update to v3.4.4.
Docker Images
Bug Fixes
Issue 14945: Account cache is not caching the access to the account data refs
Account cache in Gerrit v3.4 does not cache the access to the All-Users.git repository because of the refactoring of the cache key, which requires lookup of the All-Users.git refs. Gerrit allows now the refs in-memory caching using the cached-refs libModule.
Issue 14912: Fix lost watch notifications when attention-set-only is configured
Issue 15407: MultiBaseLocalDiskRepositoryManager cannot be overloaded by libModules
Allow the replacement of multi-base git repositories through libModules, which wasn't possible before. Allow to use multi-base git repositories with the multi-site plugin and the cached-refs libModule
Issue 15500: Fix java.util.IllegalFormatArgumentIndexException on Java 17 in MergeUtil#mergeWithConflicts
Issue 15590: Fix SLF4J binding to Reload4J
Use Reload4J-specific binding for SLF4J, fixing the broken MDC since the swap of Log4J with Reload4J done in Change 328081.
Change 330359: Fix gerrit ls-members --recursive
Fix a regression introduced with Change 134334 that caused it to ignore the --recursive flag.
Change 327950: PrologRuleEvaluator: Fix endless loop on type error
Documentation Fixes
Change 331361: Fixup old references to Database in documentation
Change 331360: Remove leftover receive.changeUpdateThreads references
Change 290603: Fix gerrit ls-groups flag -g
in documentation
Other Fixes
Dependency Updates
Update SLF4J version to 1.7.36.
Replace Log4J with reload4j version 1.2.19.
Security Fixes
Issue 15481: Remove support for Elasticsearch versions vulnerable to CVE-2021-44228
Elasticsearch v7.16.2 includes the fix for the Log4J v2 vulnerability CVE-2021-44228.
Remove support in Gerrit for all other vulnerable Elasticsearch versions and keep compatibility with v7.16.2 only.
Change 325218: Show the bi-directional Unicode chars as red exclamation marks.
Bidirectional Unicode chars can be used to hack code base, as shown in Trojan Source web-site. Gerrit diff-view finds bidirectional unicode and shows them as red exclamation marks.
New Features
Reindexing performance improvements
Change 325417: Changes off-line reindex: schedule slices immediately
If a site has one huge repository and several small/medium sized repos, then slice creation for the large repo will effectively block other smaller repos from starting to reindex their changes. Schedule slices without waiting for any other slice creation, providing up to 25% performance improvement for large sites.
Bug Fixes
Replication Plugin Fixes
Issue 15315: Document in the replication plugin that remoteNameStyle might result in a names clashes
Issue 15318: Document in the replication plugin that remoteNameStyle is for non-Gerrit remote repos
Gitiles Plugin Fixes
Issue 15307: Fix Bazel build on MacOS
Change 273397: Load fonts directly from Gerrit instead of 3rd party domains
In environments without public Internet access or where tight control of loaded resources is necessary, loading fonts from 3rd party domains might be restricted. Use only the fonts included in the Gerrit war distribution and domain.
Breaking changes
Change 323855 Change 324115: ProjectCache#evict no longer triggers a reindex.
During offline project reindexing evict() was triggering a duplicate reindex on the project when we only wanted to evict the project cache entry. This same issue occurred with the HA plugin and could be/been present in other plugins.
If you have relied on a reindex being done on evict() you need to use evictAndReindex() instead. This behavior is now consistent with other evict() methods in Gerrit.
New features
Change 324095: Display cache statistics after reindex operation.
Help analyzing the cache utilization during reindex command and provide insight into sizing them for optimal performance.
Change 323786: Allow context-dependent group suggestions in gr-permission.
Change 322975: Shows the number of changes that failed reindexing even if less than 10% fail.
Issue 14930: Include Command-Status
in the httpd_log
and the httpd_log.json
Indicates the overall result of the GIT command over HTTP.
Refer to the docs for more details.
Issue 14895: Support author:self and committer:self in change queries
It is possible to use self
for searching own changes (for both author and committer predicates).
Reindexing performance improvements
Change 323215 Change 322296: Disable auto flushing during offline Lucene indexing.
Change 322835: Use thread count specified on offline reindex command line.
Honor the “--threads” command line option when provided instead of batchThreads property from gerrit.config
.
Change 323396: Avoid lucene index deletes during offline reindexing.
Change 323297: Avoid scanning for change refs for each project slices when reindexing all changes.
Avoiding the duplicate work brings down the reindex time from 45 mins to 15 mins for a test-site with 160k changes across 4 repos on NFS.
Change 324115: Avoid double indexing work during project reindexing.
Bug Fixes
Issue 14963: Fix /access REST APIs returning incorrect rule when group is duplicated for same rule.
Issue 14097: Fix GC action not shown in project commands with Gerrit in multi-site configuration.
Issue 15293: Fix fetch of group suggestions for projects with a /
in their name.
Issue 15251: Ensure that user without edit permission can't change plugin configuration.
Change 313561: Handle null account-ids when sending e-mails.
Change 307602: Fix NPE while accessing draft refs.
Change 307482: EqualsLabelPredicate: fix bug that prevents matching owner votes.
Change 321875: Ignore patchset level comments when computing unresolved count.
Change 322935: Fix buggy Index-Interactive Executor.
Fix index.threads when set to a negative value which was not using a direct executor as mentioned in docs.
Issue 9812 Issue 7338: Merge commit cannot be moved
If a merge was targetting branch A, but then it was decided to create a new branch for this merge named B, which starts from A - The merge is still valid for B, and the user has no way to move it without amending and creating a new change.
Issue 15024: Gerrit event json formatter produces inconsistent payload for different projects
AllProjectsName and AllUsersName were serialised as: {“name”:“All-Projects”} and {“name”:“All-Users”} while all other projects were serialised as a JSON string. The different JSON payloads were causing issues with the HA configuration using the high-availability plugin.
Issue 14968: PluginServletContext does not implement javax.servlet.ServletContext.getVirtualServerName()
Remove the noise on error_log of c.g.g.h.p.PluginServletContext does not implement j.s.ServletContext.getVirtualServerName(), when running Gerrit on Tomcat 8.5.69.
Plugin API fixes
Dependency Updates
Security Fixes
Issue 14732: Commits/IncludedIn exposes branch names without respecting the ACLs on branches
When calling the REST endpoint for listing all branches that a commit SHA1 is part of, the commit is properly checked for visibility against the ACLs (it is a REST resource) but the branches are not checked.
The included-in may expose the list of non-visible branches to a user that has visibility of the SHA1.
Issue 7282: Hide repository name and description when user has no access
Gitiles did not respect Gerrit's permission and would show the repo name and description to any user who could guess the name. The repositories list as well as the content APIs were not affected.
New Features
Pop up accounts when typing within assignee or attention on the searchbar
Add attention operator for auto-complete on the searchbar
Bug Fixes
Issue 14726: Make “conflicts” cache reentrant for preventing deadlocks with concurrent cache loads of change conflicts computation.
Issue 14785: Limit returned changes for a triplet without Change-Id
Fix a bug where invoking the REST-API /changes/repobranch without mentioning the change-id resulted in the full scan of all changes on a repository/branch causing a high CPU overload and occupying the request threads for a long time.
Issue 14776: Prevent removing e-mail associated with OpenID external IDs
Gerrit prevents the user from removing the email address associated with their OpenId account.
Issue 14872: Disable setting cancelLeftPadding if avatars are not set in the config
Issue 13745 Issue 14173: Firefox: fix suggested reviewers pop up instantly and not disappearing when out of focus
Issue 13955: Safari 14.1 for Mac OS BigSur 11.3.1: Multi-line code comment broken
Issue 14495: SSH thread leak with authentication exception
A show-queue will show tasks in the Batch (or Interactive) queue hanging forever as a consequence of a Git/HTTP thread ended because of an error.
Issue 14561: Conflicting changes section not visible even when change.mergeabilityComputationBehavior is enabled
Issue 14577: Dedicated mergeable endpoint shouldn't be called if change.mergeabilityComputationBehavior is set to API_REF_UPDATED_AND_CHANGE_REINDEX
Issue 14600: Empty registered field on profile settings screen
Issue 14603: Attention-set operations count towards change.maxUpdates limit.
Issue 14613: Gerrit is killed before the gracefulStopTimeout
Avoids gerrit.sh killing the in-flight Git/HTTP just after 30 seconds regardless of the httpd.gracefulStopTimeout
configuration value.
Issue 14628: Project deletion replication events are failing to be serialized
Issue 14639: Searching repositories by name is case-sensitive
Restore the correct project search that was case-insensitive in 2.16.27, 3.1.3 and 3.3.2.
Issue 14644: Weak security settings accidentally removed in SSH transport
Issue 14645: Username to lowercase conversion fails with duplicates
Duplicated accounts names associated with the same account id was making the conversion to lowercase fail.
Issue 14649: Config setting change.maxUpdates was skipped when the change involved an update to the attention-set without comments
Issue 14676: Legacy host key file with RSA algorithm is overridden with ecdsa key during init.
Change 312602: Fix Mariadb status matching for AccountPatchReview
Mariadb connector uses SQLException.getSQLState() which returns the ANSI SQLSTATE value, not the MariaDB/mysql error code. Fix the removal of duplicate key detection when an already reviewed file opened up again returned 500 because of the incorrect handling of SQLSTATE value.
Change 312382: Fix deleting edits when change is merged
Fix the support of deleting a change edit after it has been merged or abandoned.
Change 313702: Remove contenteditable=“false” from within dragDropArea which caused issues with uploading
Plugins Fixes
Change 314364: codemirror-editor: stop propagation for all keys but exempt the save button
This fixes an issue where if using contenteditable (default on mobile) and you typed “/”, it would get intercepted within the app.
Dependency Updates
Update CodeMirror to 5.62.2.
Fix an issue on mobile where typing causes the keyboard line to go out of sync.
Update JGit to 06ca6cb3b01cdd618cc80f94bf0bf2fb78ab6e82.
JGit bug 573791: Stale file handle raised when loading a collection of notes with a NoteMap over NFS
JGit Bug 574178: Fix garbage collection failing to delete pack file
Noteworthy improvements for gerrit in this jgit update, improving performance from O(nˆ2) to O(n):
Change 180697: BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory
Change 180559: Optimize RefDirectory.isNameConflicting(): this fix reduces number of open file handles jgit needs in all scenarios where lock files are created (e.g. ref updates).
Change 180432: LockFile: create OutputStream only when needed