| = Release notes for Gerrit 2.2.2 |
| |
| Gerrit 2.2.2 is now available: |
| |
| link:https://www.gerritcodereview.com/download/gerrit-2.2.2.war[https://www.gerritcodereview.com/download/gerrit-2.2.2.war] |
| |
| == Schema Change |
| *WARNING:* This release contains schema changes. To upgrade: |
| ---- |
| java -jar gerrit.war init -d site_path |
| ---- |
| |
| *WARNING:* Upgrading to 2.2.x requires the server be first upgraded |
| to 2.1.7 (or a later 2.1.x version), and then to 2.2.x. |
| |
| == New Features |
| |
| === Prolog |
| * issue 971 Use Prolog Cafe for ChangeControl.canSubmit() |
| |
| * Add per-project prolog submit rule files |
| + |
| When loading the prolog environment, now checks refs/meta/config |
| branch for a file called rules.pl. If it exists, consult the |
| file. Expects a predicate called submit_rule. If no file is found, |
| uses the default_submit predicate in common_rules.pl. |
| |
| * Add inheritance of prolog rules |
| + |
| Projects now inherit the prolog rules defined in their parent |
| project. Submit results from the child project are filtered by the |
| parent project using the filter predicate defined in the parent's |
| rules.pl. The results of the filtering are then passed up to the |
| parent's parent and filtered, repeating this process up to the top |
| level All-Projects. |
| |
| * Load precompiled prolog rules from jar file |
| + |
| Looks in (site)/cache/rules for a jar file called: |
| rules-(sha1 of rules.pl).jar |
| Loads the precompiled prolog rules and uses them instead of |
| consulting rules.pl. If the jar does not exist, consults rules.pl. |
| If rules.pl does not exist, uses the default submit rules. |
| |
| * Cmd line tool rulec to compile jar from prolog |
| + |
| Rulec takes rules.pl from the refs/meta/config branch and creates a |
| jar file named rules-(sha1 of rules.pl).jar in (sitepath)/cache/rules. |
| Generates temporary prolog, java src, and class files which are |
| deleted afterwards. |
| |
| * prolog-shell: Simple command line Prolog interpreter |
| + |
| Define a small interactive interpreter that users or site |
| administrators can play around with by downloading the Gerrit WAR |
| file and executing: java -jar gerrit.war prolog-shell |
| |
| ==== Prolog Predicates |
| * Add Prolog Predicates to check commit messages and edits |
| + |
| commit_message returns the commit message as a symbol. |
| + |
| commit_message_matches takes in a regex pattern and checks it against |
| the commit message. |
| + |
| commit_edits takes in a regex pattern for filenames and a regex |
| pattern for edits. For all files in a commit that match the filename |
| regex. Returns true if the edits in any of those files match the |
| edit regex. |
| |
| * Add Prolog Predicates to expose commit filelist |
| + |
| commit_delta/1,3,4 each takes a regular expression and matches it to |
| the path of all the files in the latest patchset of a commit. |
| If applicable (changes where the file is renamed or copied), the |
| regex is also checked against the old path. |
| + |
| commit_delta/1 returns true if any files match the regex |
| + |
| commit_delta/3 returns the changetype and path, if the changetype is |
| renamed, it also returns the old path. If the changetype is rename, |
| it returns a delete for oldpath and an add for newpath. If the |
| changetype is copy, an add is returned along with newpath. |
| + |
| commit_delta/4 returns the changetype, new path, and old path |
| (if applicable). |
| |
| * Add Prolog predicates that expose the branch, owner, |
| project, and topic of a change, the author and committer of the most |
| recent patchset in the change, and who is the current user. |
| |
| * For user-related predicates, if the user is not a gerrit user, will |
| return user(anonymous) or similar. Author and committer predicates |
| for commits return user(id), name, and email. |
| |
| * Make max_with_block/4 public |
| + |
| This is the current rule generally applied to a label function. Make |
| it exportable for now until we can come back and clean up the legacy |
| approval data code. |
| |
| === Web |
| |
| * Support in Firefox delete key in NpIntTextBox |
| + |
| Pressing the delete key while being in a NpIntTextBox (e.g. in the |
| text box for the Tab Width or Columns preference when comparing a |
| file) now works in Firefox. |
| |
| * Make sure special keys work in text fields |
| + |
| There is a bug in gwt 2.1.0 that prevents pressing special keys like |
| Enter, Backspace etc. from being properly recognized and so they have no effect. |
| |
| ==== ChangeScreen |
| * issue 855 Indicate outdated dependencies on the ChangeScreen |
| + |
| If a change dependency is no longer the latest patchSet for that |
| change, mark it OUTDATED in the dependencies table and make |
| its row red, and add a warning message to the dependencies |
| header, also keep the dependencies disclosure panel open |
| even when an outdated dependent change is merged. |
| Additionally make the link for dependencies link to the |
| exact patchSet of the dependent change. |
| |
| * issue 881 Allow adding groups as reviewer |
| + |
| On the ChangeScreen it is now possible to add a group as reviewer for |
| a change. When a group is added as reviewer the group is resolved and |
| all its members are added as reviewers to the change. |
| |
| * Update approvals in web UI to adapt to rules.pl submit_rule |
| + |
| The UI now shows whatever the results of the submit_rule are, which |
| permits the submit_rule to make an ApprovalCategory optional, or to |
| make a new label required. |
| |
| ==== Diff Screen |
| * Add top level menus for a new PatchScreen header |
| + |
| Modify the PatchScreen so that the header contents is selectable |
| using top level menus. Allow the header to display the commit |
| message, the preferences, the Patch Sets, or the File List. |
| |
| * Add SideBySide and Unified links to Differences top level menus |
| + |
| These new menu entries allow a user to switch view types easily |
| without returning to the ChangeScreen. Also, they double as a |
| way to hide the header on the PatchScreen (when clicking on the |
| currently displayed type). |
| |
| * Add user pref to retain PatchScreen Header when changing files |
| |
| * Flip the orientation of PatchHistory Table |
| |
| * Remove the 'Change SHA1:' from the PatchScreen title |
| |
| * Remove scrollbar from Commit Message |
| |
| * Allow comment editing with single click on line numbers |
| + |
| Make it easier to comment (and now possible on android devices which |
| zoom on double click) on a patch by simply clicking on the line number. |
| |
| * Add a "Save" button to the PatchScriptSettingsPanel |
| + |
| The "Update" button now only updates the display. Additionally, |
| for logged in users, a "Save" button now behaves the way that |
| "Update" used to behave for logged in users. |
| |
| * issue 665 Display merge changes as differences from automatic result |
| + |
| Instead of displaying nothing for a two-parent merge commit, compute |
| the automatic merge result and display the difference between the |
| automatic result that Git would create, and the actual result that |
| was uploaded by the author/committer of the merge. |
| |
| ==== Groups |
| * Add menu to AccountGroupScreen |
| + |
| This change introduces a menu in the AccountGroupScreen and |
| different screens for subsets of the functionality (similar as it's |
| done for the ProjectScreen). Links from other screens to the |
| AccountGroupScreen are resolved depending on the group type. |
| |
| * Display groupUUID on AccountGroupInfoScreen |
| + |
| To assign a privilege to a new group by editing the |
| 'project.config' file, the new group needs to be added to the |
| 'groups' file in the 'refs/meta/config' branch which requires |
| the UUID of the group to be known. |
| |
| ==== Project Access |
| * Automatically add new rule when adding new permission |
| + |
| If a new permission was added to a block, immediately create the new |
| group entry box and focus it, so the user can assign the permission. |
| |
| * Only show Exclusive checkbox on reference sections |
| + |
| In the access editor, hide the Exclusive checkbox on the |
| Global Capabilities section since it has no inheritance and |
| the exclusive bit isn't supported. |
| |
| * Disable editing after successful save of Access screen |
| + |
| When the access has been successfully modified for a project, |
| switch back to the "read-only" view where the widgets are all |
| disabled and the Edit button is enabled. |
| |
| ==== Project Branches |
| * Display refs/meta/config branch on ProjectBranchesScreen |
| + |
| The new refs/meta/config branch was not shown in the ProjectBranchesScreen. |
| Since refs/meta/config is not just any branch, but has a special |
| meaning to Gerrit it is now displayed at the top below HEAD. |
| |
| * Highlight HEAD and refs/meta/config |
| + |
| Since HEAD and refs/meta/config do not represent ordinary branches, |
| highlight their rows with a special style in the ProjectBranchesScreen. |
| |
| ==== URLs |
| * Modernize URLs to be shorter and consistent |
| + |
| Instead of http://site/#change,1234 we now use a slightly more |
| common looking http://site/#/c/1234 URL to link to a change. |
| + |
| Files within a patch set are now denoted below the change, as in |
| http://site/#/c/1234/1/src/module/foo.c |
| + |
| Also fix the dynamic redirects of http://site/1234 |
| and http://site/r/deadbeef to jump directly to the corresponding |
| change if there is exactly one possible URL. |
| + |
| Entities that have multiple views suffix the URL with ",view-name" |
| to indicate which view the user wants to see. |
| |
| * issue 1018 Accept ~ in linkify() URLs |
| |
| === SSH |
| * Added a set-reviewers ssh command |
| |
| * Support removing more than one reviewer at once |
| + |
| This way we can batch delete reviewers from a change. |
| |
| * issue 881 Support adding groups as reviewer by SSH command |
| + |
| With the set-reviewers SSH command it is now possible to also add |
| groups as reviewer for a change. |
| |
| * Fail review command for changing labels when change is closed |
| + |
| If a reviewer attempts to change a review label (approval) after a |
| change is closed using the ssh review command, cause it to fail the |
| command and output a message. |
| |
| * ls-projects: Fix display of All-Projects under --tree |
| + |
| Everything should be nested below All-Projects, since that is actually |
| the root level. |
| |
| * ls-projects: Add --type to filter by project type |
| + |
| ls-projects now supports --type code|permissions|all. The default is |
| code which now skips permissions only projects, restoring the output |
| to what appears from Gerrit 2.1.7 and earlier. |
| |
| * show-caches: Improve memory reporting |
| + |
| Change the way memory is reported to show the actual values, |
| and the equation that determines how these are put together |
| to form the current usage. Include some additional data including |
| server version, current time, process uptime, active SSH |
| connections, and tasks in the task queue. The --show-jvm option |
| will report additional data about the JVM, and tell the caller |
| where it is running. |
| |
| ==== Queries |
| * Output patchset creation date for 'query' command. |
| |
| * issue 1053 Support comments option in query command |
| + |
| Query SSH command will show all comments if option --comments is |
| used. If --comments is used together with --patch-sets all inline |
| comments are included in the output. |
| |
| === Config |
| * Move batch user priority to a capability |
| + |
| Instead of using a magical group, use a special capability to |
| denote users that should get the batch priority behavior. |
| |
| * issue 742 Make administrator, create-project a global capability |
| + |
| This gets rid of the special entries in system_config and |
| gerrit.config related to who the Administrators group is, |
| or which groups are permitted to create new projects on |
| this server. |
| |
| * issue 48 & 742 Add fine-grained capabilities for administrative actions |
| + |
| The Global Capabilities section in All-Projects can now be used to |
| grant subcommands that are available over SSH and were previously |
| restricted to only Administrators. |
| |
| * Disallow project names ending in "/" |
| |
| * issue 934 query: Enable configurable result limit |
| + |
| Allow site administrators to configure the query limit for user to be |
| above the default hard-coded value of 500 by adding a global |
| [capability] block to All-Projects project.config file with group(s) |
| that should have different limits. |
| |
| * Introduced a new PermissionRule.Action: BLOCK. |
| + |
| Besides already existing ALLOW and DENY actions this change |
| introduces the BLOCK action in order to enable blocking some |
| permission rules globally. |
| |
| * issue 813 Use remote.name.replicatePermissions to hide permissions |
| + |
| Administrators can now disable replication of permissions-only |
| projects and the per-project refs/meta/config in replication.config |
| by setting the replicatePermissions field to false. |
| |
| * Add a Restored.vm template and use it. |
| + |
| The restore action has been erroneously using the Abandoned.vm |
| template. Create a template and sender for the restorecommand. |
| |
| * sshd.advertisedAddress: specify the displayed SSH host/port |
| + |
| This allows aliases which redirect to gerrit's ssh port (say |
| from port 22) to be setup and advertised to users. |
| |
| === Dev |
| * Updated eclipse settings for 3.7 and m2e 1.0 |
| |
| * Fix build in m2eclipse 1.0 |
| + |
| Ignore the antrun and the build-helper-maven-plugin tasks in m2eclipse. |
| |
| * Make Gerrit with gwt 2.3.0 run in gwtdebug mode |
| |
| * Fix a number of build warnings that have crept in |
| |
| * Accept email address automatically |
| + |
| Enable Gerrit to accept email address automatically in |
| "DEVELOPMENT_BECOME_ANY_ACCOUNT" mode without a confirmation email. |
| |
| * Added clickable user names at the BecomeAnyAccountLoginServlet. |
| + |
| The first 5 (by accountId) user names are displayed as clickable |
| links. Clicking a user name logs in as this user, speeding up |
| switching between different users when using the |
| DEVELOPMENT_BECOME_ANY_ACCOUNT authentication type. |
| |
| === Miscellaneous |
| * Permit adding reviewers to closed changes |
| + |
| Permit adding a reviewer to closed changes to support post-submit |
| discussion threads. |
| |
| * issue 805 Don't check for multiple change-ids when pushing directly |
| to refs/heads. |
| |
| * Avoid costly findMergedInto during push to refs/for/* |
| + |
| No longer close a change when a commit is pushed to res/for/* and the |
| Change-Id in the commit message footer matches another commit on an |
| existing branch or tag. |
| |
| * Allow serving static files in subdirectories |
| |
| * issue 1019 Normalize OpenID URLs with http:// prefix |
| + |
| No longer violate OpenID 1.1 and 2.0, both of which require |
| OpenIDs to be normalized (http:// added). |
| |
| * Allow container-based authentication for git over http |
| + |
| Gerrit was insisting on DIGEST authentication when doing git over |
| http. A new boolean configuration parameter auth.trustContainerAuth |
| allows gerrit to be configured to trust the container to do the |
| authentication. |
| |
| * issue 848 Add rpc method for GerritConfig |
| + |
| Exposes what types of reviews are possible via json rpc, so that the |
| Eclipse Reviews plugin currently can parse the javascript from a |
| gerrit page load. |
| |
| |
| == Performance |
| * Bumped Brics version to 1.11.8 |
| + |
| This Brics version fixes a performance issue in some larger Gerrit systems. |
| |
| * Add permission_sort cache to remember sort orderings |
| + |
| Cache the order AccessSections should be sorted in, making any future |
| sorting for the same reference name and same set of section patterns |
| cheaper. |
| |
| * Refactor how permissions are matched by ProjectControl, RefControl |
| + |
| More aggressively cache many of the auth objects at a cost of memory, |
| but this should be an improvement in response times. |
| |
| * Substantially speed up pushing changes for review |
| + |
| Pushing a new change for review checks if the change is related to |
| the branch it's destined for. It used to do this in a way that |
| required a topo-sort of the rev history, and now uses JGit's |
| merge-base functionality. |
| |
| * Add cache for tag advertisements |
| + |
| To make the general case more efficient, introduce a cache called "git_tags". |
| + |
| On a trivial usage of the Linux kernel repository, the average |
| running time of the VisibleRefFilter when caches were hot was |
| 7195.68 ms. With this commit, it is a mere 5.07 milliseconds |
| on a hot cache. A reduction of 99% of the running time. |
| |
| * Don't set lastCheckTime in ProjectState |
| + |
| The lastCheckTime/generation fields are actually a counter that |
| is incremented using a background thread. The values don't match |
| the system clock, and thus reading System.currentTimeMillis() |
| during the construction of ProjectState is a waste of resources. |
| |
| |
| == Upgrades |
| * Upgrade to GWT 2.3.0 |
| * Upgrade to Gson to 1.7.1 |
| * Upgrade to gwtjsonrpc 1.2.4 |
| * Upgrade to gwtexpui 1.2.5 |
| * Upgrade to Jsch 0.1.44-1 |
| * Upgrade to Brics 1.11.8 |
| |
| |
| == Bug Fixes |
| * Fix: Issue where Gerrit could not linkify certain URLs |
| |
| * issue 1015 Fix handling of regex ref patterns in Access panel |
| + |
| regex patterns such as "\^refs/heads/[A-Z]{2,}\-[0-9]\+.\*" were being |
| prefixed with "refs/heads/", resulting in invalid reference patterns |
| like "refs/heads/^refs/heads/[A-Z]{2,}-[0-9]+.*". |
| |
| * issue 1002 Check for and disallow pushing of invalid refs/meta/config |
| + |
| If the project.config or groups files are somehow invalid on |
| the refs/meta/config branch, or would be made invalid due to |
| a bad code review being submitted to this branch, reject the |
| user's attempt to push. |
| |
| * issue 1002 Fix NPE in PermissionRuleEditor when group lacks UUID |
| + |
| If a group does not have an entry in the "groups" table within |
| the refs/meta/config branch render the group name as a span, |
| without the link instead of crashing the UI. |
| |
| * issue 972 Filter access section rules to only visible groups |
| + |
| Users who are not the owner of an access section can now only |
| see group names and rules for groups which they are a member of, |
| are visible to all users, or that they own. |
| |
| * Correctly handle missing refs/meta/config branch |
| + |
| If the refs/meta/config branch did not exist, getRevision() no longer |
| throws an NPE when trying to access the ProjectDetail. |
| |
| * Allow loading Project Access when there is no refs/meta/config |
| + |
| Enable loading the access screen with a null revision field, |
| and on save of any edits require the branch to be new. |
| |
| * create-project: Fix creation vs. replication order |
| + |
| Create the project on remote mirrors before creating either the |
| refs/meta/config or the initial empty branch. This way those can be |
| replicated to the remote mirrors once they have been created locally. |
| |
| * create-project: Bring back --permissions-only flag |
| + |
| If a project is permissions only, assign HEAD to point to |
| refs/meta/config. This way the gitweb view of the project |
| shows the permissions history by default, and clients that |
| clone the project are able to get a detached HEAD pointing |
| to the current permission state, rather than an empty |
| repository. |
| |
| * create-project: Fix error reporting when repository exists |
| + |
| If a repository already exists, tell the user it already is |
| available, without disclosing the server side path from gerrit.basePath. |
| |
| * Do not log timeout errors on upload and receive connections |
| |
| * Only automatically create accounts for LDAP systems |
| + |
| If the account management is LDAP, try to automatically create |
| accounts by looking up the data in LDAP. Otherwise fail and reject an |
| invalid account reference that was supplied on the command line via |
| SSH. |
| |
| * Add missing RevWalk.reset() after checking merge base |
| + |
| This fixes an exception from RevWalk when trying to push a new |
| commit for review. |
| |
| * issue 1069 Do not send an email on reviews when there is no message. |
| + |
| No longer send an email when reviewing a change via ssh, and |
| the change message is blank (when no change message is actually |
| added to the review). |
| |
| * Ignore PartialResultException from LDAP. |
| + |
| This exception occurs when the server isn't following referrals for |
| you, and thus the result contains a referral. That happens when |
| you're using Active Directory. You almost certainly don't really want |
| to follow referrals in AD *anyways*, so just ignore these exceptions, |
| so we can still use the actual data. |
| |
| * issue 518 Fix MySQL counter resets |
| + |
| gwtorm 1.1.5 was patched to leave in the dummy row that incremented |
| the counter, ensuring the server will use MAX() + 1 instead of 1 on |
| the next increment after restart. |
| |
| * Don't delete account_id row on MySQL |
| + |
| If the table is an InnoDB table deleting the row after allocation may |
| cause the sequence to reset when the server restarts, giving out |
| duplicate account_ids later. |
| |
| |
| == Documentation |
| |
| === New Documents |
| * First Cut of Gerrit Walkthrough Introduction documentation. |
| + |
| Add a new document intended to be a complement for the existing |
| reference documentation to allow potential users to easily get a |
| feel for how Gerrit is used, where it fits and whether it will |
| work for them. |
| |
| * Introducing a quick and dirty setup tutorial |
| + |
| The new document covers quick installation, new project and first |
| upload. It contains lots of quoted output, with a demo style to it. |
| |
| === Access Control |
| * Code review |
| |
| * Conversion table between 2.1 and 2.2 |
| + |
| Add a table to ease conversion from 2.1.x. The table tries to address |
| the old permissions one by one except for the push tag permission which |
| in effect needed two permissions to work properly. This should |
| be familiar to the administrator used to the 2.1.x permission model |
| however. |
| |
| * Reformatted text |
| |
| * Verify |
| + |
| Updated some text in the Per project-section and edited the verified |
| section to reflect the current label. |
| |
| * Capabilities |
| + |
| Adds general information about global capabilities, how the server |
| ownership is administered. |
| |
| * Added non-interactive users |
| + |
| This change adds the non-interactive user group. |
| It also adds that groups can be members of other groups. |
| The groups are now sorted in alphabetical order. |
| |
| * Reordering categories |
| + |
| Access categories are now sorted to match drop down box in UI |
| |
| === Other Documentation |
| * Added additional information on the install instructions. |
| + |
| The installation instructions presumes much prior knowledge, |
| make some of that knowledge less implicit. |
| |
| * Provides a template to the download example. |
| + |
| Clarifies that the example host must be replaced with proper |
| hostname. |
| |
| * Provided an example on how to abandon a change from |
| the command line |
| |
| * update links from kernel.org to code.google.com |
| |
| |
| * Rename '-- All Projects --' in documentation to 'All-Projects' |
| |
| * Explain 'Automatically resolve conflicts' |
| |
| * Update documentation for testing SSH connection |
| + |
| The command output that is shown in the example and the description |
| how to set the ssh username were outdated. |
| |
| * Remove unneeded escape characters from the documentation |
| + |
| The old version of asciidoc required certain characters to be escaped |
| with a backslash and when the upgrade to the new version was done all |
| those backslashes that were used for escaping became visible. |
| |
| * Clean up pgm-index |
| + |
| Break out the utilities into their own section, and correct |
| some of the item descriptions. |
| |
| * Update manual project creation instructions |
| |
| * Update project configuration documentation |
| + |
| Remove the textual reference to obsolete SQL insert statement to |
| create new projects. |
| |
| * Clean up command line documentation, examples |
| + |
| The formatting was pretty wrong after upgrading to a newer version |
| of AsciiDoc, so fix up most of the formatting, correct some order |
| of commands in the index, and make create-project conform to the |
| same format used by create-account and create-group. |
| |
| * Correct syntax of SQL statement for inserting approval category |