diff -r 92e1c64ba0d4 -r c49cf339b5bb hgext/acl.py --- 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