blob: 7a29d0e9a24ad6f6b2efb49c9bb860a3481b0910 [file] [log] [blame]
= Release notes for Gerrit 2.3
Gerrit 2.3 is now available:
link:https://www.gerritcodereview.com/download/gerrit-2.3.war[https://www.gerritcodereview.com/download/gerrit-2.3.war]
== Schema Change
*WARNING:* This release contains schema changes. To upgrade:
----
java -jar gerrit.war init -d site_path
----
*WARNING:* Upgrading to 2.3.x requires the server be first upgraded
to 2.1.7 (or a later 2.1.x version), and then to 2.3.x.
If you are upgrading from 2.2.x.x, you may ignore this warning and
upgrade directly to 2.3.x.
== New Features
=== Drafts
* New draft statuses and magic branches
+
Adds draft status to Change. DRAFT status in change occurs before NEW
and will be for a change that is not meant for review (yet).
Also adds magic branches refs/drafts/ and refs/publish/ that
will handle whether or not a patchset is a draft or goes straight to
review. refs/for/ should be deprecated in favor of explicitly marking
a patchset as a draft or directly to review.
* Draft patchset and change visibility in UI
+
If a patchset is a draft, adds a (DRAFT) label next to the revision
(or gitweb link if it exists). If a change is a draft, adds a (DRAFT)
next to the subject and changes the status appropriately.
* Publish draft patchsets in UI and SSH
+
Adds Publish button to draft patchsets in UI and an option to
publish draft patchsets in the review ssh command. Publishing a draft
patchset makes it visible. Publishing a draft patchset in a draft
change irreversibly upgrades the change status to NEW.
* Delete draft changes and patchsets
+
Adds ability to delete draft changes and patchsets that are not meant
or fit for code review. Deleting a draft patchset also deletes the
corresponding ref from the repository and decrements the next patch
set number for the change if necessary. Deleting a draft change
deletes all of its (draft) patchsets.
* Add pushing drafts to refs/drafts/
+
Pushing to refs/drafts/ will now push a draft patchset. If this is the
first patch set, change created will be in draft status. Pushing a
draft patchset to a draft change keeps it in draft status. Pushing
a non-draft patchset (with refs/publish/ or refs/for/, they do the
same thing) to a draft change turns it into a non-draft change.
Draft patchsets cannot be submitted.
* When pushing changes as drafts, output [DRAFT] next to the change link
=== Web
* issue 203 Create project through web interface
+
Add a new panel in the Admin->Projects Screen. It
enables the users that are allowed to create projects
via command-line to create them also via web interface.
* Suggest parent for 'create-project' in the UI.
+
Add a list of parent suggestions for 'create project'
in the UI, so the user can select a parent for the new
project from a list of projects that are already parents to
other projects.
* issue 981 Fix diffs skipping one line
+
Don't show '... skipping 1 common line ...'. The text to show this
takes up just as much space as showing the line which was skipped.
* issue 18 Support expanding lines of context in diff
+
Allow lines of context which were skipped in the side-by-side diff
view to be expanded. This makes it easier to get more code context
when needed but not show huge amounts of unneeded data.
* Move checkbox to mark file as reviewed into title bar
* Redirect the user to the reverted change (when reverting).
* On group rename update the group name in the page title
* In ProjectAccessScreen add link to history of project.config in gitweb
* Removed superfluous 'comment' for patch history table.
* Make OpenID login images transparent
* Disable SSH Keys in the web UI if SSHD is disabled
=== SSH
* Adds --description (-d) option to ls-projects
+
Allows listing of projects together with their respective
description.
* ls-projects: new option to list all accessible projects
+
Add a new option '--all' to the 'ls-projects' SSH command to display
all projects that are accessible by the calling user account. Besides
the projects that the calling user account has been granted 'READ'
access to, this includes all projects that are owned by the calling
user account (even if for these projects the 'READ' access right is
not assigned to the calling user account).
* Suggest parent for 'create-project' in the SSH command
+
Add an option '--suggest-parents' which will print out
a list of projects that are already parents to another
projects, thus it can help user to find a suitable
parent for the new project.
* Support reparenting all children of a parent project
+
This change adds a new option to the 'set-project-parent' command that
allows reparenting all child projects of one parent project to another
parent project.
* set-parent-project: evict child projects from project cache
* Add ssh command to list groups.
* ls-groups: add option to list groups for a project
+
Add an option to the ls-groups SSH command that allows to list only
those groups for which any permission is assigned to a project.
* ls-groups: Add option to only list groups that are visible to all
* ls-groups: Support listing groups by group type
* ls-groups: Support listing of groups for a user
* Add new SSH command to rename groups
* Support for --file option for ssh queries.
+
Allows user to list files and attributes (ADDED,
MODIFIED, DELETED, RENAMED, COPIED) when querying for
patch sets.
* Output full commit message in query results
* Option for SSHD review-cmd to always publish the message.
+
"--force-message" option for the SSHD review command,
which allows Gerrit to publish the "--message", even if the
labels could not be applied due to change being closed.
=== Config
* issue 349 Apply states for projects (active, readonly and hidden)
+
Active state indicates the project is regular and is the default value.
+
Read Only means that users can see the project if read permission is
granted, but all modification operations are disabled.
+
Hidden means the project is not visible for those who are not owners
* Enable case insensitive login to Gerrit WebUI for LDAP authentication
+
Gerrit treats user names as case sensitive, while some LDAP servers
don't. On first login to Gerrit the user enters his user name and
Gerrit queries LDAP for it. Since LDAP is case-insensitive with regards
to the username, the LDAP authentication succeeds regardless in
which case the user typed in his user name. The username is stored in
Gerrit exactly as entered by the user. For further logins the user
always has to use the same case. If the user specifies his user name in
a different case Gerrit tries to create a new account which fails with
"Cannot assign user name ... to account ...; name already in use.".
This error occurs because the LDAP query resolves to the same LDAP
user and storing the username for SSH (which is by default always
lower case) fails because such an entry exists already for the first
account that the user created.
+
This change introduces a new configuration parameter that converts the
user name always to lower case before doing the LDAP authentication.
By this the login to the Gerrit WebUI gets case insensitive. If this
configuration parameter is set, the user names for all existing
accounts have to be converted to lower case. This change includes a
server program to do this conversion.
* Enable case insensitive authentication for git operations
+
A new configuration parameter is introduced that converts the username
that is received to authenticate a git operation to lower case for
looking up the user account in Gerrit.
+
By setting this parameter a case insensitive authentication for the
git operations can be achieved, if it is ensured that the usernames in
Gerrit (scheme 'username') are stored in lower case (e.g. if the
parameter 'ldap.accountSshUserName' is set to
'${sAMAccountName.toLowerCase}').
* Support replication to local folder
* Read timeout parameter for LDAP connections: ldap.readTimeout
+
This helps prevent a very slow LDAP server from blocking
all SSH command creation threads.
* Introduce a git maxObjectSizeLimit in the [receive] config
+
This limits the size of uploaded files
* Make 'Anonymous Coward' configurable
* Add property to configure path separator in URLs for a gitweb service
* Customize link-name pointing to gitweb-service.
+
Previously the link to the external gitweb-type
pages said "(gitweb)" regardless if using cgit
or a custom service.
* Support gitweb.type=disabled
* rules.enable: Support disabling per project prolog rules in gerrit.config
* Allow site administrators to define Git-over-HTTP mirror URL
* Allow sshd.listenAddress = off to disable the daemon
* daemon: Allow httpd without sshd
* Allow disabling certain features of HostPageServlet
+
These features are: user agent detection and automatic refresh
logic associated with the site header, footer and CSS.
=== Dev
* Fix 'No source code is available for type org.eclipse.jgit.lib.Constants'
* Fix miscellaneous compiler warnings
* Add entries to .gitignore for m2e settings/preference files
* Package source JARs for antlr, httpd, server
* pom.xml: change gerrit-war's dependency on gerrit-main to runtime
+
This only seems to matter to IntelliJ, since the Main class is
provided to the war via an overlay in gerrit-war/pom.xml
* Fixed the full name of the MAVEN2_CLASSPATH_CONTAINER
+
Fixes java.lang.NoClassDefFoundError: com/google/gwt/dev/DevMode
=== Miscellaneous
* Allow superprojects to subscribe to submodules updates
+
The feature introduced in this release allows superprojects to
subscribe to submodules updates.
+
When a commit is merged to a project, the commit content is scanned
to identify if it registers submodules (if the commit contains new
gitlinks and .gitmodules file with required info) and if so, a new
submodule subscription is registered.
+
When a new commit of a registered submodule is merged, gerrit
automatically updates the subscribers to the submodule with new
commit having the updated gitlinks.
+
The most notable benefit of the feature is to not require
to push/merge commits of super projects (subscribers) with gitlinks
whenever a project being a submodule is updated. It is only
required to push commits with gitlinks when they are created
(and in this case it is also required to push .gitmodules file).
* Allow Realm to participate when linking an account identity
+
When linking a new user identity to an existing account, permit the
Realm to observe the new incoming identity and the current account,
and to alter the request. This enables a Realm to observe when a
user verifies a new email address link.
* issue 871 Show latest patchset with cherry-picked merge
+
When a change is published via the cherry-pick merge strategy,
show the final commit as a patchset in the change history.
This now makes it possible to search for the cherry-picked SHA1.
* issue 871 Display hash of the cherry-pick merge in comment
* Added more verbose messages when changes are being rejected
* Display proper error message when LDAP is unavailable
* Clarify error msg when user's not allowed to '--force push'.
* ContainerAuthFilter: fail with FORBIDDEN if username not set
* Resolve 'Project Owners' group if it is included into another group
* Hide SSH URL in email footers if SSH is disabled
* Sort the jar files from the war before adding to classpath.
* Apply user preferences when loading site
* Ensure HttpLog can always get the user identity
* Prevent comments spam for abandoned commit
+
If some change was abandoned but later submitted (e.g. by
cherry-picking it to a another branch) then pushing a new branch
that contains this change no longer adds a new comment.
* Make Address, EmailHeader visible to other EmailSenders
* Use transactions to handle comments when possible
* Try to use transactions when creating changes
* gerrit.sh: disown doesn't accept pid as a argument, fix script
* gerrit.sh: detach gerrit properly so it won't keep bad ssh sessions open.
* Cache list of all groups in the group cache
* issue 1161 Evict project in user cache on save of project meta data
* Ensure that the site paths are resolved to their canonical form (for Windows)
* Connect Velocity to slf4j
* Expose project permissionOnly status via JSON-RPC
* Make HEAD of All-Projects point to refs/meta/config
* issue 1158 Added support for European style dates
* Make macros in email templates local to the template
* Support http://server/project for Git access
* Use _ instead of $ for implementation-detail Prolog predicates
* Update the Sign In anchor with current URL
+
Always update the href of the Sign In anchor in the menu bar with
the current page URL after /login/, making the redirect process
bring users back to the current view after sign in.
* Improve validation of email registration tokens
== Upgrades
* Upgrade to gwtorm 1.2
* Upgrade to JGit 1.1.0.201109151100-r.119-gb4495d1
+
This is needed because of this change:
https://gerrit-review.googlesource.com/#/c/30450/
* Support Velocity 1.5 (as well as previous 1.6.4)
== Bug Fixes
* Avoid NPE when group is missing
* Do not fail with NPE if context path of request is null
* Fix NPE in set-project-parent command if parent is not specified
* Only send mail to author and committer if they are registered to prevent an NPE
* Avoid potential NPE when querying the queue.
* Allow loading Project Access when there is no refs/meta/config
* Fix calculation of project name if repo is not existing
+
If a project inherits from a non existing parent, prevent a
StringIndexOutOfBoundsException.
* Fix: Suppress "Error on refs/cache-automerge" warnings.
* Don't allow registering for cleanup after cleanup runs
+
This prevents leaking a database connection.
* issue 807 Fix: Tags are not replicated properly
* Prevent smtp rejected users from rejecting emails for all users
* Fix token saving redirect in container auth
+
Update the jump page that redirects users from /#TOKEN to
/login/TOKEN. This forces using the container based
authentication. Also correct "/login//" to be just "/login/".
* Use custom error messages for Git-over-HTTP
+
Ensure clients see messages related to contributor agreement not
being activated even if they push over HTTP.
* Avoid double key event for GroupReferenceBox
* Fix git push authentication over HTTP
* Fix http://login/ redirect bug
* Fix missing targets in /login/ URLs
* set-project-parent: if update of 1 project fails continue with others
* Verify the case of the project name before opening git repository
* Update top level SUBMITTING_PATCHES URLs
== Documentation
* Some updates to the design docs
* cmd-index: Fix link to documentation of rename-group command
* Update documentation for testing SSH connection
* Bypass review updated with 2.2.x permissions
* Add documentation for 'peer_keys'
* Improve 'Push Merge Commit' access right documentation
* Access control: Capabilities documented
** Administrate Server
** Create Account
** Create Group
** Create Project
** Flush Caches
** Kill Task
** Priority
** Query Limit
** Start Replication
** View caches
** View connections
** View queue
* Access control: Example roles documented
** Contributor
** Developer
** CI System
** Integrator
** Project owner
** Administrator