diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt index b082339112..ff252f74b7 100644 --- a/Documentation/access-control.txt +++ b/Documentation/access-control.txt @@ -907,7 +907,7 @@ Suggested access rights to grant: * xref:category_forge_author[`Forge Author Identity`] to 'refs/heads/*' * link:config-labels.html#label_Code-Review[`Label: Code-Review`] with range '-2' to '+2' for 'refs/heads/*' * link:config-labels.html#label_Verified[`Label: Verified`] with range '-1' to '+1' for 'refs/heads/*' -* xref:category_submit[`Submit`] +* xref:category_submit[`Submit`] on 'refs/heads/*' If the project is small or the developers are seasoned it might make sense to give them the freedom to push commits directly to a branch. diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt index 45a26644b6..dab0f5e1cc 100644 --- a/Documentation/config-gerrit.txt +++ b/Documentation/config-gerrit.txt @@ -502,15 +502,17 @@ Values should use common unit suffixes to express their setting: * y, year, years (`1 year` is treated as `365 days`) + +-- If a unit suffix is not specified, `seconds` is assumed. If 0 is supplied, the maximum age is infinite and items are never purged except when the cache is full. -+ + Default is `0`, meaning store forever with no expire, except: -+ + * `"adv_bases"`: default is `10 minutes` * `"ldap_groups"`: default is `1 hour` * `"web_sessions"`: default is `12 hours` +-- [[cache.name.memoryLimit]]cache..memoryLimit:: + @@ -735,9 +737,11 @@ Values should use common unit suffixes to express their setting: * h, hr, hour, hours + +-- If a unit suffix is not specified, `milliseconds` is assumed. -+ + Default is 5 seconds. +-- [[cache.diff_intraline.timeout]]cache.diff_intraline.timeout:: + @@ -758,9 +762,11 @@ Values should use common unit suffixes to express their setting: * h, hr, hour, hours + +-- If a unit suffix is not specified, `milliseconds` is assumed. -+ + Default is 5 seconds. +-- [[cache.diff_intraline.enabled]]cache.diff_intraline.enabled:: + @@ -1345,12 +1351,14 @@ Values should use common unit suffixes to express their setting: * h, hr, hour, hours + +-- If a unit suffix is not specified, `milliseconds` is assumed. -+ + Default is `30 seconds`. -+ + This setting only applies if <> is true. +-- [[database.dataSourceInterceptorClass]]database.dataSourceInterceptorClass:: @@ -1947,10 +1955,12 @@ Behaves exactly like proxy-http, but also sets the scheme to assume 'https://' is the proper URL back to the server. + +-- If multiple values are supplied, the daemon will listen on all of them. -+ + By default, http://*:8080. +-- [[httpd.reuseAddress]]httpd.reuseAddress:: + @@ -2078,11 +2088,13 @@ Values should use common unit suffixes to express their setting: * y, year, years (`1 year` is treated as `365 days`) + +-- If a unit suffix is not specified, `minutes` is assumed. If 0 is supplied, the maximum age is infinite and connections will not abort until the client disconnects. -+ + By default, 5 minutes. +-- [[httpd.filterClass]]httpd.filterClass:: + @@ -3082,15 +3094,17 @@ default of 29418. * 'hostname':'port' (for example `review.example.com:29418`) * 'IPv4':'port' (for example `10.0.0.1:29418`) * ['IPv6']:'port' (for example `[ff02::1]:29418`) -* *:'port' (for example `*:29418`) +* +*:'port'+ (for example `+*:29418+`) + +-- If multiple values are supplied, the daemon will listen on all of them. -+ + To disable the internal SSHD, set listenAddress to `off`. -+ + By default, *:29418. +-- [[sshd.advertisedAddress]]sshd.advertisedAddress:: + @@ -3099,16 +3113,18 @@ This may differ from sshd.listenAddress if a firewall based port redirector is being used, making Gerrit appear to answer on port 22. The following forms may be used to specify an address. In any form, `:'port'` may be omitted to use the default SSH port of 22. -+ + * 'hostname':'port' (for example `review.example.com:22`) * 'IPv4':'port' (for example `10.0.0.1:29418`) * ['IPv6']:'port' (for example `[ff02::1]:29418`) + +-- If multiple values are supplied, the daemon will advertise all of them. -+ + By default, sshd.listenAddress. +-- [[sshd.tcpKeepAlive]]sshd.tcpKeepAlive:: + diff --git a/Documentation/config-plugins.txt b/Documentation/config-plugins.txt index 6ba85e09fe..3887ff35c2 100644 --- a/Documentation/config-plugins.txt +++ b/Documentation/config-plugins.txt @@ -39,6 +39,7 @@ installed during the link:pgm-init.html[Gerrit initialization]. The core plugins are developed and maintained by the Gerrit maintainers and the Gerrit community. +[[commit-message-length-validator]] === commit-message-length-validator This plugin checks the length of a commit’s commit message subject and @@ -52,6 +53,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/commit-message-length-validator/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[cookbook-plugin]] === cookbook-plugin Sample plugin to demonstrate features of Gerrit's plugin API. @@ -61,6 +63,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/cookbook-plugin/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[download-commands]] === download-commands This plugin defines commands for downloading changes in different @@ -73,6 +76,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/download-commands/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[replication]] === replication This plugin can automatically push any changes Gerrit Code Review makes @@ -87,6 +91,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[reviewnotes]] === reviewnotes Stores review information for Gerrit changes in the `refs/notes/review` @@ -97,6 +102,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/reviewnotes/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[singleusergroup]] === singleusergroup This plugin provides a group per user. This is useful to assign access @@ -121,6 +127,7 @@ list may not be complete. You may discover more plugins on link:https://gerrit-review.googlesource.com/#/admin/projects/?filter=plugins%252F[ gerrit-review]. +[[admin-console]] === admin-console Plugin to provide administrator-only functionality, intended to @@ -133,6 +140,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/admin-console/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[avatars-external]] === avatars/external This plugin allows to use an external url to load the avatar images @@ -145,6 +153,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/avatars/external/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[avatars-gravatar]] === avatars/gravatar Plugin to display user icons from Gravatar. @@ -152,6 +161,7 @@ Plugin to display user icons from Gravatar. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/avatars/gravatar[ Project] +[[branch-network]] === branch-network This plugin allows the rendering of Git repository branch network in a @@ -166,6 +176,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/branch-network/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[changemessage]] === changemessage This plugin allows to display a static info message on the change screen. @@ -177,6 +188,7 @@ Plugin Documenatation] | link:https://gerrit.googlesource.com/plugins/changemessage/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[codenvy]] === codenvy Plugin to allow to edit code on-line on either an existing branch or an @@ -186,6 +198,7 @@ development platform. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/codenvy[ Project] +[[delete-project]] === delete-project Provides the ability to delete a project. @@ -195,6 +208,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/delete-project/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[egit]] === egit This plugin provides extensions for easier usage with EGit. @@ -208,6 +222,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/egit/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[force-draft]] === force-draft Provides an ssh command to force a change or patch set to draft status. @@ -217,6 +232,7 @@ delete a change or patch set from the server. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/force-draft[ Project] +[[gitblit]] === gitblit GitBlit code-viewer plugin with SSO and Security Access Control. @@ -224,6 +240,7 @@ GitBlit code-viewer plugin with SSO and Security Access Control. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/gitblit[ Project] +[[github]] === github Plugin to integrate with GitHub: replication, pull-request to Change-Sets @@ -231,6 +248,7 @@ Plugin to integrate with GitHub: replication, pull-request to Change-Sets link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/github[ Project] +[[gitiles]] === gitiles Plugin running Gitiles alongside a Gerrit server. @@ -238,6 +256,7 @@ Plugin running Gitiles alongside a Gerrit server. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/gitiles[ Project] +[[imagare]] === imagare The imagare plugin allows Gerrit users to upload and share images. @@ -249,6 +268,33 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/imagare/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[importer]] +=== importer + +The importer plugin allows to import projects from one Gerrit server +into another Gerrit server. + +Projects can be imported while both source and target Gerrit server +are online. There is no downtime required. + +The git repository and all changes of the project, including approvals +and review comments, are imported. Historic timestamps are preserved. + +Project imports can be resumed. This means a project team can continue +to work in the source system while the import to the target system is +done. By resuming the import the project in the target system can be +updated with the missing delta. + +The importer plugin can also be used to copy a project within one Gerrit +server, and in combination with the link:#delete-project[delete-project] +plugin it can be used to rename a project. + +link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/importer[ +Project] | +link:https://gerrit.googlesource.com/plugins/importer/+doc/master/src/main/resources/Documentation/about.md[ +Documentation] + +[[its-plugins]] === Issue Tracker System Plugins Plugins to integrate with issue tracker systems (ITS), that (based @@ -266,6 +312,7 @@ its-base Documentation] | link:https://gerrit.googlesource.com/plugins/its-base/+doc/master/src/main/resources/Documentation/config.md[ its-base Configuration] +[[its-bugzilla]] ==== its-bugzilla Plugin to integrate with Bugzilla. @@ -275,6 +322,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/its-bugzilla/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[its-jira]] ==== its-jira Plugin to integrate with Jira. @@ -284,6 +332,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/its-jira/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[its-rtc]] ==== its-rtc Plugin to integrate with IBM Rational Team Concert (RTC). @@ -293,6 +342,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/its-rtc/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[javamelody]] === javamelody This plugin allows to monitor the Gerrit server. @@ -307,6 +357,7 @@ Documentation] | https://gerrit.googlesource.com/plugins/javamelody/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[menuextender]] === menuextender The menuextender plugin allows Gerrit administrators to configure @@ -319,6 +370,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/menuextender/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[motd]] === motd This plugin can output messages to clients when pulling/fetching/cloning @@ -334,8 +386,8 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/motd/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[oauth-authentication-provider]] === OAuth authentication provider - This plugin enables Gerrit to use OAuth2 protocol for authentication. Two different OAuth providers are supported: @@ -345,6 +397,7 @@ Two different OAuth providers are supported: https://github.com/davido/gerrit-oauth-provider[Project] | https://github.com/davido/gerrit-oauth-provider/wiki/Getting-Started[Configuration] +[[project-download-commands]] === project-download-commands This plugin adds support for project specific download commands. @@ -360,6 +413,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/project-download-commands/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[quota]] === quota This plugin allows to enforce quotas in Gerrit. @@ -375,6 +429,7 @@ Documentation] link:https://gerrit.googlesource.com/plugins/quota/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[reviewers]] === reviewers A plugin that allows adding default reviewers to a change. @@ -386,6 +441,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/reviewers/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[reviewers-by-blame]] === reviewers-by-blame A plugin that allows automatically adding reviewers to a change from @@ -401,6 +457,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/reviewers-by-blame/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[groovy-provider]] === scripting/groovy-provider This plugin provides a Groovy runtime environment for Gerrit plugins in Groovy. @@ -410,6 +467,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/scripting/groovy-provider/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[scala-provider]] === scripting/scala-provider This plugin provides a Scala runtime environment for Gerrit plugins in Scala. @@ -419,6 +477,7 @@ Project] | link:https://gerrit.googlesource.com/plugins/scripting/scala-provider/+doc/master/src/main/resources/Documentation/about.md[ Documentation] +[[server-config]] === server-config This plugin enables access (download and upload) to the server config @@ -430,6 +489,7 @@ get. link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/server-config[ Project] +[[serviceuser]] === serviceuser This plugin allows to create service users in Gerrit. @@ -446,6 +506,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/serviceuser/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[uploadvalidator]] === uploadvalidator This plugin allows to configure upload validations per project. @@ -461,6 +522,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/uploadvalidator/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[websession-flatfile]] === websession-flatfile This plugin replaces the built-in Gerrit H2 based websession cache with @@ -475,6 +537,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/websession-flatfile/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[wip]] === wip This plugin adds a new button that allows a change owner to set a @@ -492,6 +555,7 @@ Documentation] | link:https://gerrit.googlesource.com/plugins/wip/+doc/master/src/main/resources/Documentation/config.md[ Configuration] +[[x-docs]] === x-docs This plugin serves project documentation as HTML pages. diff --git a/Documentation/dev-buck.txt b/Documentation/dev-buck.txt index ad036a395e..f0f3345c9c 100644 --- a/Documentation/dev-buck.txt +++ b/Documentation/dev-buck.txt @@ -12,7 +12,7 @@ OS are supported. Buck requires Python version 2.7 to be installed. Clone the git and build it: ---- - git clone https://gerrit.googlesource.com/buck + git clone https://github.com/facebook/buck cd buck git checkout $(cat ../gerrit/.buckversion) ant diff --git a/Documentation/intro-project-owner.txt b/Documentation/intro-project-owner.txt index b2fce88733..eb3c4fb5a2 100644 --- a/Documentation/intro-project-owner.txt +++ b/Documentation/intro-project-owner.txt @@ -765,6 +765,14 @@ As workaround you may . link:#import-history[import the history of the old project] . link:#project-deletion[delete the old project] +Please note that a drawback of this workaround is that the whole review +history (changes, review comments) is lost. + +Alternatively, you can use the +link:https://gerrit.googlesource.com/plugins/importer/[importer] plugin +to copy the project _including the review history_, and then +link:#project-deletion[delete the old project]. + GERRIT ------ Part of link:index.html[Gerrit Code Review] diff --git a/Documentation/user-inline-edit.txt b/Documentation/user-inline-edit.txt index 10f97fe009..5ad6b39ffa 100644 --- a/Documentation/user-inline-edit.txt +++ b/Documentation/user-inline-edit.txt @@ -45,7 +45,9 @@ While in edit mode, it is possible to add new files to the change by clicking the 'Add...' button at the top of the file list. Files can be removed from the change, or restored, by clicking the icon to the -left of the file name. +left of the file name. Reverting a file in the change is also supported and is +achieved in two steps: remove file from the change and restore the file in the +change. To switch from edit mode back to review mode, click the 'Done Editing' button. diff --git a/ReleaseNotes/ReleaseNotes-2.10.3.1.txt b/ReleaseNotes/ReleaseNotes-2.10.3.1.txt new file mode 100644 index 0000000000..2b90a6d110 --- /dev/null +++ b/ReleaseNotes/ReleaseNotes-2.10.3.1.txt @@ -0,0 +1,11 @@ +Release notes for Gerrit 2.10.3.1 +================================= + +There are no schema changes from link:ReleaseNotes-2.10.3.html[2.10.3]. + +Download: +link:https://gerrit-releases.storage.googleapis.com/gerrit-2.10.3.1.war[ +https://gerrit-releases.storage.googleapis.com/gerrit-2.10.3.1.war] + +The 2.10.3 release packaged wrong version of the core plugins due to a bug +in our buck build scripts. This version fixes this issue. diff --git a/ReleaseNotes/ReleaseNotes-2.10.3.txt b/ReleaseNotes/ReleaseNotes-2.10.3.txt new file mode 100644 index 0000000000..578a1ae5eb --- /dev/null +++ b/ReleaseNotes/ReleaseNotes-2.10.3.txt @@ -0,0 +1,124 @@ +Release notes for Gerrit 2.10.3 +=============================== + +Download: +link:https://gerrit-releases.storage.googleapis.com/gerrit-2.10.3.war[ +https://gerrit-releases.storage.googleapis.com/gerrit-2.10.3.war] + +Important Notes +--------------- + +*WARNING:* There are no schema changes from +link:ReleaseNotes-2.10.2.html[2.10.2], but Bouncycastle was upgraded to 1.51. +It is therefore important to upgrade the site with the `init` program, rather +than only copying the .war file over the existing one. + +*WARNING:* When upgrading from version 2.8.4 or older with a site that uses +Bouncy Castle Crypto, new versions of the libraries will be downloaded. The old +libraries should be manually removed from site's `lib` folder to prevent the +startup failure described in +link:https://code.google.com/p/gerrit/issues/detail?id=3084[Issue 3084]. + +It is recommended to run the `init` program in interactive mode. Warnings will +be suppressed in batch mode. + +---- + java -jar gerrit.war init -d site_path +---- + +New Features +------------ + +* Support hybrid OpenID and OAuth2 authentication ++ +OpenID auth scheme is aware of optional OAuth2 plugin-based authentication. +This feature is considered to be experimental and hasn't reached full feature set yet. +Particularly, linking of user identities accross protocol boundaries and even from +one OAuth2 identity to another OAuth2 identity wasn't implemented yet. + +Configuration +~~~~~~~~~~~~~ + +* Allow to configure +link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10.3/config-gerrit.html#sshd.rekeyBytesLimit[ +SSHD rekey parameters]. + +SSH +--- + +* Update SSHD to 0.14.0. ++ +This fixes link:https://issues.apache.org/jira/browse/SSHD-348[SSHD-348] which +was causing ssh threads allocated to stream-events clients to get stuck. ++ +Also update SSHD Mina to 2.0.8 and Bouncycastle to 1.51. + +* link:https://code.google.com/p/gerrit/issues/detail?id=2797[Issue 2797]: +Add support for ECDSA based public key authentication. + +Bug Fixes +--------- + +* Prevent wrong content type for CSS files. ++ +The mime-util library contains two content type mappings for .css files: +`application/x-pointplus` and `text/css`. Unfortunately, using the wrong one +will result in most browsers discarding the file as a CSS file. Ensure we only +use the correct type for CSS files. + +* link:https://code.google.com/p/gerrit/issues/detail?id=3289[Issue 3289]: +Prevent NullPointerException in Gitweb servlet. + +Replication plugin +~~~~~~~~~~~~~~~~~~ + +* Set connection timeout to 120 seconds for SSH remote operations. ++ +The creation of a missing Git, before starting replication, is a blocking +operation. By setting a timeout, we ensure the operation does not get stuck +forever, essentially blocking all future remote git creation operations. + +OAuth extension point +~~~~~~~~~~~~~~~~~~~~~ + +* Respect servlet context path in URL for login token ++ +On sites with non empty context path, first redirect was broken and ended up +with 404 Not found. + +* Invalidate OAuth session after web_sessions cache expiration ++ +After web session cache expiration there is no way to re-sign-in into Gerrit. + +Daemon +~~~~~~ + +* Print proper names for tasks in output of `show-queue` command. ++ +Some tasks were not displayed with the proper name. + +Web UI +~~~~~~ + +* link:http://code.google.com/p/gerrit/issues/detail?id=3044[Issue 3044]: +Remove stripping `#` in login redirect. + +SSH +~~~ + +* Prevent double authentication for the same public key. + + +Performance +----------- + +* Improved performance when creating a new branch on a repository with a large +number of changes. + + +Upgrades +-------- + +* Update Bouncycastle to 1.51. + +* Update SSHD to 0.14.0. diff --git a/ReleaseNotes/ReleaseNotes-2.11.txt b/ReleaseNotes/ReleaseNotes-2.11.txt index 49b13170be..3bc6c9667d 100644 --- a/ReleaseNotes/ReleaseNotes-2.11.txt +++ b/ReleaseNotes/ReleaseNotes-2.11.txt @@ -8,8 +8,9 @@ link:https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war[ https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war] Gerrit 2.11 includes the bug fixes done with -link:ReleaseNotes-2.10.1.html[Gerrit 2.10.1] and -link:ReleaseNotes-2.10.2.html[Gerrit 2.10.2]. +link:ReleaseNotes-2.10.1.html[Gerrit 2.10.1], +link:ReleaseNotes-2.10.2.html[Gerrit 2.10.2] and +link:ReleaseNotes-2.10.3.html[Gerrit 2.10.3]. These bug fixes are *not* listed in these release notes. @@ -20,9 +21,38 @@ Important Notes *WARNING:* This release contains schema changes. To upgrade: ---- java -jar gerrit.war init -d site_path +---- + +Gerrit 2.11 requires a secondary index, which can be created offline +by running the `reindex` program: + +---- java -jar gerrit.war reindex -d site_path ---- +If the site that is upgraded already has a secondary index, the +secondary index can be upgraded online. This is important for large +sites since running the `reindex` program can take a long time and +contributes significantly to the downtime that is required for the +upgrade. + +Gerrit 2.11 supports online reindexing only from the index version `11` +which is the index version of Gerrit 2.10. This means if you come from +an older release it makes sense to first upgrade to 2.10 and then do +the upgrade to 2.11 so that you can profit from online reindexing. + +In case you are upgrading from 2.10 it is *important* to check *before* +the upgrade to 2.11 that the index version of your Gerrit 2.10 site is +`11`. You can check the index version in +`$site_path/index/gerrit_index.config`. Your Gerrit 2.10 site may run +with an older index version (e.g. if online reindexing to index version +`11` is still running or if online reindexing to version `11` has +failed). In this case you first need to successfully migrate your index +version of your Gerrit 2.10 site to `11` and only then start with the +2.11 upgrade. If you start the 2.11 upgrade when the schema version of +your Gerrit 2.10 site is older than `11`, online reindexing is no longer +possible and you need to reindex offline by using the `reindex` program. + *WARNING:* Upgrading to 2.11.x requires the server be first upgraded to 2.8 (or 2.9) and then to 2.11.x. If you are upgrading from 2.8.x or later, you may ignore this warning and upgrade directly to 2.11.x. @@ -118,8 +148,6 @@ head of the destination branch or the latest patch set of the predecessor change * Show the parent commit's subject as a tooltip. -* Decorate abandoned changes in the 'Related Changes' list with a dark red dot. - * link:http://code.google.com/p/gerrit/issues/detail?id=2541[Issue 2541], link:http://code.google.com/p/gerrit/issues/detail?id=2974[Issue 2974]: Allow the 'Reply' button's @@ -367,10 +395,6 @@ Allow projects to be configured to create a new change for every uploaded commit link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#container.daemonOpt[ options to pass to the daemon]. -* Allow to configure -link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#sshd.rekeyBytesLimit[ -SSHD rekey parameters]. - Daemon ~~~~~~ @@ -395,9 +419,6 @@ a change message on the created change. SSH ~~~ -* link:https://code.google.com/p/gerrit/issues/detail?id=2797[Issue 2797]: -Add support for ECDSA based public key authentication. - * Add new commands link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-logging-ls-level.html[ `logging ls-level`] and @@ -542,16 +563,6 @@ Fix server error when checking mergeability of a change. Due to link:https://github.com/google/guice/issues/745[Guice issue 745], cloning of a repository with a space in its name was impossible. -* Print proper names for tasks in output of `show-queue` command. -+ -Some tasks were not displayed with the proper name. - - -SSH -~~~ - -* Prevent double authentication for the same public key. - Secondary Index / Search ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -600,19 +611,15 @@ documented. Web UI ~~~~~~ -* link:http://code.google.com/p/gerrit/issues/detail?id=3044[Issue 3044]: -Remove stripping `#` in login redirect. +Change List +^^^^^^^^^^^ + +* link:http://code.google.com/p/gerrit/issues/detail?id=3304[Issue 3304]: +Always show a tooltip on the label column entries. Change Screen ^^^^^^^^^^^^^ -* link:http://code.google.com/p/gerrit/issues/detail?id=2894[Issue 2894]: -Link to change screen for merged or abandoned changes in the 'Related Changes' -list. -+ -For changes in the 'Related Changes' tab that are closed the link was -bringing the user to GitWeb, and not as expected to the change screen. - * link:http://code.google.com/p/gerrit/issues/detail?id=3147[Issue 3147]: Allow to disable muting of common path prefixes in the file list. + @@ -843,8 +850,6 @@ Upgrades * Update ASM to 5.0.3. -* Update Bouncycastle to 1.51. - * Update CodeMirror to 4.10.0-6-gd0a2dda. * Update Guava to 18.0. @@ -866,5 +871,3 @@ Upgrades * Update Parboiled to 1.1.7. * Update Pegdown to 1.4.2. - -* Update SSHD to 0.14.0. diff --git a/ReleaseNotes/index.txt b/ReleaseNotes/index.txt index 1c4c2bec1a..99db8fb690 100644 --- a/ReleaseNotes/index.txt +++ b/ReleaseNotes/index.txt @@ -9,6 +9,8 @@ Version 2.11.x [[2_10]] Version 2.10.x -------------- +* link:ReleaseNotes-2.10.3.1.html[2.10.3.1] +* link:ReleaseNotes-2.10.3.html[2.10.3] * link:ReleaseNotes-2.10.2.html[2.10.2] * link:ReleaseNotes-2.10.1.html[2.10.1] * link:ReleaseNotes-2.10.html[2.10] diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/RestResponse.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/RestResponse.java index 73dc1f0740..6c7dbfee38 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/RestResponse.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/RestResponse.java @@ -19,6 +19,7 @@ import static com.google.gerrit.httpd.restapi.RestApiServlet.JSON_MAGIC; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; +import java.nio.charset.StandardCharsets; public class RestResponse extends HttpResponse { @@ -29,7 +30,9 @@ public class RestResponse extends HttpResponse { @Override public Reader getReader() throws IllegalStateException, IOException { if (reader == null && response.getEntity() != null) { - reader = new InputStreamReader(response.getEntity().getContent()); + reader = + new InputStreamReader(response.getEntity().getContent(), + StandardCharsets.UTF_8); reader.skip(JSON_MAGIC.length); } return reader; diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java index 016a8beb8a..4007e3261b 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java @@ -72,6 +72,7 @@ import org.junit.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicLong; @@ -658,21 +659,21 @@ public class ChangeEditIT extends AbstractDaemonTest { private String newChange(PersonIdent ident) throws Exception { PushOneCommit push = pushFactory.create(db, ident, testRepo, PushOneCommit.SUBJECT, FILE_NAME, - new String(CONTENT_OLD)); + new String(CONTENT_OLD, StandardCharsets.UTF_8)); return push.to("refs/for/master").getChangeId(); } private String amendChange(PersonIdent ident, String changeId) throws Exception { PushOneCommit push = pushFactory.create(db, ident, testRepo, PushOneCommit.SUBJECT, FILE_NAME2, - new String(CONTENT_NEW2), changeId); + new String(CONTENT_NEW2, StandardCharsets.UTF_8), changeId); return push.to("refs/for/master").getChangeId(); } private String newChange2(PersonIdent ident) throws Exception { PushOneCommit push = pushFactory.create(db, ident, testRepo, PushOneCommit.SUBJECT, FILE_NAME, - new String(CONTENT_OLD)); + new String(CONTENT_OLD, StandardCharsets.UTF_8)); return push.rm("refs/for/master").getChangeId(); } diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java index 1c57d38ed3..6867bab0c9 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyPreferencesScreen.java @@ -210,6 +210,7 @@ public class MyPreferencesScreen extends SettingsScreen { e.listenTo(legacycidInChangeTable); e.listenTo(muteCommonPathPrefixes); e.listenTo(diffView); + e.listenTo(reviewCategoryStrategy); } @Override diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java index 37b90c4060..532f8f7270 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Actions.java @@ -130,7 +130,10 @@ class Actions extends Composite { a2b(actions, "cherrypick", cherrypick); a2b(actions, "rebase", rebase); - + if (rebase.isVisible()) { + // it is the rebase button in RebaseDialog that the server wants to disable + rebase.setEnabled(true); + } RevisionInfo revInfo = changeInfo.revision(revision); for (String id : filterNonCore(actions)) { add(new ActionButton(changeInfo, revInfo, actions.get(id))); @@ -176,7 +179,16 @@ class Actions extends Composite { @UiHandler("rebase") void onRebase(@SuppressWarnings("unused") ClickEvent e) { - RebaseAction.call(rebase, project, changeInfo.branch(), changeId, revision); + boolean enabled = true; + RevisionInfo revInfo = changeInfo.revision(revision); + if (revInfo.has_actions()) { + NativeMap actions = revInfo.actions(); + if (actions.containsKey("rebase")) { + enabled = actions.get("rebase").enabled(); + } + } + RebaseAction.call(rebase, project, changeInfo.branch(), changeId, revision, + enabled); } @UiHandler("submit") diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java index 5c44a14779..3a3ffe2eb1 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileAction.java @@ -28,16 +28,18 @@ class AddFileAction { private final RevisionInfo revision; private final ChangeScreen.Style style; private final Widget addButton; + private final FileTable files; private AddFileBox addBox; private PopupPanel popup; AddFileAction(Change.Id changeId, RevisionInfo revision, - ChangeScreen.Style style, Widget addButton) { + ChangeScreen.Style style, Widget addButton, FileTable files) { this.changeId = changeId; this.revision = revision; this.style = style; this.addButton = addButton; + this.files = files; } public void onEdit() { @@ -46,8 +48,9 @@ class AddFileAction { return; } + files.unregisterKeys(); if (addBox == null) { - addBox = new AddFileBox(changeId, revision); + addBox = new AddFileBox(changeId, revision, files); } addBox.clearPath(); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java index 82fe80658c..09de2c877a 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/AddFileBox.java @@ -41,6 +41,7 @@ class AddFileBox extends Composite { private final Change.Id changeId; private final RevisionInfo revision; + private final FileTable fileTable; @UiField Button open; @UiField Button cancel; @@ -48,9 +49,10 @@ class AddFileBox extends Composite { @UiField(provided = true) RemoteSuggestBox path; - AddFileBox(Change.Id changeId, RevisionInfo revision) { + AddFileBox(Change.Id changeId, RevisionInfo revision, FileTable files) { this.changeId = changeId; this.revision = revision; + this.fileTable = files; path = new RemoteSuggestBox(new PathSuggestOracle(changeId, revision)); path.addSelectionHandler(new SelectionHandler() { @@ -63,6 +65,7 @@ class AddFileBox extends Composite { @Override public void onClose(CloseEvent event) { hide(); + fileTable.registerKeys(); } }); @@ -92,6 +95,7 @@ class AddFileBox extends Composite { @UiHandler("cancel") void onCancel(@SuppressWarnings("unused") ClickEvent e) { hide(); + fileTable.registerKeys(); } private void hide() { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java index 4568882b67..d153771739 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java @@ -435,7 +435,7 @@ public class ChangeScreen extends Screen { reviewMode.setVisible(!editMode.isVisible()); addFileAction = new AddFileAction( changeId, info.revision(revision), - style, addFile); + style, addFile, files); deleteFileAction = new DeleteFileAction( changeId, info.revision(revision), style, addFile); diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java index 4bdd17fc03..93db1a7afe 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.java @@ -19,11 +19,13 @@ import com.google.gerrit.client.FormatUtil; import com.google.gerrit.client.Gerrit; import com.google.gerrit.client.GitwebLink; import com.google.gerrit.client.WebLinkInfo; +import com.google.gerrit.client.actions.ActionInfo; import com.google.gerrit.client.account.AccountInfo; import com.google.gerrit.client.changes.ChangeInfo; import com.google.gerrit.client.changes.ChangeInfo.CommitInfo; import com.google.gerrit.client.changes.ChangeInfo.GitPerson; import com.google.gerrit.client.changes.ChangeInfo.RevisionInfo; +import com.google.gerrit.client.rpc.NativeMap; import com.google.gerrit.client.rpc.Natives; import com.google.gerrit.client.ui.CommentLinkProcessor; import com.google.gerrit.client.ui.InlineHyperlink; @@ -46,6 +48,7 @@ import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.ScrollPanel; +import com.google.gwt.user.client.ui.UIObject; import com.google.gwtexpui.clippy.client.CopyableLabel; import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder; @@ -77,6 +80,7 @@ class CommitBox extends Composite { @UiField HTML text; @UiField ScrollPanel scroll; @UiField Button more; + @UiField Element parentNotCurrentText; private boolean expanded; CommitBox() { @@ -121,7 +125,19 @@ class CommitBox extends Composite { if (revInfo.commit().parents().length() > 1) { mergeCommit.setVisible(true); } + setParents(change.project(), revInfo.commit().parents()); + + // display the orange ball if parent has moved on (not current) + boolean parentNotCurrent = false; + if (revInfo.has_actions()) { + NativeMap actions = revInfo.actions(); + if (actions.containsKey("rebase")) { + parentNotCurrent = actions.get("rebase").enabled(); + } + } + UIObject.setVisible(parentNotCurrentText, parentNotCurrent); + parentNotCurrentText.setInnerText(parentNotCurrent ? "\u25CF" : ""); } private void setWebLinks(ChangeInfo change, String revision, diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml index 5b7fb89b06..93312fa874 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/CommitBox.ui.xml @@ -68,7 +68,7 @@ limitations under the License. padding: 0; width: 560px; } - .header th { width: 70px; } + .header th { width: 72px; } .header td { white-space: nowrap; } .date { width: 132px; } @@ -106,6 +106,16 @@ limitations under the License. height: 16px !important; vertical-align: bottom; } + + .parent { + margin-right: 3px; + float: left; + } + .parentNotCurrent { + color: #FFA62F; + font-weight: bold; + } + @@ -163,7 +173,15 @@ limitations under the License. - Parent(s) + +
+ Parent(s) +
+