"I would not be using git had sitaram not been kind enough to listen to my suggestions, and implement wildrepos in gitolite."


My use of wildrepos

I primarily use wildrepos in two scenarios: managing documentation and development for my research team, and homework submissions for my classes. Both of these scenarios use all the features of wildrepos including non-admin repository creation, user-level permission distribution, and group management. We use git for revision control of papers and source code. I am considered the admin and every other user (research team members and students alike) are considered users. Our typical use case involves multiple users either contributing to the paper or the development of some source code. The admin rarely (I can always hope for this) takes the lead on writing the entire paper or writing the entire source code. This means that the users are responsible for creating the initial repository, and giving permissions to other users (co-authors and developers). One user is usually the lead, and that user creates the repository. Then, it is this user that delegates permissions to other co-authors and developers for collaboration. All this must happen without the intervention of the admin. Thankfully, the wildrepos features enables this.

As the admin, I simply setup the basic repository definitions in the configuration file as shown below. This lets every member of the @esl group to create repositories inside the papers/ directory with repository names that match the prescribed regular expression. There are several examples of wildcard repos that can help better configure them to suit ones needs.

1
2
3
4
5
repo papers/[0-9][0-9]*[/]+[a-zA-Z0-9][a-zA-Z0-9_\.\-]+
    C                   = @admins @caesr @uwprofs
    RW+                 = CREATOR
    RW                  = WRITERS
    R                   = READERS
A user (CREATOR) that creates a repository can then explicitly provide permissions to other users. Details on how this is done is described at: handing out rights to wildcard matched repos. I also provide git-space (made up word) to each member of my research team to revision control whatever they want. To allow this, I use the following configuration. Once again, it is the user's responsibility to delegate permissions if they want to share their repositories.
1
2
3
4
5
6
repo papers/[0-9][0-9]*[/]+[a-zA-Z0-9][a-zA-Z0-9_\.\-]+
repo scratch/CREATOR/[aA-zZ0-9]*
    C                   = @caesr
    RW+CD               = CREATOR
    RW                  = WRITERS
    R                   = READERS
If you are considering switching to git, or are already using git and want a better method to manage your users, I highly recommend using gitolite. Take a look at who else is using gitolite. Thank you sitaram.