Correctly identify Git-over-HTTP operations

Git operations over HTTP should be classified as using
AccessPath.GIT and not WEB_UI. This ensures RefControl
will correctly test for Create, Push or Delete access
on a reference instead of Owner.

Change-Id: I57936929c0d12358f44bbf3959c0e11f12bc823b
Make sure only Gerrit admins can change the parent of a project

Only Gerrit administrators should be able to change the parent of a
project because by changing the parent project access rights and BLOCK
rules which are configured on a parent project can be avoided.

The set-project-parent SSH command already verifies that the caller is
a Gerrit administrator, however project owners can change the parent
project by modifying the project.config file and pushing to the
refs/meta/config branch.

This change ensures that changes to the project.config file that change
the parent project can only be pushed/submitted by Gerrit
administrators.

In addition it is now not possible anymore to
- set a non-existing project as parent (as this would make the project
  be orphaned)
- set a parent project for the All-Projects root project (the root
  project by definition has no parent)
by pushing changes of the project.config file to refs/meta/config.

Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Fix RequestCleanup bug with Git over HTTP

Decide if a continution is going to be used early, before the filter
that will attempt to cleanup a RequestCleanup. If so don't allow
entering the RequestCleanup part of the system until the request is
actually going to be processed.

Change-Id: I1fd3c97beefccc1cb4f0aed037c96a4bdaf78ff1
Match all git fetch/clone/push commands to the command executor

Route not just /p/ but any Git access to the same thread pool
as the SSH server is using, allowing all requests to compete
fairly for resources.

Change-Id: I3d62a4537288ee8089cb42256bd6306852f7fa09
Fix auto closing of changes on direct push

When a commit is directly pushed into a repository (bypassing code
review) and this commit has a Change-Id in its commit message then the
corresponding change should be automatically closed if it is open.

This worked earlier but got broken by commit
e6298f7216db0ea489cf9e28352ae1d9205cb190.

Change-Id: I531df13c04e165f5f2b425e2a07393c617e71659
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Allow assigning Push for refs/meta/config on All-Projects

The refs/meta/config branch of the All-Projects project should only be
modified by Gerrit administrators because being able to do
modifications on this branch means that the user could assign himself
administrator permissions.

In addition to being administrator we already require that the
administrator has the Push access right for refs/meta/config in order
to be able to modify it (just as with all other branches
administrators do not have edit permissions by default).

The problem was that assigning the Push access right for
refs/meta/config on the All-Projects project was not allowed.

Having the Push access right for refs/meta/config on the All-Projects
project without being administrator already has no effect.

Prohibiting to assign the Push access right for refs/meta/config on the
All-Project project was anyway pointless since it was e.g. possible to
assign the Push access right on refs/meta/*.

Change-Id: I0640c5b3a479b31120d28c1af0c3112ccbbd555e
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Merge "Fix RequestCleanup bug with Git over HTTP" into stable-2.5
Merge "Match all git fetch/clone/push commands to the command executor" into stable-2.5
Merge "Fix auto closing of changes on direct push" into stable-2.5
Add release notes for Gerrit 2.5.1

Change-Id: I326e163f2c567d4c5aab2eb1c178cb17e60e8e56
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Merge "Add release notes for Gerrit 2.5.1" into stable-2.5
Improve wording in Gerrit 2.5.1 release notes

Change-Id: Ie4573a7b99ac3f3811afeda1517b2bdd17db7d81
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Merge remote-tracking branch 'origin/stable-2.5' into stable-2.5-typo3