blob: 520b2a6b9dcbd79350cc4a4d834100d6db69fde7 [file] [log] [blame]
Release notes for Gerrit 2.1.6
Gerrit 2.1.6 is now available:
Schema Change
*WARNING* This release contains multiple schema changes. To upgrade:
java -jar gerrit.war init -d site_path
New Features
Web UI
* issue 312 Abandoned changes can now be restored.
* issue 698 Make date and time fields customizable
* issue 556 Preference to display patch sets in reverse order
* issue 584 Allow deleted and/or uncommented files to be skipped
* Use HistogramDiff for content differences
HistogramDiff is an adaptation of Bram Cohen's Patience Difference
algorithm, and was recently included in the upstream JGit project.
Patience Difference tends to produce more readable differences for
source code files, and JGit's HistogramDiff implementation tends to
run several times faster than the prior Myers O(ND) algorithm.
* Automatic merge file content during submit
Project owners can now enable file-level content merge during submit,
allowing Gerrit to automatically resolve many path conflict cases.
This is built upon experimental merge code inherited from JGit,
and is therefore still experimental in Gerrit.
Change Query
* issue 688 Match branch, topic, project, ref by regular expressions
Similar to other features in Gerrit Code Review, starting any of these
expressions with \^ will now treat the argument as a regular
expression instead of an exact string match.
* Search changes by commit messages with `message:` operator.
* issue 729 query: Add a \--all-approvals option to queries
The new flag includes approval information for all patch sets in the
resulting query output.
* Customize email notification templates
Email notifications are now driven by the Velocity template engine,
and may be modified by the site administrator by editing a template
file under `'$site_path'/etc/mail`.
* issue 311 Clarify email texts/subject
The default email notification formatting was changed to make the
subject lines and message bodies more consistent, and easier to
* issue 204 Add project list popup under Settings > Watched Projects
The project list panel makes it easier for users to browse all
projects they have at least READ +1 access to, and add them to their
watched project set so notifications can be configured.
* stream-event support for all ref-update events
Whenever a ref is updated via either a direct push to a branch or a
Gerrit change submission, Gerrit will now send a new "ref-updated"
event to the event stream.
User Management
* SSO via client SSL certificates
A new auth.type of CLIENT_SSL_CERT_LDAP supports authenticating users
using client SSL certificates. This feature requires using the
embedded Jetty web server with SSL enabled, and an LDAP directory to
lookup individual account information.
* issue 503 Inactive accounts may be disabled.
Administrators can manually update the accounts table, setting
inactive = `Y` to mark user accounts inactive. Inactive accounts
cannot sign-in, cannot be added as a reviewer, and cannot be added
to a group.
* Improve the no-interactive-shell error message over SSH
Instead of giving a short 'no shell available' error, Gerrit Code
Review now prints a banner letting the user know they have
authenticated successfully, interactive shells are disabled, and how
to clone a hosted project:
$ ssh -p 29418
**** Welcome to Gerrit Code Review ****
Hi A. U. Thor, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://
Connection to closed.
* Configure SSHD maxAuthTries, loginGraceTime, maxConnectionsPerUser
The internal SSH daemon now supports additional configuration
settings to reduce the risk of abuse.
* issue 558 Allow Access rights to be edited by clicking on them.
* New 'Project Owner' system group to define default rights
The new system group 'Project Owners' can be used in access
rights to mean any user that is a member of any group that
has the 'Owner' access category granted within that project.
This system group is primarily useful in higher level projects
such as '\-- All Projects \--' to define standard access rights
for all project owners.
* issue 557 Allow rejection of changes without Change-Id line.
Project owners can set a flag to require all commits to include
the Gerrit specific 'Change-Id: I...' line during initial upload,
reducing the risk of confusion when amends need to occur to
incorporate reviewer feedback.
* issue 613 create-project: Add --permissions-only option
The new flag skips creating the associated Git repository, making the
new project suitable for use as a parent to inherit permissions from.
* create-project: Optionally create empty initial commit
The `repo` tool used by Android doesn't like to clone an empty Git
repository, making it difficult to setup a review for the initial file
contents. create-project can now optionally create an empty initial
commit, permitting repo to sync the empty project.
* Block off commands on a server for certain user groups.
The upload.allowGroup and receive.allowGroup settings in gerrit.config
can be used to restrict which users can perform git clone/fetch or git
push on this server. This can be useful if clone/fetch should be
limited to only site administrators, while normal users are supposed
to use to less expensive mirror servers.
* issue 685 Define gerrit.replicateOnStartup to control replication
The automatic replicate every project action that occurs during server
startup can now be disabled by setting replicateOnStartup = false.
This is primarily useful for sites with extremely large numbers of
projects and replication targets, but runs the risk of having a target
be out of date relative to the master server.
* New non-blocking function category "NoBlock"
Site defined approval categories may now use the function "NoBlock"
to permit scoring without blocking submission. This is mostly
useful for automated tools to provide optional feedback on a change.
* Ability to reject commits from entering repository
The Git-note style branch `refs/meta/reject-commits` can be created
by the project owner or site administrator to define a list of
commits that must not be pushed into the repository. This can be
useful after performing a project-wide filter-branch operation to
prevent the older (pre-filter-branch) history from being reintroduced
into the repository.
Bug Fixes
Web UI
* issue 498 Enable Keyboard navigation after change submit
* issue 691 Make ']' on last file go up to change
* issue 741 Make ENTER work for 'Create Group'
* issue 622 Denote a symbolic link in side-by-side viewer
* issue 612 Display empty branch list when project has no repository
* issue 672 Fix deleting exclusive branch level rights
* issue 645 Display 'No difference' between unchanged patchsets
* Display groups as links to group information
* Remove ctrl-d keybinding to discard comment, honor browser default
* Do not auto enable save buttons, wait for changes to be made
* Disable 'Create Group' button if group name not entered
* Show commit message in PatchScreen if old patch sets are compared
* Fixed a number of focus and shortcut bugs in Firefox, Chrome
* issue 487 Work around buggy MyersDiff by killing threads
MyersDiff sometimes locked up in an infinite loop when computing
the intraline difference information for a file. These threads
are now killed after an administrator specified timeout
(cache.diff_intraline.timeout, default is 5 seconds). If the
timeout is reached the file content is displayed without intraline
differences. This offers reduced functionality to the end-user, but
prevents the "path of death" which usually took down a Gerrit server.
* Hide access rights not visible to user
Users were able to view access rights for branches they didn't
actually have READ +1 permission on. This may have leaked
information about branches and/or groups to users that shouldn't
know about code names contained within either string. Users that
are not project owners may now only view access rights for branches
they have at least READ +1 permission on.
Change Query
* issue 689 Fix age:4days to parse correctly
* Make branch: operator slightly less ambiguous
Push Support
* issue 695 Permit changing only the author of a commit
Correcting only the author of a change failed to upload the new patch
set onto the existing change, as neither the message nor the files
were modified. Fixed.
* issue 576 Allow Push Branch +3 to force replace a tag
Previously it was not possible to replace a tag object, even if
`git push \--force` was used. Fixed.
* issue 690 Refuse to run receive-pack if refs/for/branch exists
If a server repository was corrupted by an administrator manually
creating a reference within the magical refs/for/ namespace, Gerrit
became confused when changes were uploaded for review. If this case
occurs push now aborts very early, with a clear error message
indicating the problem. To recover an administrator must clear the
refs/for/ namespace manually.
* Allow receive-pack without Read +2 but with Push Head +1
Users who had direct branch push permission but lacked the ability to
create changes for review were unable to push to a project. Fixed.
This (finally) makes Gerrit a replacement for Gitosis or Gitolite.
* issue 683 Don't assume authGroup = "Registered Users" in replication
Previously a misconfigured authGroup in replication.config may have
caused the server to assume "Registered Users" instead of the group(s)
admin actually wanted. This may have caused the replication to see
(or not see) the correct set of projects.
* issue 482 Upon replication fail, automatically retry later
If replication fails (for example due to temporary network
connectivity problems), other pending replication events to the
same server are deferred and retried later until successful.
* Replicate all refs received from push
Replication now replicates all references, not just those that
appear under `refs/heads`, `refs/tags`, or `refs/changes`. This
fix may be relevant if the server supports user-private sandboxes
such as `refs/dev/'$\{username\}'/*`.
* issue 658 Allow refspec shortcuts (push = master) for replication
User Management
* Ensure proper escaping of LDAP group names
Some special characters may appear in LDAP group names, these must be
escape when looking up the group information from JNDI, otherwise the
lookup fails. Fixed by applying the necessary escape sequences.
* Let login fail if user name cannot be set
If the user name for a new account is supposed to import from LDAP
but cannot because it is already in use by another user on this
server, the new account won't be created.
* actually verify running processes
Previously ` check` claimed a server was running if the
pid file was present, even if the process itself was dead. It now
checks `ps` for the process before claiming it is running.
* Don't allow exclusive branch rights to block Owner inheritance
Exclusive branch level rights prevented the a higher level branch
owner from managing the branch rights, unless they had an additional
access right for the exclusive rights. Now Owner inheritance cannot
be blocked, ensuring that the higher level owner can manage their
entire namespace.
* Allow overriding permissions from parent project
Permissions in the parent project could not be overridden in the
child project. Permissions can now be overidden if the category,
group name and reference name all match.