In the current implementation it is possible to set the limit per
project in the project.config on refs/meta/config, and at global
level in $site/etc/gerrit.config. The project setting may override
the global setting if it is lower. Changing the global setting
requires a server restart.
A limitation of this implementation is that we cannot set the limit
at a project level and have it inherited to its child projects; it
is necessary to explicitly set the limit on each child project.
This limitation causes a lot of extra work in the case where for
example we have a project hierarchy like:
|- All-Projects
|
-- Namespace-A
| |
| |-- Project-A
| |-- Project-B
. . ..
. . ..
| |-- Project-X
|
|
-- Namespace-B
Where the Namespace-X projects are assumed to be "parent only"
projects, if we want to set a limit for all the projects under a
namespace hierarchy, we need to set it explicitly on all those
projects individually rather than only on the "Namespace-X".
With this change the limit is inherited from the parent project.
The global limit is still respected, and the project still can't
set a higher value than the global, either explicitly per project
or via inheritance.
Similarly, if no global limit is specified, a child project still
may not set a limit higher than its parent.
The inheritedValue is removed from the config info and replaced
by a summary string describing how the effective value was
inherited or overridden from the parent project or the global
config. This string is used as the tooltip on the effective
value in the UI.
As a side effect of this change, it is now possible to effectively
change the global limit without having to restart the server, by
setting it on the All-Projects project. Note that this only works
if the new limit is lower than what is already configured in the
actual global limit in gerrit.config.
Bug: Issue 9528
Change-Id: I5f8b333e905ed0a147526ae33ff2bab2cbe222ef