You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2010/10/28 15:20:45 UTC

svn commit: r1028289 - in /subversion/trunk/tools/hook-scripts: svnperms.conf.example svnperms.py

Author: cmpilato
Date: Thu Oct 28 13:20:45 2010
New Revision: 1028289

URL: http://svn.apache.org/viewvc?rev=1028289&view=rev
Log:
Teach svnperms.py to handle nested groups (though with no forward
declarations allowed at this time).

* tools/hook-scripts/svnperms.py
  (Permission.parse_groups): Interpret tokens in a group's definition
    that begin with '@' as group names, and recursively expand that
    group.

* tools/hook-scripts/svnperms.conf.example
  Tweak the sample to demonstrate this new nested group business.

Patch by: Kyle George <kg...@tcpsoft.com>
          (Tweaked by me.)

Modified:
    subversion/trunk/tools/hook-scripts/svnperms.conf.example
    subversion/trunk/tools/hook-scripts/svnperms.py

Modified: subversion/trunk/tools/hook-scripts/svnperms.conf.example
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/svnperms.conf.example?rev=1028289&r1=1028288&r2=1028289&view=diff
==============================================================================
--- subversion/trunk/tools/hook-scripts/svnperms.conf.example (original)
+++ subversion/trunk/tools/hook-scripts/svnperms.conf.example Thu Oct 28 13:20:45 2010
@@ -9,6 +9,8 @@
 #
 [groups]
 group1 = user1 user2 user3
+group2 = user4 user5
+supergroup = @group1 @group2 user6
 
 #
 # Example repository control, showing allowed syntax.
@@ -20,13 +22,13 @@ group1 = user1 user2 user3
 # - line breaks are accepted
 #
 [example1 groups]
-group2 = user9 user10
+group3 = user9 user10
 
 [example1]
 trunk/.* = *(add,remove,update) @group1,user4,user5(update)
            user6,user7()
 trunk/.* = user8(add,update)
-tags/[^/]+/ = @group2(add)
+tags/[^/]+/ = @group3(add)
 branches/[^/]+/.* = *(add,remove,update)
 
 #

Modified: subversion/trunk/tools/hook-scripts/svnperms.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/svnperms.py?rev=1028289&r1=1028288&r2=1028289&view=diff
==============================================================================
--- subversion/trunk/tools/hook-scripts/svnperms.py (original)
+++ subversion/trunk/tools/hook-scripts/svnperms.py Thu Oct 28 13:20:45 2010
@@ -128,7 +128,17 @@ class Permission:
 
     def parse_groups(self, groupsiter):
         for option, value in groupsiter:
-            self._group[option] = value.split()
+            groupusers = []
+            for token in value.split():
+                # expand nested groups in place; no forward decls
+                if token[0] == "@":
+                    try:
+                        groupusers.extend(self._group[token[1:]])
+                    except KeyError:
+                        raise Error, "group '%s' not found" % token[1:]
+                else:
+                    groupusers.append(token)
+            self._group[option] = groupusers
 
     def parse_perms(self, permsiter):
         for option, value in permsiter: