Merge commit '37118e70bc3c86e8fdafc31e4cc7026d71694ef4'

* commit '37118e70bc3c86e8fdafc31e4cc7026d71694ef4':
  Explain 'Automatically resolve conflicts'
diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt
index b737ea8..42a6eae 100644
--- a/Documentation/access-control.txt
+++ b/Documentation/access-control.txt
@@ -158,13 +158,13 @@
 
 Permissions can be set on a single reference name to match one
 branch (e.g. `refs/heads/master`), or on a reference namespace
-(e.g. `refs/heads/\*`) to match any branch starting with that
-prefix. So a permission with `refs/heads/\*` will match
+(e.g. `refs/heads/*`) to match any branch starting with that
+prefix. So a permission with `refs/heads/*` will match
 `refs/heads/master` and `refs/heads/experimental`, etc.
 
 Reference names can also be described with a regular expression
-by prefixing the reference name with `\^`.  For example
-`\^refs/heads/[a-z]\{1,8\}` matches all lower case branch names
+by prefixing the reference name with `^`.  For example
+`^refs/heads/[a-z]{1,8}` matches all lower case branch names
 between 1 and 8 characters long.  Within a regular expression `.`
 is a wildcard matching any character, but may be escaped as `\.`.
 The link:http://www.brics.dk/automaton/[dk.brics.automaton library]
@@ -175,7 +175,7 @@
 References can have the current user name automatically included,
 creating dynamic access controls that change to match the currently
 logged in user.  For example to provide a personal sandbox space
-to all developers, `refs/heads/sandbox/$\{username\}/*` allowing
+to all developers, `refs/heads/sandbox/${username}/*` allowing
 the user 'joe' to use 'refs/heads/sandbox/joe/foo'.
 
 When evaluating a reference-level access right, Gerrit will use
@@ -298,7 +298,7 @@
 Ownership over a particular branch subspace may be delegated by
 entering a branch pattern.  To delegate control over all branches
 that begin with `qa/` to the QA group, add `Owner` category
-for reference `refs/heads/qa/\*`.  Members of the QA group can
+for reference `refs/heads/qa/*`.  Members of the QA group can
 further refine access, but only for references that begin with
 `refs/heads/qa/`.
 
@@ -314,14 +314,14 @@
 This category has a special behavior, where the per-project ACL is
 evaluated before the global all projects ACL.  If the per-project
 ACL has granted `Read Access -1`, and does not otherwise grant
-`Read Access \+1`, then a `Read Access +1` in the all projects ACL
+`Read Access +1`, then a `Read Access +1` in the all projects ACL
 is ignored.  This behavior is useful to hide a handful of projects
 on an otherwise public server.
 
 For an open source, public Gerrit installation it is common to grant
-`Read Access +1` to `Anonymous Users` in the `\-- All Projects
-\--` ACL, enabling casual browsing of any project's changes,
-as well as fetching any project's repository over SSH or HTTP.
+`Read Access +1` to `Anonymous Users` in the `All-Projects` ACL,
+enabling casual browsing of any project's changes, as well as
+fetching any project's repository over SSH or HTTP.
 New projects can be temporarily hidden from public view by granting
 `Read Access -1` to `Anonymous Users` and granting `Read Access +1`
 to the project owner's group within the per-project ACL.
@@ -349,8 +349,8 @@
 implies read access by simply being a higher level of it.
 
 For an open source, public Gerrit installation, it is common to
-grant `Read Access +1..+2` to `Registered Users` in the `\-- All
-Projects \--` ACL.  For more private installations, its common to
+grant `Read Access +1..+2` to `Registered Users` in the
+`All-Projects` ACL.  For more private installations, its common to
 simply grant `Read Access +1..+2` to all users of a project.
 
 [[category_READ_3]]
@@ -519,7 +519,7 @@
 
 If a Gerrit installation wants to modify the description text
 associated with these category values, the text can be updated
-in the `name` column of the `category_id = \'VRIF'` rows in the
+in the `name` column of the `category_id = 'VRIF'` rows in the
 `approval_category_values` table.
 
 Additional values could also be added to this category, to allow it
@@ -594,7 +594,7 @@
 
 If a Gerrit installation wants to modify the description text
 associated with these category values, the text can be updated
-in the `name` column of the `category_id = \'CRVW'` rows in the
+in the `name` column of the `category_id = 'CRVW'` rows in the
 `approval_category_values` table.
 
 Additional values could be inserted into `approval_category_values`
@@ -637,7 +637,7 @@
 Gerrit administrators can also make up their own categories.
 
 See above for descriptions of how `Verified` and `Code Review` work,
-and insert your own category with `function_name = \'MaxWithBlock'`
+and insert your own category with `function_name = 'MaxWithBlock'`
 to get the same behavior over your own range of values, in any
 category you desire.
 
diff --git a/Documentation/cmd-index.txt b/Documentation/cmd-index.txt
index dc4e72e..64c42a0 100644
--- a/Documentation/cmd-index.txt
+++ b/Documentation/cmd-index.txt
@@ -64,13 +64,13 @@
 	Query the change database.
 
 'gerrit receive-pack'::
-	'Depreated alias for `git receive-pack`.'
+	'Deprecated alias for `git receive-pack`.'
 
 link:cmd-review.html[gerrit review]::
 	Verify, approve and/or submit a patch set from the command line.
 
 link:cmd-stream-events.html[gerrit stream-events]::
-	Monitor events occuring in real time.
+	Monitor events occurring in real time.
 
 git upload-pack::
 	Standard Git server side command for client side `git fetch`.
@@ -81,7 +81,7 @@
 Also implements the magic associated with uploading commits for
 review.  See link:user-upload.html#push_create[Creating Changes].
 
-[[admin_commands]]Adminstrator Commands
+[[admin_commands]]Administrator Commands
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 link:cmd-create-account.html[gerrit create-account]::
diff --git a/Documentation/cmd-ls-projects.txt b/Documentation/cmd-ls-projects.txt
index 0332c69..e6ef00c 100644
--- a/Documentation/cmd-ls-projects.txt
+++ b/Documentation/cmd-ls-projects.txt
@@ -41,6 +41,14 @@
 	If the user does not have access to any branch in the project then the
 	whole project is not shown.
 
+--description::
+--d::
+	Allows listing of projects together with their respective
+	description.
+
+	Line-feeds are escaped to allow ls-project to keep the
+	"one project per line"-style.
+
 --tree::
 -t::
 	Displays project inheritance in a tree-like format.
diff --git a/Documentation/cmd-show-queue.txt b/Documentation/cmd-show-queue.txt
index 1e97f48..98a954e 100644
--- a/Documentation/cmd-show-queue.txt
+++ b/Documentation/cmd-show-queue.txt
@@ -41,7 +41,7 @@
 Task::
 	Unique task identifier on this server.	May be passed into
 	link:cmd-kill.html[kill] to cancel or terminate the task.
-	Task identifiers have a period of 2\^32-1, and start from
+	Task identifiers have a period of 2^32-1, and start from
 	a random value.
 
 State::
diff --git a/Documentation/cmd-stream-events.txt b/Documentation/cmd-stream-events.txt
index bd23baa..bf78051 100644
--- a/Documentation/cmd-stream-events.txt
+++ b/Documentation/cmd-stream-events.txt
@@ -3,7 +3,7 @@
 
 NAME
 ----
-gerrit stream-events - Monitor events occuring in real time
+gerrit stream-events - Monitor events occurring in real time
 
 SYNOPSIS
 --------
@@ -13,7 +13,7 @@
 DESCRIPTION
 -----------
 
-Provides a portal into the major events occuring on the server,
+Provides a portal into the major events occurring on the server,
 outputing activity data in real-time to the client.  Events are
 filtered by the caller's access permissions, ensuring the caller
 only receives events for changes they can view on the web, or in
diff --git a/Documentation/config-contact.txt b/Documentation/config-contact.txt
index 845a1ba..8f9e1197 100644
--- a/Documentation/config-contact.txt
+++ b/Documentation/config-contact.txt
@@ -69,7 +69,7 @@
 
 Install a contact store implementation somewhere to receive
 the contact records.  To be really paranoid, Gerrit always
-ships the data to another HTTP server, preferrably over HTTPS.
+ships the data to another HTTP server, preferably over HTTPS.
 Existing open-source server implementations can be found in the
 gerrit-contactstore project.
 
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 66c8863..5615265 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -70,7 +70,7 @@
 * `HTTP`
 +
 Gerrit relies upon data presented in the HTTP request.  This includes
-HTTP basic authentication, or some types of commerical single-sign-on
+HTTP basic authentication, or some types of commercial single-sign-on
 solutions.  With this setting enabled the authentication must
 take place in the web server or servlet container, and not from
 within Gerrit.
@@ -985,7 +985,7 @@
 Local filesystem directory holding all Git repositories that
 Gerrit knows about and can process changes for.  A project
 entity in Gerrit maps to a local Git repository by creating
-the path string `"$\{basePath}/$\{project_name}.git"`.
+the path string `"${basePath}/${project_name}.git"`.
 +
 If relative, the path is resolved relative to `'$site_path'`.
 
@@ -1063,23 +1063,23 @@
 Optional pattern to use for constructing the gitweb URL when pointing
 at a specific commit when `custom` is used above.
 +
-Valid replacements are `$\{project\}` for the project name in Gerrit
-and `$\{commit\}` for the SHA1 hash for the commit.
+Valid replacements are `${project}` for the project name in Gerrit
+and `${commit}` for the SHA1 hash for the commit.
 
 [[gitweb.type]]gitweb.project::
 +
 Optional pattern to use for constructing the gitweb URL when pointing
 at a specific project when `custom` is used above.
 +
-Valid replacements are `$\{project\}` for the project name in Gerrit.
+Valid replacements are `${project}` for the project name in Gerrit.
 
 [[gitweb.type]]gitweb.branch::
 +
 Optional pattern to use for constructing the gitweb URL when pointing
 at a specific branch when `custom` is used above.
 +
-Valid replacements are `$\{project\}` for the project name in Gerrit
-and `$\{branch\}` for the name of the branch.
+Valid replacements are `${project}` for the project name in Gerrit
+and `${branch}` for the name of the branch.
 
 
 [[hooks]]Section hooks
@@ -1141,7 +1141,7 @@
 [[httpd.listenUrl]]httpd.listenUrl::
 +
 Specifies the URLs the internal HTTP daemon should listen for
-connections on.  The special hostname '\*' may be used to listen
+connections on.  The special hostname '*' may be used to listen
 on all local addresses.  A context path may optionally be included,
 placing Gerrit Code Review's web address within a subdirectory of
 the server.
@@ -1391,17 +1391,17 @@
 Query pattern to use when searching for a user account.  This may be
 any valid LDAP query expression, including the standard `(&...)` and
 `(|...)` operators.  If auth.type is `HTTP_LDAP` then the variable
-`$\{username\}` is replaced with a parameter set to the username
+`${username}` is replaced with a parameter set to the username
 that was supplied by the HTTP server.  If auth.type is `LDAP` then
-the variable `$\{username\}` is replaced by the string entered by
+the variable `${username}` is replaced by the string entered by
 the end user.
 +
 This pattern is used to search the objects contained directly under
 the `ldap.accountBase` tree.  A typical setting for this parameter
-is `(uid=$\{username\})` or `(cn=$\{username\})`, but the proper
+is `(uid=${username})` or `(cn=${username})`, but the proper
 setting depends on the LDAP schema used by the directory server.
 +
-Default is `(uid=$\{username\})` for RFC 2307 servers,
+Default is `(uid=${username})` for RFC 2307 servers,
 and `(&(objectClass=user)(sAMAccountName=${username}))`
 for Active Directory.
 
@@ -1414,7 +1414,7 @@
 +
 Attribute values may be concatenated with literal strings, for
 example to join given name and surname together use the pattern
-`$\{givenName\} $\{SN\}`.
+`${givenName} ${SN}`.
 +
 If set, users will be unable to modify their full name field, as
 Gerrit will populate it only from the LDAP data.
@@ -1431,7 +1431,7 @@
 Attribute values may be concatenated with literal strings,
 for example to set the email address to the lowercase form
 of sAMAccountName followed by a constant domain name, use
-`$\{sAMAccountName.toLowerCase\}@example.com`.
+`${sAMAccountName.toLowerCase}@example.com`.
 +
 If set, the preferred email address will be prefilled from LDAP,
 but users may still be able to register additional email address,
@@ -1449,12 +1449,12 @@
 SSH clients will default to.
 +
 Attribute values may also be forced to lowercase, or to uppercase in
-an expression.  For example, `$\{sAMAccountName.toLowerCase\}` will
+an expression.  For example, `${sAMAccountName.toLowerCase}` will
 force the value of sAMAccountName, if defined, to be all lowercase.
 The suffix `.toUpperCase` can be used for the other direction.
 The suffix `.localPart` can be used to split attribute values of
 the form 'user@example.com' and return only the left hand side, for
-example `$\{userPrincipalName.localPart\}` would provide only 'user'.
+example `${userPrincipalName.localPart}` would provide only 'user'.
 +
 If set, users will be unable to modify their SSH username field, as
 Gerrit will populate it only from the LDAP data.
@@ -1492,11 +1492,11 @@
 Query pattern used when searching for an LDAP group to connect
 to a Gerrit group.  This may be any valid LDAP query expression,
 including the standard `(&...)` and `(|...)` operators.  The variable
-`$\{groupname\}` is replaced with the search term supplied by the
+`${groupname}` is replaced with the search term supplied by the
 group owner.
 +
-Default is `(cn=$\{groupname\})` for RFC 2307,
-and `(&(objectClass=group)(cn=$\{groupname\}))` for Active Directory.
+Default is `(cn=${groupname})` for RFC 2307,
+and `(&(objectClass=group)(cn=${groupname}))` for Active Directory.
 
 [[ldap.groupMemberPattern]]ldap.groupMemberPattern::
 +
@@ -1504,15 +1504,15 @@
 account is currently a member of.  This may be any valid LDAP query
 expression, including the standard `(&...)` and `(|...)` operators.
 +
-If auth.type is `HTTP_LDAP` then the variable `$\{username\}` is
+If auth.type is `HTTP_LDAP` then the variable `${username}` is
 replaced with a parameter set to the username that was supplied
 by the HTTP server.  Other variables appearing in the pattern,
-such as `$\{fooBarAttribute\}`, are replaced with the value of the
+such as `${fooBarAttribute}`, are replaced with the value of the
 corresponding attribute (in this case, `fooBarAttribute`) as read
 from the user's account object matched under `ldap.accountBase`.
-Attributes such as `$\{dn\}` or `$\{uidNumber\}` may be useful.
+Attributes such as `${dn}` or `${uidNumber}` may be useful.
 +
-Default is `(memberUid=$\{username\})` for RFC 2307,
+Default is `(memberUid=${username})` for RFC 2307,
 and unset (disabled) for Active Directory.
 
 
@@ -1524,8 +1524,8 @@
 If set to true, files with the MIME type `<name>` will be sent as
 direct downloads to the user's browser, rather than being wrapped up
 inside of zipped archives.  The type name may be a complete type
-name, e.g. `image/gif`, a generic media type, e.g. `image/\*`,
-or the wildcard `\*/*` to match all types.
+name, e.g. `image/gif`, a generic media type, e.g. `image/*`,
+or the wildcard `*/*` to match all types.
 +
 By default, false for all MIME types.
 
@@ -1638,7 +1638,7 @@
 +
 * `MIXED`
 +
-Shorthand for `$\{user\} (Code Review) <review@example.com>` where
+Shorthand for `${user} (Code Review) <review@example.com>` where
 `review@example.com` is the same as <<user.email,user.email>>.
 See below for a description of how the replacement is handled.
 +
@@ -1654,7 +1654,7 @@
 If set to a name and email address in brackets, Gerrit will use
 this name and email address for any messages, overriding the name
 that may have been selected for commits by user.name and user.email.
-Optionally, the name portion may contain the placeholder `$\{user\}`,
+Optionally, the name portion may contain the placeholder `${user}`,
 which is replaced by the Full Name of the current user.
 
 +
@@ -1737,7 +1737,7 @@
 * '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
@@ -1812,7 +1812,7 @@
 +
 By default, 1 plus the number of CPUs available to the JVM.
 
-[sshd.commandStartThreads]]sshd.commandStartThreads::
+[[sshd.commandStartThreads]]sshd.commandStartThreads::
 +
 Number of threads used to parse a command line submitted by a client
 over SSH for execution, create the internal data structures used by
diff --git a/Documentation/config-hooks.txt b/Documentation/config-hooks.txt
index 963b628..ceb7c78 100644
--- a/Documentation/config-hooks.txt
+++ b/Documentation/config-hooks.txt
@@ -11,7 +11,7 @@
 
 Make sure your hook scripts are executable if running on *nix.
 
-Hooks are run in the background after the relevent change has
+Hooks are run in the background after the relevant change has
 taken place so are unable to affect the outcome of any given
 change. Because of the fact the hooks are run in the background
 after the activity, a hook might not be notified about an event if
@@ -100,7 +100,7 @@
 -------------------
 
 If link:config-gerrit.html#gerrit.canonicalWebUrl[gerrit.canonicalWebUrl]
-is not set in `gerrit.config` the `\--change-url` flag may not be
+is not set in `gerrit.config` the `--change-url` flag may not be
 passed to all hooks.  Hooks started out of an SSH context (for example
 the patchset-created hook) don't know the server's web URL, unless
 this variable is configured.
diff --git a/Documentation/config-replication.txt b/Documentation/config-replication.txt
index 3768b6d..3390a4f 100644
--- a/Documentation/config-replication.txt
+++ b/Documentation/config-replication.txt
@@ -84,7 +84,7 @@
 threads in the thread pool, Gerrit pushes to all URLs in parallel,
 using one thread per URL.
 +
-Within each URL value the magic placeholder `$\{name}` is replaced
+Within each URL value the magic placeholder `${name}` is replaced
 with the Gerrit project name.  This is a Gerrit specific extension
 to the otherwise standard Git URL syntax and it must be included
 in each URL so that Gerrit can figure out where each project needs
@@ -123,16 +123,16 @@
 [[remote.name.push]]remote.<name>.push::
 +
 Standard Git refspec denoting what should be replicated.  Setting this
-to `+refs/heads/\*:refs/heads/\*` would mirror only the active
+to `+refs/heads/*:refs/heads/*` would mirror only the active
 branches, but not the change refs under `refs/changes/`, or the tags
 under `refs/tags/`.
 +
 Multiple push keys can be supplied, to specify multiple patterns
 to match against.  In the example file above, remote "pubmirror"
-uses two push keys to match both `refs/heads/\*` and `refs/tags/*`,
+uses two push keys to match both `refs/heads/*` and `refs/tags/*`,
 but excludes all others, including `refs/changes/*`.
 +
-Defaults to `+refs/\*:refs/*` (all refs) if not specified.
+Defaults to `+refs/*:refs/*` (all refs) if not specified.
 
 [[remote.name.timeout]]remote.<name>.timeout::
 +
diff --git a/Documentation/config-sso.txt b/Documentation/config-sso.txt
index 37f5b05..9aa06be 100644
--- a/Documentation/config-sso.txt
+++ b/Documentation/config-sso.txt
@@ -88,7 +88,7 @@
 standard `Authorization` HTTP header.
 
 The auth.emailFormat field ('optional') sets the preferred email
-address during first login.  Gerrit will replace `\{0\}` with the
+address during first login.  Gerrit will replace `{0}` with the
 username, as obtained from the Authorization header.  A format such
 as shown in the example would be typical, to add the domain name
 of the organization.
@@ -152,7 +152,7 @@
 single sign-on or security group to ensure the setting is correct.
 
 The auth.emailFormat field ('optional') sets the user's preferred
-email address when they first login.  Gerrit will replace `\{0\}`
+email address when they first login.  Gerrit will replace `{0}`
 with the username, as supplied by Siteminder.  A format such as
 shown in the example would be typical, to add the domain name of
 the organization.
diff --git a/Documentation/dev-design.txt b/Documentation/dev-design.txt
index 571ec6c..c0e901e 100644
--- a/Documentation/dev-design.txt
+++ b/Documentation/dev-design.txt
@@ -113,7 +113,7 @@
 After a change has been scored positively by reviewers, Gerrit
 enables a submit button on the web interface.  Authorized users
 can push the submit button to have the change enter the project
-repository.  The equivilant in Subversion or Perforce would be
+repository.  The equivalent in Subversion or Perforce would be
 that Gerrit is invoking `svn commit` or `p4 submit` on behalf of
 the web user pressing the button.  Due to the way Git audit trails
 are maintained, the user pressing the submit button does not need
diff --git a/Documentation/error-you-are-not-author.txt b/Documentation/error-you-are-not-author.txt
index 47a7652..5613a10 100644
--- a/Documentation/error-you-are-not-author.txt
+++ b/Documentation/error-you-are-not-author.txt
@@ -95,7 +95,7 @@
 you have to amend the commit with explicitly setting the author
 before continuing the rebase.
 
-Here is an exmaple that shows how the interactive rebase is used to
+Here is an example that shows how the interactive rebase is used to
 update the author for the last 3 commits:
 
 ----
diff --git a/Documentation/i18n-readme.txt b/Documentation/i18n-readme.txt
index 74a8e49..080ecb6 100644
--- a/Documentation/i18n-readme.txt
+++ b/Documentation/i18n-readme.txt
@@ -12,7 +12,7 @@
 The getName() function produces only a single translation of the
 description string.  This name is set by the Gerrit administrator,
 which may cause problems if the site is translated into multiple
-langauges and different users want different translations.
+languages and different users want different translations.
 
 ApprovalCategoryValue
 ---------------------
@@ -20,7 +20,7 @@
 The getName() function produces only a single translation of the
 description string.  This name is set by the Gerrit administrator,
 which may cause problems if the site is translated into multiple
-langauges and different users want different translations.
+languages and different users want different translations.
 
 /Gerrit Gerrit.html
 -------------------
diff --git a/Documentation/install-j2ee.txt b/Documentation/install-j2ee.txt
index d51ba68..507d6c5 100644
--- a/Documentation/install-j2ee.txt
+++ b/Documentation/install-j2ee.txt
@@ -11,7 +11,7 @@
 
 Gerrit Code Review can be installed into any J2EE servlet container,
 including popular open source containers such as Jetty or Tomcat, or
-any commerical server which supports the J2EE servlet specification.
+any commercial server which supports the J2EE servlet specification.
 
 
 Installation
diff --git a/Documentation/pgm-ExportReviewNotes.txt b/Documentation/pgm-ExportReviewNotes.txt
index 602c245..17cc862 100644
--- a/Documentation/pgm-ExportReviewNotes.txt
+++ b/Documentation/pgm-ExportReviewNotes.txt
@@ -26,7 +26,7 @@
 -d::
 \--site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 \--threads::
 	Number of threads to perform the scan work with.  Default: 2.
diff --git a/Documentation/pgm-ScanTrackingIds.txt b/Documentation/pgm-ScanTrackingIds.txt
index 4ab4a02..ea5d72e 100644
--- a/Documentation/pgm-ScanTrackingIds.txt
+++ b/Documentation/pgm-ScanTrackingIds.txt
@@ -26,7 +26,7 @@
 -d::
 \--site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 \--threads::
 	Number of threads to perform the scan work with.  Defaults to
diff --git a/Documentation/pgm-daemon.txt b/Documentation/pgm-daemon.txt
index 0b2e72f..1c1d343 100644
--- a/Documentation/pgm-daemon.txt
+++ b/Documentation/pgm-daemon.txt
@@ -33,7 +33,7 @@
 -d::
 \--site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 \--enable-httpd::
 \--disable-httpd::
@@ -48,7 +48,7 @@
 \--slave::
 	Run in slave mode, permitting only read operations
     by clients.  Commands which modify state such as
-    link:cmd-receive-pack.html[recieve-pack] (creates new changes
+    link:cmd-receive-pack.html[receive-pack] (creates new changes
     or updates existing ones) or link:cmd-review.html[review]
     (sets approve marks) are disabled.
 +
diff --git a/Documentation/pgm-gsql.txt b/Documentation/pgm-gsql.txt
index 938aafd..c3a492a 100644
--- a/Documentation/pgm-gsql.txt
+++ b/Documentation/pgm-gsql.txt
@@ -26,7 +26,7 @@
 -d::
 \--site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 CONTEXT
 -------
diff --git a/Documentation/pgm-init.txt b/Documentation/pgm-init.txt
index d3094fd..c53c57d 100644
--- a/Documentation/pgm-init.txt
+++ b/Documentation/pgm-init.txt
@@ -31,14 +31,14 @@
 
 \--no-auto-start::
 	Don't automatically start the daemon after initializing a
-	newly created site path.  This permits the administartor
+	newly created site path.  This permits the administrator
 	to inspect and modify the configuration before the daemon
 	is started.
 
 -d::
 \--site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 CONTEXT
 -------
diff --git a/Documentation/pgm-rulec.txt b/Documentation/pgm-rulec.txt
index 40aad2d..6d0a632 100644
--- a/Documentation/pgm-rulec.txt
+++ b/Documentation/pgm-rulec.txt
@@ -21,7 +21,7 @@
 -d::
 --site-path::
 	Location of the gerrit.config file, and all other per-site
-	configuration data, supporting libaries and log files.
+	configuration data, supporting libraries and log files.
 
 --all::
 	Compile rules for all projects.
diff --git a/Documentation/project-setup.txt b/Documentation/project-setup.txt
index 1dca993..8eb1ae4 100644
--- a/Documentation/project-setup.txt
+++ b/Documentation/project-setup.txt
@@ -68,20 +68,19 @@
 
 * Merge If Necessary
 +
-This is the default for a new project (and why `\'M'` is suggested
-above in the insert statement).
+This is the default for a new project.
 +
 If the change being submitted is a strict superset of the destination
 branch, then the branch is fast-forwarded to the change.  If not,
 then a merge commit is automatically created.  This is identical
-to the classical `git merge` behavior, or `git merge \--ff`.
+to the classical `git merge` behavior, or `git merge --ff`.
 
 * Always Merge
 +
 Always produce a merge commit, even if the change is a strict
 superset of the destination branch.  This is identical to the
-behavior of `git merge \--no-ff`, and may be useful if the
-project needs to follow submits with `git log \--first-parent`.
+behavior of `git merge --no-ff`, and may be useful if the
+project needs to follow submits with `git log --first-parent`.
 
 * Cherry Pick
 +
diff --git a/Documentation/user-changeid.txt b/Documentation/user-changeid.txt
index 1fa627c..124ec31 100644
--- a/Documentation/user-changeid.txt
+++ b/Documentation/user-changeid.txt
@@ -57,7 +57,7 @@
 Change Upload
 --------------
 
-During upload by pushing to a `refs/for/\*` or `refs/heads/\*`
+During upload by pushing to a `refs/for/*` or `refs/heads/*`
 branch, Gerrit will use the Change-Id line to:
 
 * Create a new change
@@ -103,7 +103,7 @@
 Amending a commit
 ~~~~~~~~~~~~~~~~~
 
-When amending a commit with `git commit \--amend`, leave the
+When amending a commit with `git commit --amend`, leave the
 Change-Id line unmodified in the commit message.  This will allow
 Gerrit to automatically update the change with the amended commit.
 
diff --git a/Documentation/user-search.txt b/Documentation/user-search.txt
index ba031db..6a6ce16 100644
--- a/Documentation/user-search.txt
+++ b/Documentation/user-search.txt
@@ -100,7 +100,7 @@
 [[project]]
 project:'PROJECT'::
 +
-Changes occuring in 'PROJECT'. If 'PROJECT' starts with `^` it
+Changes occurring in 'PROJECT'. If 'PROJECT' starts with `^` it
 matches project names by regular expression.  The
 link:http://www.brics.dk/automaton/[dk.brics.automaton
 library] is used for evaluation of such patterns.
