F=gerrit comparing gerrit and gitolite

Gerrit and gitolite have too many high level differences. Size is most visible of course: 56000 lines of Java versus 1300 lines of perl+shell, according to David A. Wheeler's 'SLOCCount' tool. Gerrit needs a database (it comes with a perfectly usable one, or I believe you can use any of the usual suspects), and even comes with its own ssh server and git server, and since the git engine is internal it probably has to include a lot of things that normal git already has; I wouldn't know for sure.

Gerrit allows a lot more de-centralisation in managing the system, and of course excels at code review, and it seems geared to really large, open source-ish projects with lots of contributors.

Gitolite works on a pure command-line install and a plain text file config, and is designed to run unobtrusively and quite transparently to all developers -- other than sending the admin their pubkey, nothing really changes for them in their workflow, toolset, etc. The "lite" in the name still holds, despite all the extra features being pumped in!

Gitolite was mainly written for a corporate environment, where we really, really, need branch-level ACLs. While they would certainly love the code review part, things like voting on a change, and so on seem a bit alien, and it seems to me that code review itself is more likely to be a hierarchical thing, not a peer-to-peer, "anyone can comment" thing. I could be wrong.


In short, gitolite doesn't do the main thing that gerrit does, and gerrit is so much bigger than gitolite in so many ways, it seems really odd to compare them at all.

However, it seems gerrit comes closest to gitolite in terms of flexibility of access control, which is gitolite's main strength, so I thought it would be useful to compare gitolite with just what is in the "access-control.html" in the gerrit war file. Or see this. [...and stop sniggering at the "svn" in the link dammit!]

Note that I don't necessarily list something that both tools have. (For example, per-user branches denoted by /USER/ in gitolite and $(username) in gerrit, or being able to distinguish between creating a branch and pushing to an already created one, etc).

Administrators: anyone who has gitolite-admin push privs

Anonymous Users: gitolite doesn't do that, though the "ssh-plus" branch, combined with git-daemon2 (Ilari) will allow that in future. When git-daemon2 becomes mainstream, the supporting code in this branch will also be merged into "master".

Registered Users: @all

Account Groups: @groups in gitolite. We do allow them to be nested, although the parsing is single-pass. We also don't have group foo-admin managing membership to group foo though; all groups are managed by the eqvt of "Administrators".

Project ACLs: first, let's remember (again) that we don't have any of the code review stuff :)

Categories:

The rest of it is in areas that the two tools have no overlap on (again, code review being the main thing), or, as I said at the top, features that both tools have.