--- a/hgext/acl.py Wed May 30 12:55:33 2012 -0700
+++ b/hgext/acl.py Mon May 28 19:45:15 2012 -0300
@@ -174,7 +174,21 @@
return True
for ug in usersorgroups.replace(',', ' ').split():
- if user == ug or ug.startswith('@') and user in _getusers(ui, ug[1:]):
+
+ if ug.startswith('!'):
+ # Test for excluded user or group. Format:
+ # if ug is a user name: !username
+ # if ug is a group name: !@groupname
+ ug = ug[1:]
+ if not ug.startswith('@') and user != ug \
+ or ug.startswith('@') and user not in _getusers(ui, ug[1:]):
+ return True
+
+ # Test for user or group. Format:
+ # if ug is a user name: username
+ # if ug is a group name: @groupname
+ elif user == ug \
+ or ug.startswith('@') and user in _getusers(ui, ug[1:]):
return True
return False