@@ -181,11 +181,11 @@
 anchoring the match to the start of the string.  To match all Java
 files, use `file:^.*\.java`.
 +
-The entire regular expression pattern, including the `\^` character,
+The entire regular expression pattern, including the `^` character,
 should be double quoted when using more complex construction (like
 ones using a bracket expression). For example, to match all XML
 files named like 'name1.xml', 'name2.xml', and 'name3.xml' use
-`\file:"\^name[1-3].xml"`.
+`file:"^name[1-3].xml"`.
 +
 Currently this operator is only available on a watched project
 and may not be used in the search bar.
@@ -314,8 +314,8 @@
 `label:CodeReview=+2`::
 `label:CodeReview+2`::
 +
-Matches changes where there is at least one \+2 score for Code Review.
-The \+ prefix is optional for positive score values.  If the + is used,
+Matches changes where there is at least one +2 score for Code Review.
+The + prefix is optional for positive score values.  If the + is used,
 the = operator is optional.
 
 `label:CodeReview=-2`::
diff --git a/Documentation/user-upload.txt b/Documentation/user-upload.txt
index 8a08317..eb79d94 100644
--- a/Documentation/user-upload.txt
+++ b/Documentation/user-upload.txt
@@ -15,7 +15,8 @@
 
 Each user uploading changes to Gerrit must configure one or more SSH
 public keys.  The per-user SSH key list can be accessed over the web
-within Gerrit by `Settings`, and then accessing the `SSH Keys` tab.
+within Gerrit by `Settings`, and then accessing the `SSH Public Keys`
+tab.
 
 [[configure_ssh]]
 Configuration
@@ -60,14 +61,25 @@
 port 29418, using the same hostname as the web server:
 
 ====
+..................................................................
   $ ssh -p 29418 sshusername@hostname
-  gerrit: no shell available
+
+    ****    Welcome to Gerrit Code Review    ****
+
+    Hi John Doe, you have successfully connected over SSH.
+
+    Unfortunately, interactive shells are disabled.
+    To clone a hosted Git repository, use:
+
+    git clone ssh://sshusername@hostname:29418/REPOSITORY_NAME.git
+
   Connection to hostname closed.
+..................................................................
 ====
 
-In the command above, `sshusername` was configured on the `SSH Keys`
-tab of the `Settings` screen.  If it is not set, propose a name
-and use `Change Username` to select the name.
+In the command above, `sshusername` was configured as `Username` on
+the `Profile` tab of the `Settings` screen.  If it is not set,
+propose a name and use `Select Username` to select the name.
 
 To determine the port number Gerrit is running on, visit the special
 information URL `http://'hostname'/ssh_info`, and copy the port
@@ -142,15 +154,15 @@
   $ git push tr:kernel/common HEAD:refs/for/experimental
 ====
 
-Specific reviewers can be requested and/or additional ``carbon
-copies'' of the notification message may be sent by including these
+Specific reviewers can be requested and/or additional 'carbon
+copies' of the notification message may be sent by including these
 as arguments to `git receive-pack`:
 
 ====
   git push --receive-pack='git receive-pack --reviewer=a@a.com --cc=b@o.com' tr:kernel/common HEAD:refs/for/experimental
 ====
 
-The `\--reviewer='email'` and `\--cc='email'` options may be
+The `--reviewer='email'` and `--cc='email'` options may be
 specified as many times as necessary to cover all interested
 parties.  Gerrit will automatically avoid sending duplicate email
 notifications, such as if one of the specified reviewers or CC
@@ -323,7 +335,7 @@
 ~~~~~~~~~~~~~~~
 
 To replace changes, ensure Change-Id lines were created in the
-commit messages, and just use `repo upload` without the `\--replace`
+commit messages, and just use `repo upload` without the `--replace`
 command line flag.  Gerrit Code Review will automatically match
 the commits back to their original changes by taking advantage of
 their Change-Id lines.
@@ -333,7 +345,7 @@
 on the web.
 
 If Change-Id lines are not available, then the user must use the much
-more manual mapping technique offered by `repo upload \--replace`.
+more manual mapping technique offered by `repo upload --replace`.
 
 For more about Change-Ids, see link:user-changeid.html[Change-Id Lines].
 
@@ -345,8 +357,8 @@
 own process space, Gerrit maintains complete control over how the
 repository is updated, and what responses are sent to the `git push`
 client invoked by the end-user, or by `repo upload`.  This allows
-Gerrit to provide magical refs, such as `refs/for/\*` for new
-change submission and `refs/changes/\*` for change replacement.
+Gerrit to provide magical refs, such as `refs/for/*` for new
+change submission and `refs/changes/*` for change replacement.
 When a push request is received to create a ref in one of these
 namespaces Gerrit performs its own logic to update the database,
 and then lies to the client about the result of the operation.
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupInfoScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupInfoScreen.java
index ab4ab7f..5ce90e7 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupInfoScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AccountGroupInfoScreen.java
@@ -130,6 +130,7 @@
             new GerritCallback<GroupDetail>() {
               public void onSuccess(final GroupDetail groupDetail) {
                 saveName.setEnabled(false);
+                setPageTitle(Util.M.group(groupDetail.group.getName()));
                 display(groupDetail);
               }
             });
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectBranchesScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectBranchesScreen.java
index 406333b..dbbaf33 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectBranchesScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/ProjectBranchesScreen.java
@@ -44,8 +44,6 @@
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwtjsonrpc.client.RemoteJsonException;
 
