Dependencies was lost in the ChangeScreens "Needed By" table.

Older patchsets are now iterated for decendents, so that dependency
chains does not break on new upstream patchets.

Change-Id: Ib5dab294874b2a122e4483cf537242434d1ae460
Support multiple branches creation in 'create-project'

In case if a project has some kind of waterfall automerging
a->b->c it is convenient to create all these branches at the
project creation time.

e.g. '.. gerrit create-project -b master -b foo -b bar ...'

Change-Id: Iec418985caa89197825cd4fc292bede787bf9786
Clarify updating link to the docs at Gerrit home page.

Change-Id: I14275e0c426c97288c0a089db74ea1c4fe2a762c
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Fix lockup of '/COMMIT_MSG' file from patch set

For some changes Gerrit is wrongly showing "No differences" as diff for the
commit message. If this happens the reviewers are unable to comment on the
commit message.

The files in the patch set are lexicographically sorted, but the commit
message is always the first entry. Accessing a file from the patch set by
name assumes that all files in the patch set are lexicographically sorted.
This is normally true since the file for the commit message '/COMMIT_MSG'
comes because of its leading '/' lexicographically before most other files.
However there are files which come lexicographically even before '/', e.g.
all files starting with '.', like '.gitignore'. If such a file is contained
in the patch set accessing the commit message file from the patch set fails.
As result Gerrit thinks that the commit message does not exist and shows the
"No Differences" message on the patch screen.

This change fixes the lookup of the commit message file from the patch set.
If the commit message file is requested, simply the first file from the
patch set is returned as we know that the first entry is always the commit
message file.

Change-Id: I7168b3152ef63586e9ee68cd6abcdc9f77787444
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Reinitialize ProjectAccessScreen editors when switching modes

Latest SVN tip of GWT improved the way editors are reused inside
of UiBinder panels. Editors are no longer recreated when setting
the same object into the Driver:

  http://code.google.com/p/google-web-toolkit/issues/detail?id=7038

Work around this by clearing the editors with an empty project
access model object before reloading them with the real model that
is now editable.

Change-Id: Icef5601be9910e920773757beeab8a727e67b881
Merge "Reinitialize ProjectAccessScreen editors when switching modes"
Merge "Clarify updating link to the docs at Gerrit home page."
Fix warnings in ParameterizedString

Change-Id: I0429806cfc4ba8f6ea1bc219ed0efb78c08837ca
Fix NPE in LdapRealm caused by non-LDAP users

Servers that are connected to LDAP but have non-LDAP user accounts
created by `gerrit create-account` (e.g. batch role accounts for
build systems) were crashing with a NullPointerException when the
LdapRealm tried to discover which LDAP groups the non-LDAP user
was a member of in the directory.

If there is no LDAP identity for the user account, use an empty
set of groups as the LDAP contribution to the GroupMembership.

Change-Id: Ibd918a8705481e4b6bd2f34500fa79fa0d5f43a4
Merge "Dependencies was lost in the ChangeScreens "Needed By" table."
Merge "Fix NPE in LdapRealm caused by non-LDAP users"
Merge "Support multiple branches creation in 'create-project'"
Remove old LDAP group code.

Change-Id: I38fdd7b0dba73df61f9b7085c202c6f36ecfc04e
Abstract group systems into GroupBackend interface.

Currently, every NameKey and UUID for a group is expected to be backed
by an entry in the AccountGroup table. In the future, the group
backend will be swapable by allowing implementations to scope
AccountGroup.UUIDs e.g. "ldap:<ldap identifier>". This change
adds a GroupBackend interface that abstracts the implementation details
of a group system with respect to looking up groups (editing and
creating are not supported), which should be used instead of GroupCache
when looking up by AccountGroup.UUID or name. GroupBackends scope which
AccountGroup.UUIDs they handle by implementing the handles() method for
a particular prefix. The UniversalGroupBackend is a GroupBackend that
delegates methods to the GroupBackend that handles() the UUID, using
DynamicSets. The InternalGroupBackend and LdapGroupBackend are
the first GroupBackend implementation. It should be possible to bind
many GroupBackends concurrently, unfortunately, the current
implementation of LdapGroupBackend.handles() overlaps with the
InternalGroupBackend.handles() (since they are both stored in the
database), so only one those implementations may be bound at once.

Change-Id: Ieda21916247084ebc2dffc9dd82d3e1230b9ab64
Migrate existing internal LDAP groups.

Previously, LDAP groups were mirrored in the AccountGroup table and
given an Id and UUID the same as internal groups. Update these groups
to be backed by only a GroupReference, with a special "ldap:" UUID
prefix. Migrate all existing references to the UUID in ownerGroupUUID
and any project.config.

Change-Id: If0b2477a0c6a5c0fc819ebbd56b1998127b60c6f
Allow extra group suggestions for project owners.

The suggestGroupOwner currently only returns groups that are visible
to the user.  When editing a project config, include the
Project.NameKey so owners can be shown and add groups to which they
are not a member.

Change-Id: I1df4a025b6e11e92a44e77e2e96e16f4e187f1a1