К сожалению, AclExtension блокирует доступ к именам пользователей. Если вы создаете отдельные учетные записи пользователей UNIX для каждого использования с hg-ssh, у вас есть все, что вам нужно, но если все ваши пользователи ssh используют одну и ту же учетную запись пользователя Unix, то AclExtension не будет работать для вас.
Если только ...
Я только что заглянул в файл acl.py, и похоже, что он использует getuser модуля getpass.py, который проверяет среду на наличие имени пользователя, используя этот код:
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
user = os.environ.get(name)
if user:
return user
так что может быть возможным, чтобы подделать это, установив переменную окружения в файле author_keys пользователя hg-ssh, например:
command="hg-ssh path/to/repo" environment="LOGNAME=fakeusername" ssh-dss ...
где тогда вы можете поместить fakeusername в правила ACL и иметь разные fakeusername для каждого ключа, работающего под одной учетной записью UNIX.
Кстати: все, похоже, используют только hg-ssh, я никогда не видел, чтобы (неофициальное) приложение mercurial-server больше использовалось.