2009-09-26

gitolite is done...

I think gitolite is done now.  It does everything [*] that gitosis does plus a lot more besides.

Here's a brief summary, of what's new and improved, as of today.  Most of this is elaborated here, if you want to read more.

What's NEW:

(1) the original reason for gitolite's creation: per-branch permissions.  Being able to say "only Alice and Bob can push the master branch" is great!

(2) rewind permissions: being able to say "only Alice can rewind any branch" is even greater :-)

(3) very useful logging.  Here's an example:

2009-09-19.10:24:37  +  b4e76569659939  4fb16f2a88d8b5  myrepo refs/heads/master       user2   refs/heads/master
The "+" means this is a rewind (this would be "W" for a fast-forward update).  The two SHAs (14 digits are preserved) are the old and the new.  The repo name, the refname being updated, and the user, are next.  The last field is the exact pattern in the config file that matched to allow this update to happen -- great for debugging (rejected attempts don't come to the log file; but enough info shows up on the user's terminal to debug this anyway)

(4) "personal" namespace for refs, per developer; see the link above for details

(5) you can have "excludes" (aka "deny") in the config file if you use the "rebel" branch.  Suddenly opens up a heck of a lot more power for your access control config :-)

(6) ummm this is not something I'd expect gitosis to have but I also have a migration guide for gitosis users plus a simple tool to convert a gitosis config file to gitolite syntax (except gitweb/daemon config).

What's IMPROVED:

(1) "push to admin" is not available by default.  It's a great feature, but it is a support nightmare, and it's a completely unnecessary hill to force a newbie to climb.  However, I do provide clear instructions on how to set it up yourself, and I admit I use it myself.

(2) the config file has a much saner syntax.  Very clean, no clutter.  Also, you can slice and dice your config anyway you want and gitolite will combine it all in its head.  See example here or elsewhere in the documentation.  If you're not sufficiently impressed by this, you haven't thought about it enough or your needs are not complex enough :-)

(3) the way to specify gitweb and daemon is much more intuitive and consistent with the rest of the "permissions" syntax.  Just treat them as two special users "gitweb" and "daemon" -- if they have read access to a repo, then so does the corresponding tool :-)

(4) combine #2 and #3, and you get far, far, easier ways to setup gitweb/daemon support for many many many repos easily.  Gitosis required you to setup each repo separately in its own paragraph (probably because of the "description" tag)

What's MISSING:

[*] Speaking of the "description" tag, that's the only thing gitosis does which gitolite doesn't.  But you can do it offline if you like, and if you don't use gitweb (I don't) then it may not even matter to you.

1 comment:

Anonymous said...

Hi Sita,

Congrats. I have been following your blog (sadly though proxy as blogspot domain is blocked by employer).

Hope to see more contributions from you to GNU. We (chiguru distribution) were planning to use git for some of our distro activities (We are building a kannada themed distro based on debian called Chiguru). gitolite will certainly help!!

-Your former colleague who got inspired by you and your team regarding free software
Srinidhi