Если вы просто хотите проверить правильность имени пользователя, это должно быть возможно при использовании Mercurial Server , потому что каждый push-запрос аутентифицируется с помощью ключа ssh пользователя, и вы найдете его в $ REMOTE_USER.переменная окружения, поэтому хук типа pretxncommit (т. е. после применения изменений) может проверить соответствие имени автора и имени ключа, а затем может отклонить и откатить фиксацию, если это не так.
НапримерЕсли у вас есть соглашение о том, что все ключи хранятся в таких путях, как: coders / "name" _rsa.pub
, тогда этот код должен выполнить проверку:
if [ "$REMOTE_USER" != "coders/`hg tip --template "{author}\n"`_rsa.pub" ]
then
echo "reject msg.." ; exit 1
fi
Однако, естьЭто может быть проблемой, когда пользователь только что извлек изменения из другого репозитория (т. е. коммиты, сделанные другими людьми) и протолкнул их в свой репозиторий с помощью своего ключа.Тогда ловушка отклонит их, даже если имена пользователей были правильными при первых фиксациях ... с помощью hg мы можем пересылать наборы изменений между репозиториями даже со списком различных имен пользователей .. Но если это не тот случай, с которым вы столкнетесь, вы можете попробоватьэто ..