Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gitolite disallow access for directory on master branch but not on user branch

Consider the following repo:

REPO/src/A/

REPO/src/B/

Is it possible by having only 1 repo to implement the following restrictions?

  1. On master branch, allow full access to maintainers role
  2. On master branch, disallow access to A but allow for B to contributors role.
  3. On personal branches, allow full access to A and B to creators.
like image 334
Konstantinos Avatar asked Aug 10 '12 10:08

Konstantinos


1 Answers

With Gitolite V3 or 'g3' and its VREF, it should be possible to implement those restrictions.

But the access you can manage is only for write-access.
If a user can clone a repo, he/she will have read-access to all the repo (as mentioned in "gitolite: allow to change only selelected files").
If you really want to limit read-access, you might try gitolite 'partial-copy'.

Few notes:

  • VREF can be used for restricting pushes by dir/file name.
  • I use here the notion of role, not group of users: you need to set the permission separately for said users.
  • Personnal branches are described here.

An access rule is like:

<permission> <zero or more refexes> = <one or more users/user groups>

<zero or more refexes> means your can combines refexes

That would give something like (not tested):

repo REPO
        RW+  master                     =   MAINTAINER
        -    master         VREF/NAME/A =   CONTRIBUTOR
        RW   master         VREF/NAME/B =   CONTRIBUTOR
        RW   personal/USER/ VREF/NAME/A =   CREATOR
        RW   personal/USER/ VREF/NAME/B =   CREATOR
like image 131
VonC Avatar answered Oct 19 '22 19:10

VonC