-import org.eclipse.jgit.lib.Constants;
-
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -318,7 +316,7 @@
       String iconCellStyle = Gerrit.RESOURCES.css().iconCell();
       String dataCellStyle = Gerrit.RESOURCES.css().dataCell();
       if ("refs/meta/config".equals(k.getShortName())
-          || Constants.HEAD.equals(k.getShortName())) {
+          || "HEAD".equals(k.getShortName())) {
         iconCellStyle = Gerrit.RESOURCES.css().specialBranchIconCell();
         dataCellStyle = Gerrit.RESOURCES.css().specialBranchDataCell();
         fmt.setStyleName(row, 0, iconCellStyle);
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/Project.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/Project.java
index b9a6967..b0e7fa5 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/Project.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/Project.java
@@ -180,4 +180,8 @@
   public void setParentName(String n) {
     parent = n != null ? new NameKey(n) : null;
   }
+
+  public void setParentName(NameKey n) {
+    parent = n;
+  }
 }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index 7e130a5..7886ec8 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -1192,9 +1192,11 @@
       final Ref mergedInto = findMergedInto(change.getDest().get(), c);
       result.mergedIntoRef = mergedInto != null ? mergedInto.getName() : null;
     }
+    final PatchSetInfo info = patchSetInfoFactory.get(c, ps.getId());
+    change.setCurrentPatchSet(info);
     result.change = change;
     result.patchSet = ps;
-    result.info = patchSetInfoFactory.get(c, ps.getId());
+    result.info = info;
 
     final Account.Id authorId =
         result.info.getAuthor() != null ? result.info.getAuthor().getAccount()
@@ -1533,24 +1535,26 @@
     }
 
     final List<String> idList = c.getFooterLines(CHANGE_ID);
-    if (idList.isEmpty()) {
-      if (project.isRequireChangeID() && (cmd.getRefName().startsWith(NEW_CHANGE)
-  || NEW_PATCHSET.matcher(cmd.getRefName()).matches())) {
-        String errMsg = "missing Change-Id in commit message";
-        reject(cmd, errMsg);
-        rp.sendMessage(getFixedCommitMsgWithChangeId(errMsg, c));
+    if ((cmd.getRefName().startsWith(NEW_CHANGE) || NEW_PATCHSET.matcher(cmd.getRefName()).matches())) {
+      if (idList.isEmpty()) {
+        if (project.isRequireChangeID()) {
+          String errMsg = "missing Change-Id in commit message";
+          reject(cmd, errMsg);
+          rp.sendMessage(getFixedCommitMsgWithChangeId(errMsg, c));
+          return false;
+        }
+      } else if (idList.size() > 1) {
+        reject(cmd, "multiple Change-Id lines in commit message");
         return false;
-      }
-    } else if (idList.size() > 1) {
-      reject(cmd, "multiple Change-Id lines in commit message");
-      return false;
-    } else {
-      final String v = idList.get(idList.size() - 1).trim();
-      if (!v.matches("^I[0-9a-f]{8,}.*$")) {
-        final String errMsg = "missing or invalid Change-Id line format in commit message";
-        reject(cmd, errMsg);
-        rp.sendMessage(getFixedCommitMsgWithChangeId(errMsg, c));
-        return false;
+      } else {
+        final String v = idList.get(idList.size() - 1).trim();
+        if (!v.matches("^I[0-9a-f]{8,}.*$")) {
+          final String errMsg =
+              "missing or invalid Change-Id line format in commit message";
+          reject(cmd, errMsg);
+          rp.sendMessage(getFixedCommitMsgWithChangeId(errMsg, c));
+          return false;
+        }
       }
     }
 
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/TagSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/TagSet.java
index ba63847..cfa5420 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/TagSet.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/TagSet.java
@@ -320,6 +320,11 @@
       int flag = refs.size();
       commit.refFlags.set(flag);
       refs.put(ref.getName(), new CachedRef(ref, flag));
+    } catch (IncorrectObjectTypeException notCommit) {
+      // No need to spam the logs.
+      // Quite many refs will point to non-commits.
+      // For instance, refs from refs/cache-automerge
+      // will often end up here.
     } catch (IOException e) {
       log.warn("Error on " + ref.getName() + " of " + projectName, e);
     }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/AddReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/AddReviewer.java
index be0ddac..b7f0a81 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/AddReviewer.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/AddReviewer.java
@@ -198,7 +198,8 @@
       if (!exists(psid, reviewer)) {
         // This reviewer has not entered an approval for this change yet.
         //
-        final PatchSetApproval myca = dummyApproval(psid, reviewer);
+        final PatchSetApproval myca =
+            dummyApproval(control.getChange(), psid, reviewer);
         toInsert.add(myca);
         added.add(reviewer);
       }
@@ -235,10 +236,13 @@
         .iterator().hasNext();
   }
 
