Our Gitolite/git administrator have comprised a list of features that we rely on with Gitolite. From what I can see GitLab does not support all of them.
Must have features:
* Manage users individually and in groups
* Define groups of repositories and allow group administration of repositories (give or limit access to many repositories for certain users), without having to add for each repository.
* Per-branch user access (none|read|write|create|delete|force-update)
* Tag access that can be controlled independently from branch and commit access (for instance, a user get access to push tags, but not commits)
* Namespace control for tags (a user gets access to push tags within a given namespace)
* General namespace control (gives personal namespace with full access within namespace for users and groups)
* Everything above must also allow for management individually per repository.
* Allow for command line management of git this setup. GUI is fine, but should not rely solely on it.
Gitolite has functionality that supports the above:
* Define repositories
* Define users
* Defines groups of users
* Auto defined user groups, for instance @all
* Define groups of repositories (include wildcard repositories systems/..*)
* Auto defined groups of repositories, like @all
* Define groups based on existing groups (but for instance minus/plus one or several users)
* Define access on all levels (repositories/users/groups/branches/tags/namespace)
* Access levels: none (deny), read, write, write+ (push -f), create, delete