The main difference is that gitosis is now obsolete, and not actively maintained anymore.
Gitolite is much more feature complete, and just released its third version.
Its most interesting feature is the Virtual Reference (VREF for short) which allows you to declare as many update hook as you want, which allows you to restrict a push by:
dir/file name:
Say you don't want junior developers pushing changes to the Makefile, because it's quite complex:
- VREF/NAME/Makefile = @junior-devs
number of new files:
Say you don't want junior developers pushing more than 9 files per commit, because you want them to make small commits:
- VREF/COUNT/9/NEWFILES = @junior-devs
advanced filetype detection:
Sometimes a file has a standard extension (that cannot be 'gitignore'd), but it is actually automatically generated. Here's one way to catch it:
- VREF/FILETYPE/AUTOGENERATED = @all
See src/VREF/FILETETYPE to see the detection mechanism.
checking author email:
Some people want to ensure that "you can only push your own commits".
- VREF/EMAIL-CHECK = @all
See src/VREF/EMAIL-CHECK.
voting on commits:
A basic implementation of voting on a commit is surprisingly easy:
- VREF/EMAIL-CHECK = @all
.
# 2 votes required to push master, but trusted devs don't have this restriction
# RW+ VREF/VOTES/2/master = @trusted-devs
# - VREF/VOTES/2/master = @devs
See src/VREF/VOTES for the implementation.
and so on...