-  private PatchSetApproval dummyApproval(final PatchSet.Id patchSetId,
-      final Account.Id reviewerId) {
-    return new PatchSetApproval(new PatchSetApproval.Key(patchSetId,
-        reviewerId, addReviewerCategoryId), (short) 0);
+  private PatchSetApproval dummyApproval(final Change change,
+      final PatchSet.Id patchSetId, final Account.Id reviewerId) {
+    final PatchSetApproval dummyApproval =
+        new PatchSetApproval(new PatchSetApproval.Key(patchSetId, reviewerId,
+            addReviewerCategoryId), (short) 0);
+    dummyApproval.cache(change);
+    return dummyApproval;
   }
 
   public static boolean isLegalReviewerGroup(final AccountGroup.UUID groupUUID) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListLoader.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListLoader.java
index 2986a72..0bb4bcc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListLoader.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchListLoader.java
@@ -256,7 +256,14 @@
       DirCache dc = DirCache.newInCore();
       m.setDirCache(dc);
 
-      if (m.merge(b.getParents())) {
+      boolean couldMerge = false;
+      try {
+        couldMerge = m.merge(b.getParents());
+      } catch (IOException e) {
+        //
+      }
+
+      if (couldMerge) {
         treeId = m.getResultTreeId();
 
       } else {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java
index 701e97a..65f5820 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/DataSourceProvider.java
@@ -87,11 +87,7 @@
 
     if (url == null || url.isEmpty()) {
       if (type == null) {
-        if (url != null && !url.isEmpty()) {
-          type = Type.JDBC;
-        } else {
-          type = Type.H2;
-        }
+        type = Type.H2;
       }
 
       switch (type) {
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Abandoned.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Abandoned.vm
index 20529b2..57f4f63 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Abandoned.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Abandoned.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeFooter.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeFooter.vm
index 5b74453..f2f0fc76 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeFooter.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeFooter.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeSubject.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeSubject.vm
index 24cc23c..a67c38c 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeSubject.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ChangeSubject.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm
index 4ad355b8..547c1b4 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Comment.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/MergeFail.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/MergeFail.vm
index dfe3d92f..6ded252 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/MergeFail.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/MergeFail.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Merged.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Merged.vm
index 296a37a..bcbc7bd 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Merged.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Merged.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/NewChange.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/NewChange.vm
index ec7028b..5ab1860 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/NewChange.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/NewChange.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/RegisterNewEmail.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/RegisterNewEmail.vm
index 34682f2..0e42e01 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/RegisterNewEmail.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/RegisterNewEmail.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ReplacePatchSet.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ReplacePatchSet.vm
index 4575965..cdc5bfc 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ReplacePatchSet.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/ReplacePatchSet.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Restored.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Restored.vm
index c0e6b91..afcbcc5 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Restored.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Restored.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Reverted.vm b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Reverted.vm
index a2350d8..a0aedd6 100644
--- a/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Reverted.vm
+++ b/gerrit-server/src/main/resources/com/google/gerrit/server/mail/Reverted.vm
@@ -23,7 +23,7 @@
 ## Gerrit will use templates ending in ".vm" but will ignore templates ending
 ## in ".vm.example".  If a .vm template does not exist, the default internal
 ## gerrit template which is the same as the .vm.example will be used.  If you
-## want to override the default template, copy the .vm.exmaple file to a .vm
+## want to override the default template, copy the .vm.example file to a .vm
 ## file and edit it appropriately.
 ##
 ## This Template:
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/AdminSetParent.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/AdminSetParent.java
index 95bc563..85b6614 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/AdminSetParent.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/AdminSetParent.java
@@ -117,8 +117,9 @@
         MetaDataUpdate md = metaDataUpdateFactory.create(key);
         try {
           ProjectConfig config = ProjectConfig.read(md);
-          config.getProject().setParentName(newParentKey.get());
-          md.setMessage("Inherit access from " + newParentKey.get() + "\n");
+          config.getProject().setParentName(newParentKey);
+          md.setMessage("Inherit access from "
+              + (newParentKey != null ? newParentKey.get() : allProjectsName.get()) + "\n");
           if (!config.commit(md)) {
             err.append("error: Could not update project " + name + "\n");
           }
@@ -132,6 +133,8 @@
       } catch (ConfigInvalidException e) {
         throw new Failure(1, "Cannot update project " + name, e);
       }
+
+      projectCache.evict(pc.getProject());
     }
 
     if (err.length() > 0) {
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ListProjects.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ListProjects.java
index 1ee3cfb..a240b3d 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ListProjects.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ListProjects.java
@@ -97,6 +97,9 @@
   @Option(name = "--type", usage = "type of project")
   private FilterType type = FilterType.CODE;
 
+  @Option(name = "--description", aliases = {"-d"}, usage = "include description of project in list")
+  private boolean showDescription;
+
   private String currentTabSeparator = DEFAULT_TAB_SEPARATOR;
 
   @Override
@@ -115,6 +118,10 @@
       throw new UnloggedFailure(1, "fatal: --tree and --show-branch options are not compatible.");
     }
 
+    if (showTree && showDescription) {
+      throw new UnloggedFailure(1, "fatal: --tree and --description options are not compatible.");
+    }
+
     final PrintWriter stdout = toPrintWriter(out);
     final TreeMap<String, TreeNode> treeMap = new TreeMap<String, TreeNode>();
     try {
@@ -184,7 +191,15 @@
           continue;
         }
 
-        stdout.print(projectName.get() + "\n");
+        stdout.print(projectName.get());
+
+        String desc;
+        if (showDescription && !(desc = e.getProject().getDescription()).isEmpty()) {
+          // We still want to list every project as one-liners, hence escaping \n.
+          stdout.print(" - " + desc.replace("\n", "\\n"));
+        }
+
+        stdout.print("\n");
       }
 
       if (showTree && treeMap.size() > 0) {
diff --git a/pom.xml b/pom.xml
index a984a83..6a04b28 100644
--- a/pom.xml
+++ b/pom.xml
@@ -790,7 +790,7 @@
       <dependency>
         <groupId>dk.brics.automaton</groupId>
         <artifactId>automaton</artifactId>
-        <version>1.11.2</version>
+        <version>1.11.8</version>
       </dependency>
 
       <dependency>