diff options
Diffstat (limited to 'ReleaseNotes')
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.0.21.txt | 2 | ||||
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.0.24.txt | 2 | ||||
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.5.1.txt | 5 | ||||
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.5.2.txt | 2 | ||||
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.5.txt | 10 | ||||
-rw-r--r-- | ReleaseNotes/ReleaseNotes-2.6.txt | 1702 | ||||
-rw-r--r-- | ReleaseNotes/index.txt | 5 |
7 files changed, 1718 insertions, 10 deletions
diff --git a/ReleaseNotes/ReleaseNotes-2.0.21.txt b/ReleaseNotes/ReleaseNotes-2.0.21.txt index 7dd9ef42d3..47ba6542f9 100644 --- a/ReleaseNotes/ReleaseNotes-2.0.21.txt +++ b/ReleaseNotes/ReleaseNotes-2.0.21.txt @@ -201,7 +201,7 @@ not appear under the original change notification thread. Gerrit no longer forges the From header in notification emails. To enable the prior forging behavior, set `sendemail.from` to `USER` in gerrit.config. For more details see -[http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html#sendemail.from sendemail.from] +link:http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html#sendemail.from[sendemail.from] Bug Fixes --------- diff --git a/ReleaseNotes/ReleaseNotes-2.0.24.txt b/ReleaseNotes/ReleaseNotes-2.0.24.txt index 9481a3a319..7e0a617b74 100644 --- a/ReleaseNotes/ReleaseNotes-2.0.24.txt +++ b/ReleaseNotes/ReleaseNotes-2.0.24.txt @@ -67,7 +67,7 @@ requests back to the developers. * issue 300 Support SMTP over SSL/TLS + Encrypted SMTP is now supported natively within Gerrit, see -[http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html#sendemail.smtpEncryption sendemail.smtpEncryption] +link:http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html#sendemail.smtpEncryption[sendemail.smtpEncryption] Bug Fixes --------- diff --git a/ReleaseNotes/ReleaseNotes-2.5.1.txt b/ReleaseNotes/ReleaseNotes-2.5.1.txt index ba4e204b27..6fc0dc57de 100644 --- a/ReleaseNotes/ReleaseNotes-2.5.1.txt +++ b/ReleaseNotes/ReleaseNotes-2.5.1.txt @@ -38,9 +38,10 @@ the parent project can only be pushed/submitted by Gerrit administrators. + In addition it is now no longer possible to -- set a non-existing project as parent (as this would make the project ++ +** set a non-existing project as parent (as this would make the project be orphaned) -- set a parent project for the `All-Projects` root project (the root +** set a parent project for the `All-Projects` root project (the root project by definition has no parent) by pushing changes of the `project.config` file to `refs/meta/config`. diff --git a/ReleaseNotes/ReleaseNotes-2.5.2.txt b/ReleaseNotes/ReleaseNotes-2.5.2.txt index ceb23c280b..08b4f86f02 100644 --- a/ReleaseNotes/ReleaseNotes-2.5.2.txt +++ b/ReleaseNotes/ReleaseNotes-2.5.2.txt @@ -7,7 +7,7 @@ link:http://code.google.com/p/gerrit/downloads/detail?name=gerrit-full-2.5.2.war There are no schema changes from 2.5, or 2.5.1. -However, if upgrading from a version older than 2.5, follow the upgrade +However, if upgrading from any earlier version, follow the upgrade procedure in the 2.5 link:ReleaseNotes-2.5.html[Release Notes]. Bug Fixes diff --git a/ReleaseNotes/ReleaseNotes-2.5.txt b/ReleaseNotes/ReleaseNotes-2.5.txt index 55fbb60d6e..023b4bf096 100644 --- a/ReleaseNotes/ReleaseNotes-2.5.txt +++ b/ReleaseNotes/ReleaseNotes-2.5.txt @@ -270,11 +270,11 @@ ad-hoc scripting use cases. * link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html[Documentation of the REST API] * Support REST endpoints to -** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#changes[query changes] -** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#projects[list projects] -** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#suggest-projects[suggest +** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api-changes.html[query changes] +** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api-projects.html[list projects] +** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api-projects.html#suggest-projects[suggest projects] -** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#accounts_self_capabilities[query +** link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api-accounts.html#list-account-capabilities[query the global capabilities of the calling user] * Support link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#authentication[anonymous @@ -1376,7 +1376,7 @@ read every other reference in the repository. * Avoid second remote call to lookup approvals when loading change results + -By using the new link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html#changes[`/changes/`] +By using the new link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api-changes.html[`/changes/`] REST endpoint the web UI client now obtains the label information during the query and avoids a second round trip to lookup the current approvals for each displayed change. For most users this should improve diff --git a/ReleaseNotes/ReleaseNotes-2.6.txt b/ReleaseNotes/ReleaseNotes-2.6.txt new file mode 100644 index 0000000000..85f2844d3c --- /dev/null +++ b/ReleaseNotes/ReleaseNotes-2.6.txt @@ -0,0 +1,1702 @@ +Release notes for Gerrit 2.6 +============================ + +Gerrit 2.6 is now available: + +link:http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.6.war[http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.6.war] + +Gerrit 2.6 includes the bug fixes done with +link:ReleaseNotes-2.5.1.html[Gerrit 2.5.1] and +link:ReleaseNotes-2.5.2.html[Gerrit 2.5.2]. These bug fixes are *not* +listed in these release notes. + +Schema Change +------------- +*WARNING:* This release contains schema changes. To upgrade: +---- + java -jar gerrit.war init -d site_path +---- + +*WARNING:* Upgrading to 2.6.x requires the server be first upgraded to 2.1.7 (or +a later 2.1.x version), and then to 2.6.x. If you are upgrading from 2.2.x.x or +newer, you may ignore this warning and upgrade directly to 2.6.x. + +Release Highlights +------------------ +* 42x improvement on `git clone` and `git fetch` ++ +Running link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-gc.html[ +gerrit gc] allows JGit to optimize a repository to serve clone and fetch +faster than C Git can, with massively lower server CPU required. Typically +Gerrit 2.6 can completely transfer a project to a client faster than C Git +can finish "Counting" the objects. + +* Completely customizable workflow ++ +Individual projects can add (or remove) score categories through +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-labels.html[ +labels] and link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html[ +Prolog rules]. + +New Features +------------ + +Web UI +~~~~~~ + +Global +^^^^^^ + +* New Login Screens ++ +New form based HTML screens for login allow browsers to offer the +choice to save the login data locally in the user's password store. + +* Rename "Groups" top-level menu to "People" + +* Move "Draft Comments" link next to "Drafts" link + +* Highlight the active menu item + +* Move user info, settings, and logout to popup dialog + +* Show a small version of the avatar image next to the user's name. + +* Show avatar image in user info popup dialog + +* Always show 'Working ...' message ++ +The 'Working ...' message is relatively positioned from the top of +the browser, so that the message is always visible, even if the user +has scrolled down the page. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#suggest.from[ + suggest.from] configures a minimum number of characters before + matches for reviewers, accounts, groups or projects are offered. + +* Make the default font size "small". + +* Mark all CSS classes as external so users can rely on them. + +Search +^^^^^^ +* Animate search bar by expanding & unexpanding ++ +When the search bar is used, expand it to allow for more text to be +visible. When it is blurred, shrink it back to the original size. + +* Suggest projects, groups and users in search panel ++ +Suggest projects, groups and users in the search panel as parameter for +those search operators that expect a project, group or user. + +* In search panel suggest 'self' as value for operators that expect a user + +* Quote values suggested for search operators only if needed ++ +The values that are suggested for the search operators in the search +panel are now only quoted if they contain a whitespace. + +Change Screens +^^^^^^^^^^^^^^ + +* A change's commit message can be edited from the change screen. + +* A change's topic can be added, removed or changed from the + change screen. + +* An "Add Comment" button is added to change screen + +* The reviewer matrix on a change displays gray boxes where permissions + do not allow voting in that category. ++ +The coloring enables authors to quickly identify if another reviewer +is necessary to continue the change. + +* link:https://code.google.com/p/gerrit/issues/detail?id=353[Issue 353] & + link:https://code.google.com/p/gerrit/issues/detail?id=1123[Issue 1123]: + New link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/project-setup.html#rebase_if_necessary[ + Rebase If Necessary] submit type ++ +This is similar to cherry pick, but honors change dependency +information. + +* The rebase button is hidden when the patch set is current. + +* Improved review message when a change is rebased in the UI ++ +When a change is rebased in the UI by pressing the rebase button, a +comment is added onto the review. Instead of only saying 'Rebased' the +message is now more verbose, e.g. 'Patch Set 1 was rebased'. + +* The submit type that is used for submitting a change is shown on the + change screen in the info block. ++ +This is useful because the submit type of a change can now be +link:#submit-type-from-prolog[controlled by Prolog]. + +* Replace the All Diff buttons on the change screen with links ++ +The action buttons to open the diff for all files in own tabs consumed +too much space due to the long label texts. + +* The patch set review screen can include radio buttons for custom + labels if enabled by + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html#_how_to_write_submit_rules[submit rules]. + +* Voting on draft changes is now possible. + +* Recommend rebase on Path Conflict + +* link:https://code.google.com/p/gerrit/issues/detail?id=1685[Issue 1685]: + After 'Up to change' expand the patch set that was just reviewed ++ +After clicking on the 'Up to change' link on a patch screen, the patch +set that was just reviewed is automatically expanded on the change +screen. + +* Allow direct change URLs to end with '/'. + +* Slightly increase commit message text size from 8px to 9px. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1381[Issue 1381]: + Remove the ID column from change tables ++ +Users don't really need the ID column present. For most changes the +subject is descriptive and unique enough to identify the correct +change. + +* Do not wrap project/branch/owner fields in change table ++ +This makes it easier to use Gerrit on narrow screens. + +Patch Screens +^^^^^^^^^^^^^ + +* Support for file comments ++ +It is now possible to comment on a whole file in a patch. + +* Have the reviewed panel also at the bottom of the patch screen ++ +Reviewers normally review patches top down, finishing the review when +they reach the bottom of the patch. To use the streamlined review +workflow they now don't need to scroll back to the top to find the +reviewed checkbox and link. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1494[Issue 1494]: + Use mono-font for displaying the file contents ++ +This avoids alignment errors when syntax highlighting is enabled. + +Project Screens +^^^^^^^^^^^^^^^ + +* Support filtering of projects in the project list screen ++ +Filter matches are highlighted by bold printing. ++ +The filter is reflected by the `filter` URL parameter. + +* Support filtering of projects in ProjectListPopup ++ +Filter matches are highlighted by bold printing. + +* Display a query icon for each project in the project list screen that + links to the default query/dashboard of that project. + +* Replace projects side menus with top menus ++ +The top menus are submenus to the Project Menu and they appear only +when a project has been selected. + +* Remember the last Project Screen used ++ +Remember the last project screen used every time a project screen is +loaded. Go to the remembered screen when selecting a new project from +the project list instead of always going to the project info screen. + +* Remember the last project viewed ++ +Remember the last project viewed when navigating away from a project +screen. If there is a remembered project, then the extra project links +are not hidden. + +* Add clone panel to the project general screen + +* New screen for listing and accessing the project dashboards. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1677[Issue 1677]: + Place the 'Browse' button to select a watched project next to input field + +* Ask user to login if project is not found ++ +Accessing a project URL was failing with 'Not Found - The page you +requested was not found, or you do not have permission to view this +page' if the user was not signed in and the project was not visible to +'Anonymous Users'. Instead Gerrit now asks the user to login and +afterwards shows the project to the user if it exists and is visible. +If the project doesn't exist or is not visible, the user will still get +the Not Found screen after sign in. + +* Improve error handling on branch creation ++ +Improve the error messages that are displayed in the WebUI if the +creation of a branch fails due to invalid user input. + +Group Screens +^^^^^^^^^^^^^ + +* Support filtering of groups in the group list screen ++ +Filter matches are highlighted by bold printing. ++ +The filter is reflected by the `filter` URL parameter. + +* Remove group type from group info screen ++ +The information about the group type was not much helpful. All groups +that can be seen in Gerrit are of type 'INTERNAL', except a few +well-known system groups which are of type 'SYSTEM'. The system groups +are so well-known that there is no need to display the type for them. + +Dashboard Screens +^^^^^^^^^^^^^^^^^ + +* Link dashboard title to a URL version of itself ++ +When using a stable project dashboard URL, the URL obfuscates the +content of the dashboard which can make it hard to debug a dashboard or +copy and modify it. In the special case of stable dashboards, make the +title a link to an unstable URL version of the dashboard with the URL +reflecting the actual dashboard contents the way a custom dashboard +does. + +* Increase time span for "Recently Closed" section in user dashboard to 4 weeks. + +Account Screens +^^^^^^^^^^^^^^^ + +* link:https://code.google.com/p/gerrit/issues/detail?id=1740[Issue 1740]: + Display description how to generate SSH Key in SshPanel ++ +Display a description of how to generate an SSH Key in an expandable +section in the SshPanel instead of linking to the GitHub SSH tutorial. +The GitHub SSH tutorial was partially not relevant and confused users. + +* Make the text for "Register" customizable + +Plugin Screens +^^^^^^^^^^^^^^ + +* Show status for enabled plugins in the WebUI as 'Enabled' ++ +Earlier no status was shown for enabled plugins, which was confusing to +some users. + +REST API +~~~~~~~~ + +* A big chunk of the Gerrit functionality is now available via the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api.html[REST API]. ++ +The REST API is *NOT* complete yet and some functionality is still missing. ++ +To find out which functionality is available, check the REST endpoint documentation for +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-projects.html[projects], +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-changes.html[changes], +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-groups.html[groups] and +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-accounts.html[accounts]. + +* Support setting `HEAD` of a project + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-projects.html#set-head[via REST]. + +* Audit support for REST API. ++ +Allow generating Audit events related to REST API execution. The +structure of the AuditEvent has been extended to support the new +name-multivalue pairs used in the REST API. ++ +This is breaking compatibility with the 2.5 API as it changes the +params data type, this is needed anyway as the previous list of +Objects was not providing all the necessary information of +"what relates to what" in terms of parameters info. ++ +Existing support for SSH and JSON-RPC events have been adapted in +order to fit into the new name-multivalue syntax: this allow a +generic audit plug-in to capture all parameters regardless of where +they have been generated. + +* Remove support for deprecated `--format` option when listing changes ++ +Querying changes via REST is now always producing JSON output. + +* Introduce `id` property on REST entities ++ +The `/changes/` entities now use `id` to include a triplet of the +project, branch and change-id string to uniquely identify that change +on the server. This moves the old `id` field to be named `change_id`, +which is a breaking change. + +* Accept common forms of malformed JSON ++ +Some clients may send JSON-ish instead of JSON. Be nice to those +clients and accept various useful forms of incorrect syntax: ++ +** End of line comments starting with `//` or `#` and ending with a + newline character. +** C-style comments starting with `/*` and ending with `*/` + Such comments may not be nested. +** Names that are unquoted or single quoted. +** Strings that are unquoted or single quoted. +** Array elements separated by `;` instead of `,`. +** Unnecessary array separators. These are interpreted as if null was + the omitted value. +** Names and values separated by `=` or `=>` instead of `:`. +** Name/value pairs separated by `;` instead of `,`. + +* Be more liberal about parsing JSON responses ++ +If the response begins with the JSON magic string, remove it before +parsing. If a response is missing this leading string, parse the +response as-is. + +* Accept simple form encoded data for REST APIs ++ +Simple cases like `/review` or `/abandon` can now accept standard form +values for basic properties, making it simple for tools to directly +post data: ++ +---- + curl -n --digest \ + --data 'message=Does not compile.' \ + --data labels.Verified=-1 \ + http://localhost:8080/a/changes/3/revisions/1/review +---- ++ +Form field names are JSON field names in the top level object. If dot +appears in the name the part to the left is taken as the JSON field +name and the part to the right as the key for a Map. This nicely fits +with the labels structure used by `/review`, but doesn't support the +much more complex inline comment case. Clients that need to use more +complex fields must use JSON formatting for the request body. + +* Allow administrators to see other user capabilities ++ +Expand `/accounts/{id}/capabilities` to permit an administrator +to inspect another user's effective capabilities. + +* Declare kind in JSON API results ++ +This is recommended to hint to clients what the entity type is when +processing the JSON payload. + +* Format h/help output as plain text not JSON ++ +The output produced when the client requested the h or help property +from a JSON API is always produced from constant compiled into the +server. Assume this safe to return to the client as text/plain content +and avoid wrapping it into an HTML escaped JSON string. + +* Use string for JSON encoded plain text replies ++ +Instead of wrapping the value into an object, just return the +string by itself. This better matches what happens with the plain +text return format. + +* Wrap possible HTML plain text in JSON on GET ++ +If the HTML appears like MSIE might guess it is HTML (such as if it +contains `<`) encode the response as a JSON object instead of as a +simple plain text string. This won't show up very often for clients, +and protects MSIE users stuck on ancient versions (pre MSIE 8). + +* Ask MSIE to never sniff content types on REST API responses ++ +Newer versions of MSIE can disable the content sniffing feature if the +server asks it to by setting an extension header. It is annoying, but +necessary, that a server needs to say "No really, I _am_ telling you +the right Content-Type, trust it." ++ +This feature was added in MSIE 8 Beta 2 so it doesn't protect users +running MSIE 6 or 7, but those are ancient and users should upgrade. ++ +Enable this on the REST API responses because we sometimes send back +text/plain results that are really just plain text. Existing JSON +responses are protected from accidential sniffing and treatment as +HTML thanks to Gson encoding HTML control characters using Unicode +character escapes within JSON strings. + +* Apache reverse proxies must switch to mod_rewrite ++ +When Apache is used as a reverse proxy the server must be reconfigured +to use mod_rewrite and AllowEncodedSlashes. For updated information +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-reverseproxy.html#_apache_2_configuration[ +review the Apache 2 Configuration documentation]. + +Project Dashboards +~~~~~~~~~~~~~~~~~~ +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-dashboards.html#project-dashboards[ + Support for storing custom dashboards for projects] ++ +Custom dashboards can now be stored in the projects +`refs/meta/dashboards/*` branches. ++ +The project dashboards are shown in a new project screen and can be +link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-projects.html#dashboard-endpoints[ +accessed via REST]. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-dashboards.html#project-default-dashboard[ + Allow defining a default dashboard for projects] + +* Support inheritance for project dashboards. ++ +In dashboards queries the `${project}` token can be used as placeholder +for the project name. This token will be replaced with the project to +which a dashboard is being applied. + +* On the project list screen a query icon is displayed for each project + that links to the default dashboard of that project. + +* Support a `foreach` parameter for custom dashboards. ++ +The `foreach` parameter which will get appended to all the queries in +the dashboard. + +Access Controls +~~~~~~~~~~~~~~~ +* Allow to overrule `BLOCK` permissions on the same project ++ +It was impossible to block a permission for a group and allow the same +permission for a sub-group of that group as the `BLOCK` permission +always won over any `ALLOW` permission. For example, it was impossible +to block the "Forge Committer" permission for all users and then allow +it only for a couple of privileged users. ++ +An `ALLOW` permission has now priority over a `BLOCK` permission when +they are defined in the same access section of a project. To achieve the +above mentioned policy the following could be defined: ++ + [access "refs/heads/*"] + forgeCommitter = block group Anonymous Users + forgeCommitter = group Privileged Users ++ +Across projects the `BLOCK` permission still wins over any `ALLOW` +permission. This way one cannot override an inherited `BLOCK` +permission in a subproject. ++ +Overruling of `BLOCK` permissions with `ALLOW` permissions also works +for labels i.e. permission ranges. If a dedicated 'Verifiers' group +need to be the only group who can vote in the 'Verified' label and it +must be ensured that even project owners cannot change this policy, +then the following can be defined in a common parent project: ++ + [access "refs/heads/*"] + label-Verified = block -1..+1 group Anonymous Users + label-Verified = -1..+1 group Verifiers + +* link:https://code.google.com/p/gerrit/issues/detail?id=1516[issue 1516]: + Show global capabilities to all users that can read `refs/meta/config` ++ +Users can now propose changes to the global capabilities for review +from the WebUI. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_remove_reviewer[ + Remove Reviewer] is a new permission. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_push_signed[ + Pushing a signed tag] is a new permission. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_edit_topic_name[ + Editing the topic name] is a new permission. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#capability_accessDatabase[ + Raw database access] with the `gsql` command is a new global capability. ++ +Previously site administrators had this capability by default. Now it has +to be explicitly assigned, even for site administrators. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1585[Issue 1585]: + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_view_drafts[ + Viewing other users' draft changes] is a new permission. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1675[Issue 1675]: + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_delete_drafts[Deleting] and + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#category_publish_drafts[publishing] + other users' draft changes is a new permission. + +* Grant most permissions when creating `All-Projects` ++ +Make Gerrit more like a Git server out-of-the box by granting both +Administrators and Project Owners permissions to review changes, submit +them, create branches, create tags, and push directly to branches. + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#ldap.groupName[ + LDAP group names] are configurable, `cn` is still the default. + +* Kerberos authentication to LDAP servers is now supported. + +* Basic project properties are now inherited by default from parent + projects: Use Content Merge, Require Contributor Agreement, Require + Change Id, Require Signed Off By. + +* Allow assigning `Push` for `refs/meta/config` on `All-Projects` ++ +The `refs/meta/config` branch of the `All-Projects` project should only +be modified by Gerrit administrators because being able to do +modifications on this branch means that the user could assign himself +administrator permissions. ++ +In addition to being administrator Gerrit requires that the +administrator has the `Push` access right for `refs/meta/config` in +order to be able to modify it (just as with all other branches +administrators do not have edit permissions by default). ++ +The problem was that assigning the `Push` access right for +`refs/meta/config` on the `All-Projects` project was not allowed. ++ +Having the `Push` access right for `refs/meta/config` on the +`All-Projects` project without being administrator has no effect. + +Hooks +~~~~~ +* Change topic is passed to hooks as `--topic NAME`. +* link:https://code.google.com/p/gerrit/issues/detail?id=1200[Issue 1200]: +New `reviewer-added` hook and stream event when a reviewer is added. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1237[Issue 1237]: +New `merge-failed` hook and stream event when a change cannot be submitted due to failed merge. + +* link:https://code.google.com/p/gerrit/issues/detail?id=925[Issue 925]: +New `ref-update` hook run before a push is accepted by Gerrit. + +* Add `--is-draft` parameter to `comment-added` hook + +Git +~~~ +* Add options to `refs/for/` magic branch syntax ++ +Git doesn't want to modify the network protocol to support passing +data from the git push client to the server. Work around this by +embedding option data into a new style of reference specification: ++ +---- + refs/for/master%r=alice,cc=bob,cc=charlie,topic=options +---- ++ +is now parsed by the server as: ++ +-- +** set topic to "options" +** CC charlie and bob +** add reviewer alice +** for branch refs/heads/master +-- ++ +If `%` is used the extra information after the branch name is +parsed as options with args4j. Each option is delimited by `,`. ++ +Selecting publish vs. draft should be done with the options `draft` or +`publish`, appearing anywhere in the refspec after the `%` marker: ++ +---- + refs/for/master%draft + refs/for/master%draft,r=alice + refs/for/master%r=alice,draft + refs/for/master%r=alice,publish +---- + +* Enable content merge by default ++ +Most teams seem to expect Gerrit to manage simple merges within a +source code file. Enable this out-of-the-box. + +* Added a link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#core.useRecursiveMerge[ + server-level option] to use JGit's new, experimental recursive merger. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1608[Issue 1608]: +Commits pushed without a Change-Id now warn with instructions on how +to download and install the commit-msg hook. + +* Add `oldObjectId` and `newObjectId` to the `GitReferenceUpdatedListener.Update` + +SSH +~~~ +* New SSH command to http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-gc.html[ + run Git garbage collection] ++ +All GC runs are logged in a GC log file. + +* Descriptions are added to ssh commands. ++ +If `gerrit` is called without arguments, it will now show a list of available +commands with their descriptions. + +* `create-account --http-password` enables setting/resetting the + HTTP password of role accounts, for Git or REST API access. + +* http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-ls-user-refs.html[ + ls-user-refs] lists which refs are visible for a given user. + +* `ls-projects --has-acl-for` lists projects that mention a group + in an ACL, identifying where rights are granted. + +* `review` command supports project-specific labels + +* `test-submit-rule` was renamed to `test-submit rule`: ++ +`rule` is now a subcommand of the `test-submit` command. + +* http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-test-submit-type.html[ + test-submit type] tests the Prolog submit type with a chosen change. + +Query +~~~~~ +* Allow `{}` to be used for quoting in query expressions ++ +This makes it a little easier to query for group names that contain +a space over SSH: ++ + ssh srv gerrit query " 'status:open NOT reviewerin:{Developer Group}' " + +* The query summary block includes `resumeSortKey`. + +* Query results include author and change size information when certain + options are specified. + +* When a file is renamed the old file name is included in the Patch + attribute + +Plugins +~~~~~~~ +* Plugins can contribute Prolog facts/predicates from Java. +* Plugins can prompt for parameters during `init` with `InitStep`. +* Plugins can now contribute JavaScript to the web UI. UI plugins can + also be written and compiled with GWT. +* New Maven archetypes for JavaScript and GWT plugins. +* Plugins can contribute validation steps to received commits. +* Commit message length checks are moved to the `commit-message-length-validator` + plugin which is included as a core plugin in the Gerrit distribution and + can be installed during site initialization. +* Creation of code review notes is moved to the `reviewnotes` plugin + which is included as a core plugin in the Gerrit distribution and can + be installed during site initialization. +* A plugin extension point for avatar images was added. +* Allow HTTP plugins to change `static` or `docs` prefixes ++ +An HTTP plugin may want more control over its URL space, but still +delegate to the plugin servlet's magic handling for static files and +documentation. Add JAR attributes to configure these prefixes. + +Prolog +~~~~~~ +[[submit-type-from-prolog]] +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html#HowToWriteSubmitType[ + Support controlling the submit type for changes from Prolog] ++ +Similarly like the `submit_rule` there is now a `submit_type` predicate +which returns the allowed submit type for a change. When the +`submit_type` predicate is not provided in the `rules.pl` then the +project default submit type is used for all changes of that project. ++ +Filtering the results of the `submit_type` is also supported in the +same way like filtering the results of the `submit_rule`. Using a +`submit_type_filter` predicate one can enforce a particular submit type +from a parent project. + +* Plugins can contribute Prolog facts/predicates from Java. + +* link:https://code.google.com/p/gerrit/issues/detail?id=288[Issue 288]: + Expose basic commit statistics for the Prolog rule engine ++ +A new method `gerrit:commit_stats(-Files,-Insertions, -Deletions)` was +added. + +* A new `max_with_block` predicate was added for more convenient usage + +Email +~~~~~ +* Notify project watchers if draft change is published +* Notify users mentioned in commit footer on draft publish +* Add new notify type that allows watching of new patch sets +* link:https://code.google.com/p/gerrit/issues/detail?id=1686[Issue 1686]: + Add new notify type that allows watching abandoning of changes +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-notify.html[ + Notifications configured in `project.config`] can now be addressed + using any of To, CC, or BCC headers. +* link:https://code.google.com/p/gerrit/issues/detail?id=1531[Issue 1531]: +Email footers now include `Gerrit-HasComments: {Yes|No}`. +* `#if($email.hasInlineComments())` can be used in templates to test + if there are comments to be included in this email. +* Notification emails are sent to included groups. +* Comment notification emails are sent to project watchers. +* "Change Merged" emails include the diff output when `sendemail.includeDiff` is enabled. +* When link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api-changes.html#set-review[ + posting a review via REST] the caller can control email delivery ++ +This may help automated systems to be less noisy. Tools can now choose +which review updates should send email, and which categories of users +on a change should get that email. + +Labels +~~~~~~ +* Approval categories stored in the database have been replaced with labels + configured in `project.config`. Existing categories are migrated to + `project.config` in `All-Projects` as part of the schema upgrade; no user + action is required. +* Labels are no longer global; + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-labels.html[ + projects may define their own labels], with inheritance. +* Don't create `Verify` category by default ++ +Most project teams seem confused with the out-of-the-box experience +needing to vote on both `Code-Review` and `Verified` categories in +order to submit a change. Simplify the out-of-the-box workflow to only +have `Code-Review`. When a team installs the Hudson/Jenkins integration +or their own build system they can now trivially add the `Verified` +category by pasting 5 lines into `project.config`. + +Dev +~~~ + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-readme.html#debug-javascript[ + Support loading debug JavaScript] + +* Gerrit acceptance tests ++ +An infrastructure for testing the Gerrit daemon via REST and/or SSH +protocols has been added. Gerrit daemon is run in the headless mode and +in the same JVM where the tests run. Besides using REST/SSH, the tests +can also access Gerrit server internals to prepare the test environment +and to perform assertions. ++ +A new review site is created for each test and the Gerrit daemon is +started on that site. When the test has finished the Gerrit daemon is +shutdown. + +* Lightweight LDAP server for debugging + +* Add asciidoc checks in the documentation makefile ++ +Exit with error if the asciidoc executable is not available or has +version lower than 8.6.3. ++ +The release script is aborted if asciidoc is missing. + +* Added sublime project files to `.gitignore` + +* Exclude all `pom.xml` files that are archetype resources in `version.sh` + +Performance +~~~~~~~~~~~ +* Bitmap Optimizations ++ +On running the http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-gc.html[ +garbage collection] JGit creates bitmap data that is saved to an +auxiliary file. The bitmap optimizations improve the clone and fetch +performance. git-core will ignore the bitmap data. + +* Improve suggest user performance when adding a reviewer. ++ +Do not check the visibility of the change for each suggested account if +the ref is visible by all registered users. ++ +On a system with about 2-3000 users, where most of the projects are +visible by every registered user, this improves the performance of the +suggesting reviewer by a factor of 1000 at least. + +* Cache RefControl.isVisible() ++ +For Git repositories with many changes the time for calculating visible +refs is reduced by 30-50%. + +* Allow admins to disable magic ref check on upload ++ +Some sites manage to run their repositories in a way that prevents +users from ever being able to create `refs/for`, `refs/drafts` or +`refs/publish` names in a repository. Allow admins on those servers +to disable this (somewhat) expensive check before every upload. + +* Permit ProjectCacheClock to be completely disabled ++ +Some admins may just want to require all updates to projects to be +made through the web interface, and avoid the small expense of a +background thread ticking off changes. + +* Batch read Change objects during query + +* Default `core.streamFileThreshold` to a larger value ++ +If this value is not configured by the server administrator +performance on larger text files suffers considerably and +Gerrit may grind to a halt and be unable to answer users. ++ +Default to either 25% of the available JVM heap or ~2048m. + +* Improve performance of ReceiveCommits for repositories with many refs ++ +Avoid adding `refs/changes/` and `refs/tags/` to RevWalk's as +uninteresting since JGit RevWalk doesn't perform well when a large +number of objects is marked as uninteresting. + +* PatchSet.isRef()-optimizations. ++ +PatchSet.isRef() is used extensively when preparing for a ref +advertisment and the regular expression used by isRefs() was notably +costly in these circumstances, especially since it could not be +pre-compiled. ++ +The regular expression is removed and the check is now directly +implemented. As result the performance of `git ls-remote` could be +increased upto 15%. + +* New config option `receive.checkReferencedObjectsAreReachable` ++ +If set to true, Gerrit will validate that all referenced objects that +are not included in the received pack are reachable by the user. ++ +Carrying out this check on Git repositories with many refs and commits +can be a very CPU-heavy operation. For non public Gerrit servers it may +make sense to disable this check, which is now possible. + +* Cache config value in LdapAuthBackend + +* Perform a single /accounts/self/capabilities on page load ++ +This joins up 3 requests into a single call, which should speed up +initial page load for most users. + +* Only gzip compress responses that are smaller compressed + +* Caching of changes ++ +During Ref Advertisments (via VisibleRefFilter), all changes need to +be fetched from the database to allow Gerrit to figure out which change +refs are visible and should be advertised to the user. To reduce +database traffic a cache for changes was introduced. This cache is +disabled by default since it can mess-up multi-server setups. + +Misc +~~~~ +* Add config parameter to make new groups by default visible to all ++ +Add a new http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#groups.newGroupsVisibleToAll[ +Gerrit configuration parameter] that controls whether newly +created groups should be by default visible to all registered users. + +* Support for OpenID domain filtering ++ +Added the ability to only allow email addresses under specific domains +to be used for OpenID login. ++ +The allowed domains can be configured by setting +http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#auth.openIdDomain[ +auth.openIdDomain] in the Gerrit configuration. + +* Always configure + http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#gerrit.canonicalWebUrl[ + gerrit.canonicalWebUrl] on init ++ +Gerrit has been requiring this field for several versions now, but init +did not configure it. Ensure there is a value set so the server is not +confused at runtime. + +* Add submodule subscriptions fetching by projects ++ +While submodule subscriptions can be fetched by branch, some plugins +(e.g.: delete-project) would rather need to access all submodule +subscriptions of a project (regardless of the branch). Instead of +iterating over all branches of a project, and fetching the +subscription for each branch separately, we allow fetching of +subscriptions directly by projects. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1805[Issue 1805]: + Make client SSL certificates that contain an email address work ++ +Authentication with CLIENT_SSL_CERT_LDAP didn't work if the certificate +contained email address. + +* Guess LDAP type of Active Directory LDS as ActiveDirectory ++ +If Gerrit connects to an AD LDS [1] server it will guess its type as +RCF_2307 instead of ActiveDirectory. The reason is that an AD LDS +doesn't support the "1.2.840.113556.1.4.800" capability. However, +AD LDS behaves like ActiveDirectory and Gerrit also needs to guess +its type as ActiveDirectory to make the default query patterns work +properly. ++ +Extend the LDAP server type guessing by checking for presence of the +"1.2.840.113556.1.4.1851" capability which indicates that this LDAP +server runs ActiveDirectory as AD LDS [2]. ++ +Also remove the check for the presence of the "defaultNamingContext" +attribute as we don't use it anywhere and, by default, this attribute is +not set on an AD LDS [3] ++ +[1] http://msdn.microsoft.com/en-us/library/aa705886(VS.85).aspx + +[2] http://msdn.microsoft.com/en-us/library/cc223364.aspx + +[3] http://technet.microsoft.com/en-us/library/cc816929(v=ws.10).aspx + +* Allow group descriptions to supply email and URL ++ +Some backends have external management interfaces that are not +embedded into Gerrit Code Review. Allow those backends to supply +a URL to the web management interface for a group, so a user can +manage their membership, view current members, or do whatever other +features the group system might support. ++ +Some backends also have an email address associated with every +group. Sending email to that address will distribute the message to +the group's members. Permit backends to supply an optional email +address, and use this in the project level notification system if +a group is selected as the target for a message. + +* Allow group backends to guess on relevant UUIDs ++ +Expose all cheaply known group UUIDs from the ProjectCache, +enumerating groups used by access controls. This allows a backend +that has a large number of groups to filter its getKnownGroups() +output to only groups that may be relevant for this Gerrit server. ++ +The best use case to consider is an LDAP server at a large +organization. A typical user may belong to 50 LDAP groups, but only +3 are relevant to this Gerrit server. Taking the intersection of +the two groups limits the output Gerrit displays to users, or uses +when considering same group visibility. + +* Add more forbidden characters for project names ++ +`?`, `%`, `*`, `:`, `<`, `>`, `|`, `$`, `\r` are now forbidden in +project names. + +* Make `gerrit.sh` LSB compliant ++ +** Add LSB headers +** Add 'status' as synonym for 'check' +** Fix exit status codes according to http://refspecs.linux-foundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html + +* Option to start headless Gerrit daemon ++ +Add `--headless` option to the Daemon which will start Gerrit daemon +without the Web UI front end (headless mode). ++ +This may be useful for running Gerrit server with an alternative (rest +based) UI or when starting Gerrit server for the purpose of automated +REST/SSH based testing. ++ +Currently this option is only supported via the `--headless` option of +the daemon program. We would need to introduce a config option in order +to support this feature for deployed war mode. + +* Show path to gerrit.war in command for upgrade schema + +Upgrades +~~~~~~~~ +* link:https://code.google.com/p/gerrit/issues/detail?id=1619[Issue 1619]: +Embedded Jetty is now 8.1.7.v20120910. + +* ASM bytecode library is now 4.0. +* JGit is now 2.3.1.201302201838-r.78-g8fcde4b. +* asciidoc 8.6.3 is now required to build the documentation. +* link:https://code.google.com/p/gerrit/issues/detail?id=1155[Issue 1155]: +prettify is now r225 + +* The used GWT version is now 2.5.0 ++ +Fixes some issues with IE9 and IE10. + +Bug Fixes +--------- + +Web UI +~~~~~~ +* link:https://code.google.com/p/gerrit/issues/detail?id=1662[Issue 1662]: + Don't show error on ACL modification if empty permissions are added ++ +This error message was incorrectly displayed if a permission without +rules was added, although the save was actually successful. + +* Don't show error on ACL modification if a section is added more than once ++ +This error message was incorrectly displayed if multiple sections for +the same ref were added, although the save was actually successful. + +* Links to CGit were broken when `remove-suffix` was enabled. + +* link:https://code.google.com/p/gerrit/issues/detail?id=926[Issue 926]: +Internet Explorer versions 9 and 10 are supported. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1664[Issue 1664]: + Reverting a change did not preserve the change's topic + +* Fix: User could get around restrictions by reverting a commit ++ +The Gerrit server may enforce several restrictions on the commit +message (change-id required, signed-off-by, etc). A user was able to +get around these restrictions by reverting a commit using the UI. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1518[Issue 1518]: + Reset 'Old Version History' if dependent change is opened ++ +Following the navigation link in the dependencies table on the +change screen, the user can directly navigate to dependent changes. +The value for 'Old Version History' of the current change was +incorrectly applied to the new change. If the value was invalid for +the new change the 'Old Version History' field became blank. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1736[Issue 1736]: + Clear 'Old Version History' ListBox before populating it ++ +The ListBox was not always cleared and as result the same entries were +sometimes added multiple times e.g. after rebasing a change in the +WebUI. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1673[Issue 1673]: + Fix disappearance of patch headers when compared patches are identical ++ +When two patches were compared that were identical 'No Differences' is +displayed to the user. In this case the patch headers disappeared and +as result the user couldn't change the patch selection anymore. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1759[Issue 1759]: + Fix ArrayIndexOutOfBoundsException on intraline diff ++ +In some cases displaying the intraline diff failed with an exception like +this: ++ +---- +java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 10 + at com.google.gerrit.prettify.common.SparseFileContent.mapIndexToLine(SparseFileContent.java:149) + at com.google.gerrit.prettify.common.PrettyFormatter.format(PrettyFormatter.java:188) + at com.google.gerrit.client.patches.AbstractPatchContentTable.getSparseHtmlFileB(AbstractPatchContentTable.java:287) + at com.google.gerrit.client.patches.SideBySideTable.render(SideBySideTable.java:113) + at com.google.gerrit.client.patches.AbstractPatchContentTable.display(AbstractPatchContentTable.java:238) + at com.google.gerrit.client.patches.PatchScreen.onResult(PatchScreen.java:444) +... +---- ++ +This happened when the old line was: ++ +---- + foo-old<LF> +---- ++ +and the new line was: ++ +---- + foo-new<CRLF> +---- + +* Prevent leading and trailing spaces on user's Full Name ++ +Strip off the leading and trailing spaces from the Full Name that the +user enters on the Contact Information form. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1480[Issue 1480]: + Show proper error message if registering email address fails + +* link:https://code.google.com/p/gerrit/issues/detail?id=816[Issue 816]: + Due to issues with the diff_intraline cache the file indention in the + Side-By-Side diff was sometimes wrong. + +* Make rebase failed and merge failed messages consistent + +* Select 'Projects' menu on loading of a project screen ++ +If in the top level menu 'All' is selected and the user navigates to +a change and then from the change to the project by clicking on the +project link in the ChangeInfoBlock, the project screen is loaded but +the 'Projects' menu was not selected. + +* Fix display issues for inline comments and inline comment editors ++ +** Sometimes a second comment editor was shown instead of using the + existing comment editor. +** Fix doublicated border line between comments. +** Sometimes the parts of the border were missing when a comment was + expanded. +** Fix displaying the blue line that marks the current line when there + are several published comments. +** Sometimes on discard of a comment some frames of the comment editor + stayed and some border lines of neighbour comments disappeared. + +* In diff view don't let arrow column accept clicks. + +* Fix display of commit message ++ +If there are no HTML tags in the text, just break on lines. + +* Upon selection in AddMemberBox, focus the box's text field ++ +In the change screen, after clicking on an element of the 'Add +Reviewer' suggestion list, users expect to be able to add the reviewer +by hitting enter. This did not work in Firefox. + +* Fix enter key detection in project creation screen ++ +The enter key detection was not working in all browsers (e.g. Firefox). + +* Display a tooltip for all tiny icons and ensure that the cursor is + shown as pointer when hovering over them. + +* Clean query string when switching pages ++ +If we load a page without a query string, such as Projects->List, +My->Changes, or Settings, it might be confusing to show the old query +string from the previous page. The query string is now cleared out +when switching pages, leaving the help text visible. + +* Fix highlighting in search suggestions ++ +The provided suggestions should highlight the part that the user has +already typed as bold text. This only worked for the first operator. +For suggestions of any further operator no hightlighting was done. + +* Fix style of hint text in search box on initial page load ++ +The hint text should be a light gray on the white background, +but was coming up black on initial page load due to a style setup +ordering issue between the SearchPanel and the HintTextBox. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1661[Issue 1661]: + Update links to Change-Id and Signed-off-by docu on project info + screen + +* Use href="javascript;" for All {Side-by-Side,Unified} links ++ +These links shouldn't have an anchor location. There is nothing for +the browser to remember or visit if it were opened in a new tab for +example. + +* Improve message for unsatisfiable dependencies ++ +If a change cannot be merged due to unsatisfiable dependencies a +comment is added to the change that lists the missing commits and says +that a rebase is necessary. ++ +For each missing commit the comment said "Depends on patch set X +of ..., however the current patch set is Y." ++ +If multiple commits are missing it may be that for some commits the +dependency is not outdated (X == Y). In this case the message was +confusing. ++ +", however the current patch set is Y." is now skipped if Y == X. + +REST API +~~~~~~~~ +* Fix returning of 'Email Reviewers' capability via REST ++ +The `/accounts/self/capabilities/` didn't return the 'Email Reviewers' +capability when it was not explicitly assigned, although by default +everyone has the 'Email Reviewers' capability. ++ +If 'Email Reviewers' capability was allowed or denied, +`/accounts/self/capabilities/` returned the 'Email Reviewers' +capability always as true, which was wrong for the DENY case. + +* Provide a more descriptive error message for unauthenticated REST + API access + +Git +~~~ +* The wildcard `.` is now permitted in reference regex rules. + +* Checking if a change is mergeable no longer writes to the repository. + +* Submitted but unmerged changes are periodically retried. This is + necessary for a multi-master configuration where the second master + may need to retry a change not yet merged by the first. Please note + we still do not believe this is sufficient to enable multi-master. + +* Retry merge after LOCK_FAILURE when updating branch ++ +If the project requires fast-forwards, the merge cannot succeed once +a lock failure occurs, but in other cases, it is safe to retry the +merge immediately. + +* Do not automatically add reviewers from footer lines to draft patch sets ++ +Gerrit already avoids adding reviewers from footer lines when a new +draft change is created. Now the same is done for draft patch sets. + +* Add users mentioned in commit footer as reviewers on draft publish + +* Hide any existing magic branches during push ++ +If there is a magic branch visible during push, just hide it from the +client. Administrators can clear these by accessing the repository +directly. + +* Prevent from deleting `refs/changes/` ++ +Everything under `refs/changes/` should be protected by Gerrit, users +shouldn't be able to delete a particular patch set or a whole change +from the review process. + +* Update description file in Git ++ +When writing the description to `project.config`, it is also necessary +to write it to the description file in the repository so the same text +is visible in CGit or GitWeb. + +* Write valid reflog for `HEAD` when creating the `All-Projects` + project ++ +When the `All-Projects` project is created during the schema +initialization, `HEAD` is set to point to the `refs/meta/config` +branch. When `HEAD` is updated an entry into the reflog is written. +This ref log entry should contain the ID of the initial commit as +target, but instead the target was the zero ID. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1702[Issue 1702]: + Fix: 'internal server error' when pushing the same commit twice ++ +On the second push of the same commit to `refs/for/<branch name>`, Gerrit +returns 'no new changes'. ++ +However if the user pushed to 'refs/changes/<change id>', Gerrit returned +'internal server error'. + +* Match all git fetch/clone/push commands to the command executor ++ +Route not just `/p/` but any Git access to the same thread pool as the +SSH server is using, allowing all requests to compete fairly for +resources. + +* Fix auto closing of changes on direct push ++ +When a commit was directly pushed into a repository (bypassing code +review) and this commit had a Change-Id in its commit message then the +corresponding change was not automatically closed if it was open. + +* Set change state to NEW if merge fails due to non-existing dest branch ++ +If a submitted change failed to merge because the destination branch +didn't exist anymore, it stayed in state 'Submitted, Merge Pending'. +This meant Gerrit was re-attempting to merge this change (e.g. on +startup), but this didn't make sense. Either the branch did still not +exist (then there was no need to try merging it) or a new branch with +the old name was created (then it was questionable if the change should +still be merged into this branch). This is why it's better to set the +change back to the 'Review in Progress' state and update it with a +message saying that it couldn't be merged because the destination +branch doesn't exist anymore. ++ +In addition Gerrit was writing an error into the error log if a change +couldn't be merged because the destination branch wass missing. +That was not really a server error and is not logged anymore. + +* Fix NPE when pushing a patch with an invalid author with + `Forge Author` permissions + +* Fix duplicated GitReferenceUpdated event on project creation. ++ +Creating a new Gerrit project was firing the GitReferenceUpdated event +for the `refs/meta/config` branch two times. + +* Fix error log message in ReceiveCommits ++ +When the creation of one or more references failed ReceiveCommits failed +with 'internal server error' and wrote the following error log: +"Only X of Y new change refs created in xxx; aborting" +The printed value for Y could be wrong since it didn't include the +replaceCount. As a result, a confusing message like +"Only 0 of 0 new change refs created in xxx; aborting" +could appear in the error log. + +SSH +~~~ +* `review --restore` allows a review score to be added on the restored change. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1721[Issue 1721]: + `review --message` only adds the message once. + +* `ls-groups` prints "N/A" if the group's name is not set. + +* `set-project-parent --children-of`: Fix getting parent for level 1 projects ++ +For direct child projects of the `All-Projects` project the name of the +parent project was incorrectly retrieved if the parent name was not +explicitly stored as `All-Projects` in the project.config file. + +* Fix NPE when abandoning change with invalid author ++ +If the author of a change isn't known to Gerrit (pushed with +`Forge Author` permissions), trying to abandon that change over SSH +failed with an NPE. + +Query +~~~~~ +* link:https://code.google.com/p/gerrit/issues/detail?id=1729[Issue 1729]: + Fix query by 'label:Verified=0' + +* link:https://code.google.com/p/gerrit/issues/detail?id=1772[Issue 1772]: + Set `_more_changes` if result is limited due to configured query limit + +* Fix query cost for "status:merged commit:c0ffee" + +Plugins +~~~~~~~ +* Skip disabled plugins on rescan ++ +In a background thread Gerrit periodically scans for new or changed +plugins. On every such a rescan disabled plugins were loaded and a new +copy of their jar files was stored in the review site's tmp folder. + +* Fix cleanup of plugins from tmp folder on graceful Gerrit shutdown ++ +Loaded plugin jars are copied to the review site's tmp folder to support +hot updates of the plugin jars in the plugins folder. On Gerrit shutdown +these copies of the jar files should be cleaned up. For this purpose a +CleanupHandle is created, but the CleanupHandle wasn't enqueued in the +cleanupQueue which is why cleanup on Gerrit shutdown didn't happen. + +* Reattempt deletion of plugin jars from tmp folder on JVM termination ++ +Loaded plugin jars are copied to the review site's tmp folder to support +hot updates of the plugin jars in the plugins folder. On Gerrit shutdown +these copies of the jar files should be cleaned up. For this purpose a +CleanupHandle is created. The deletion of the tmp file in the +CleanupHandle can fail although the jar file was closed. In this case +reattempt the deletion on termination of the virtual machine. This +normally succeeds. + +* Fix unloading of plugins ++ +When two plugins, say pluginA, and pluginB had been loaded, and pluginA +was removed from $sitePath/plugins, pluginA got stopped, and a cleaning +run was ordered. But this cleaning run cleaned both plugins and both +plugins had their jars removed. This left pluginB visible to Gerrit +although it's backing jar was gone. Upon calling not yet initialized +parts of pluginB (e.g.: viewing not yet viewed Documentation pages of +pluginB), exceptions as following were thrown: ++ +---- + java.lang.IllegalStateException: zip file closed + at java.util.zip.ZipFile.ensureOpen(ZipFile.java:420) + at java.util.zip.ZipFile.getEntry(ZipFile.java:165) +---- + +* Fix double bound exception when loading extensions ++ +ServerInformation class was already bound, therefore it shouldn't be +bound a second time for Gerrit extensions. + +* Do not call onModuleLoad() second time ++ +onModuleLoad() method is automatically called by GWT framework. Calling +it once again in PluginGenerator caused double plugin initialization. + +* Require `Administrate Server` capability to GET /plugins/ ++ +Listing plugins requires being an administrator. This was missed in the +REST API. + +Email +~~~~~ +* Merge failure emails are only sent once per day. +* Unused macros are removed from the mail templates. +* Unnecessary ellipses are no longer applied to email subjects. +* The empty diff output from an "octopus merge" is now explained in change notification emails. +* link:https://code.google.com/p/gerrit/issues/detail?id=1480[Issue 1480]: +Proper error message is shown when registering an email address fails. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1692[Issue 1692]: +Review comments are sorted before being added to notification emails. + +* Fix watching of 'All Comments' on `All-Projects` ++ +If a user is watching 'All Comments' on `All-Projects` this should +apply to all projects. + +Misc +~~~~ +* Provide more descriptive message for NoSuchProjectException + +* On internal error due to receive timeout include the value of + `receive.timeout` into the log message + +* Silence INFO/DEBUG output from apache.http ++ +This spammed the log when using OpenID, for each and every login. + +* Remove `mysql_nextval` script ++ +This function does not work on binary logging enabled servers, +as MySQL is unable to execute the function on slaves without +causing possible corruption. Drop the function since it was only +created to help administrators, and is unsafe. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1312[Issue 1312]: + Fix relative URL detection in submodules ++ +Relative submodules do not start with `/`. Instead they start with +`../`. Fix the Submodule Subscriptions engine to recognize relative +submodules. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1622[Issue 1622]: + Fix NPE in LDAP Helper class if username is null + +* Fix commit-msg hook failure with spaces in path ++ +If the project absolute path had any whitespace, the commit +hook failed to complete because a script variable was not +enclosed in double quotes. + +* Drop the trailing ".git" suffix of the name of new project + +* Prevent possible NPE when running `change-merged` hook ++ +It's possible that the submitter is null. Add a check for this +before invoking the `change-merged` hook with it. + +* Keep change open if its commit is pushed to another branch. + +* Fire GitReferenceUpdated event when BanCommit updates the + `refs/meta/reject-commits` branch. + +* Fix GitWeb Caching ++ +GitWeb Caching was not working when its cgi file was executed from +outside. The same approach will also work with vanilla GitWeb. + +* Fix infinite loops when walking project hierarchy + +* Fix resource leak in MarkdownFormatter + +* Query all external groups for internal group memberships ++ +When asking for the known groups a user belongs to they may belong +to an internal group by way of membership in a non-internal group, +such as LDAP. Cache in memory the complete list of any non-internal +group UUIDs used as members of an internal group. These must get +checked for membership before completing the known group data from +the internal backend. + +* Handle sorting groups with no name to avoid NPE + +* `gerrit.sh` +** Don't suggest site init if schema version is newer than expected +** Improve error messages in schema check +** Suggest changing `gerrit.config` when JDK not found +** Explicitly set a shell +** Determine `GERRIT_SITE` from current working directory. +** Fix `gerrit.sh restart` for relative paths +** Fix site path computation if '.' occurs in path +** Whitespace fixes + +* Display the reason of an Init injection failure. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1821[Issue 1821]: + Warn if `cache.web_sessions.maxAge` is to small ++ +Setting `maxAge` to a small value can result in the browser endlessly +redirecting trying to setup a new valid session. Warn administrators +that the value is set smaller than 5 minutes. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1821[Issue 1821]: + Support `cache.web_sessions.maxAge` < 1 minute + +* Use SECONDS as default time unit for `cache.web_sessions.maxAge` ++ +DefaultCacheFactory already uses SECONDS as default time unit for +`cache.*.maxAge`. ++ +Update the described default time unit for `cache.*.maxAge` in the +documentation. ++ +Administrators may need to update their configuration to for the new +default time unit. + +* Add pylint configuration for contributed Python scripts + +* Various fixes and improvements of the `contrib/trivial_rebase.py` + script ++ +** Adapt options to Gerrit 2.6 +** Use change-url flag for ChangeId +** Prevent exception for empty commit +** Fix pylint errors +** Call `gerrit review` instead of `gerrit approve` +** Make the private key argument optional +** Support alternative ssh executable, for example `plink` +** Support custom review labels +** Correctly handle empty patch ID ++ +If only one of the patch IDs is empty, it should not be considered +a trivial rebase. + +** Use plain python instead of python2.6 ++ +Windows installation only has python.exe + +* Correct MIME type of `favicon.ico` reference ++ +This is not a GIF, it is an "MS Windows icon resource". +Some browsers may skip the image if the type is wrong. + +* Use `<link rel="shortcut icon">` for `favicon.ico` reference ++ +IE looks for a two-word "shortcut icon" relationship. Other browsers +interpret this as two relationships, one of which is "icon", so they +can handle this syntax as well. ++ +See: ++ +** http://msdn.microsoft.com/en-us/library/ms537656(VS.85).aspx +** http://jeffcode.blogspot.com/2007/12/why-doesnt-favicon-for-my-site-appear.html + +* Remove `servlet-api` from `WAR/lib` ++ +It is wrong to include the servlet API in a WAR's `WEB-INF/lib` +directory. This confuses some servlet containers who refuse to +load the Gerrit WAR. Instead package the Jetty runtime and the +servlet API in a new `WEB-INF/pgm-lib` directory. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1822[Issue 1822]: + Verify session matches container authentiation header ++ +If the user alters their identity in the container invalidate +the Gerrit user session and force a new one to begin. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1743[Issue 1743]: + Move RPC auth token from `Authorization` header to `X-Gerrit-Auth` ++ +Servers that run with auth.type = HTTP or HTTP_LDAP are unable to +use the web UI because the Authorization code supplied by the UI +overrides the browser's native `Authorization` header and causes the +request to be blocked at the HTTP reverse proxy, before Gerrit even +sees the request. ++ +Instead insert a unique token into `X-Gerrit-Auth`, leaving the HTTP +standard `Authorization` header unspecified and available for use in +HTTP reverse proxies. + +Documentation +------------- + +User Documentation +~~~~~~~~~~~~~~~~~~ +* Split link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api.html[ + REST API documentation] and have one page per top level resource + +* Add executable examples for GET requests to + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/rest-api.html[ + REST API documentation] ++ +Add examples for GET requests to the REST API documentation on which +the user can click to fire the requests. This allows users to +immediately try out the requests and play around with them. + +* Document the link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/access-control.html#block[ + BLOCK access rule]. + +* Added documentation of + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-upload.html#http[ + how to authenticate uploads over HTTP]. + +* Added documentation of the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#auth.editFullNameUrl[auth.editFullNameUrl] and + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#auth.httpPasswordUrl[auth.httpPasswordUrl] + configuration parameters. + +* Add link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html[ + submit_rule examples] from Gerrit User Summit 2012. + +* Improved the push tag examples in the access control documentation. + +* Improved documentation of error messages related to commit message footer content. + +* Added documentation of the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/error-commit-already-exists.html[ + commit already exists] error message. + +* Added missing documentation of the ssh + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/cmd-version.html[ + version] command. + +* link:https://code.google.com/p/gerrit/issues/detail?id=1369[Issue 1369]: + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gitweb.html[ + Gitweb Instruction Updates] + +* link:https://code.google.com/p/gerrit/issues/detail?id=1594[Issue 1594]: + Document execute permission for commit-msg in + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-changeid.html#creation[ + Change-Id docs] + +* link:https://code.google.com/p/gerrit/issues/detail?id=1602[Issue 1602]: +Corrected references to `refs/changes` in the access control documentation. + +* Update documentation of + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#trackingid.name.match[ + maximal length for tracking ids] + +* Added missing documentation of + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/json.html[JSON attributes]. + +* Rename `custom-dashboards.html` to + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/user-dashboards.html[user-dashboards.html] ++ +This document no longer deals exclusively with custom dashboards, it now describes project level dashboards also. + +* Separate the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-login-register.html[ + initial user setup instructions] to a shared file + +* Separate the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/database-setup.html[ + database setup instructions] to a shared file + +* Improve the link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/database-setup.html[ + instructions for PgSQL setup] + +* Fix the order of steps in the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/install-j2ee.html[ + J2EE Installation document] ++ +It is better to first define the JNDI data source in the application +server and then deploy Gerrit than opposite. This should avoid errors +like "No DataSource" on the first deployment. + +* Clarify documentation of + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/config-gerrit.html#ldap.groupName[ + LDAP group name setting] + +* Adapt documentation to having 'Projects' as top level menu +* Added missing documentation of mail templates. +* Added documentation of contributor agreements. +* Fix `init.d` symbolic link commands. +* Remove obsolete diskbuffer setting from example config file. +* Various minor grammatical and formatting corrections. +* Fix external links in 2.0.21 and 2.0.24 release notes +* Manual pages can be optionally created/installed for core gerrit ssh commands. + +Developer And Maintainer Documentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Updated the link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-eclipse.html#maven[ + Maven plugin installation instructions] for Eclipse 3.7 (Indigo). + +* Document link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-contributing.html#commit-message[ + usage of the past tense in commit messages] + +* Add link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-contributing.html[ + instructions] on how to configure git for pushing to Gerrit's Gerrit + +* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-contributing.html#process[ + Stable branches process documentation] + +* Improved the + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-release.html[ + release documentation]. + +* Document that plans for + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-release.html#stable[ + stable-fix releases] should be announced + +* Document process for + link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/dev-release.html#security[ + security-fix releases] + +* The release notes are now made when a release is created by running the `tools/release.sh` script. + diff --git a/ReleaseNotes/index.txt b/ReleaseNotes/index.txt index 07e6aa5203..98cc3ac51d 100644 --- a/ReleaseNotes/index.txt +++ b/ReleaseNotes/index.txt @@ -1,6 +1,11 @@ Gerrit Code Review - Release Notes ================================== +[[2_6]] +Version 2.6.x +------------- +* link:ReleaseNotes-2.6.html[2.6] + [[2_5]] Version 2.5.x ------------- |