aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gitosis/group.py6
-rw-r--r--gitosis/test/test_access.py8
2 files changed, 13 insertions, 1 deletions
diff --git a/gitosis/group.py b/gitosis/group.py
index 975bbc5..a18a731 100644
--- a/gitosis/group.py
+++ b/gitosis/group.py
@@ -19,7 +19,11 @@ def _getMembership(config, user, seen):
else:
members = members.split()
- if user in members:
+ # @all is the only group where membership needs to be
+ # bootstrapped like this, anything else gets started from the
+ # username itself
+ if (user in members
+ or '@all' in members):
log.debug('found %(user)r in %(group)r' % dict(
user=user,
group=group,
diff --git a/gitosis/test/test_access.py b/gitosis/test/test_access.py
index 9f9d81a..751b0b4 100644
--- a/gitosis/test/test_access.py
+++ b/gitosis/test/test_access.py
@@ -78,6 +78,14 @@ def test_read_yes_map_wouldHaveWritable():
eq(access.haveAccess(config=cfg, user='jdoe', mode='readonly', path='foo/bar'),
None)
+def test_read_yes_all():
+ cfg = RawConfigParser()
+ cfg.add_section('group fooers')
+ cfg.set('group fooers', 'members', '@all')
+ cfg.set('group fooers', 'readonly', 'foo/bar')
+ eq(access.haveAccess(config=cfg, user='jdoe', mode='readonly', path='foo/bar'),
+ ('repositories', 'foo/bar'))
+
def test_base_global_absolute():
cfg = RawConfigParser()
cfg.add_section('gitosis')