|  | 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 |