Отказ от толчка на основе имени коммитера - PullRequest
3 голосов
/ 29 июня 2010

Я недавно создал ртутный репозиторий. Вся пауза выполняется через ssh. В настоящее время только пользователи с учетной записью LDAP могут вносить изменения в хранилище. Однако, учитывая, что при фиксации в локальном репозитории любое имя коммиттера может быть использовано с помощью --user. Возможна ситуация, когда имя коммиттера не совпадает с именем учетной записи LDAP. Я хочу избежать этого.

Каков наилучший способ избежать этого? Будет ли крюк лучшим способом справиться с этой проблемой? Я не хотел бы, чтобы это был локальный хук, но хук, который будет жить на той же машине, что и хранилище. Необходимо проверить, соответствует ли имя коммиттера учетной записи LDAP в случае отправки и не отправляет ли соответствующее сообщение об ошибке обратно.

Похоже, это разумный путь, или я решаю проблему неправильно?

1 Ответ

1 голос
/ 30 июня 2010

Если вы просто хотите проверить правильность имени пользователя, это должно быть возможно при использовании 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 мы можем пересылать наборы изменений между репозиториями даже со списком различных имен пользователей .. Но если это не тот случай, с которым вы столкнетесь, вы можете попробоватьэто ..

...