Мы переходим с Subversion на Mercurial в нашей корпоративной среде. Будет центральный репозиторий, доступный через HTTPS с базовой HTTP-аутентификацией.
Теперь мне любопытно, можно ли принудительно указать конкретные имена пользователей для коммитов? Я говорю об именах пользователей, которые можно установить в .hgrc
как это
[ui]
username = John Doe <john.doe@mycompany.com>
и которые видны в сообщениях журнала.
Поскольку этот файл размещается на каждом компьютере разработчика, администратор не может его контролировать.
Это не будет проблемой, потому что мы доверяем нашим внутренним разработчикам, но внешние (фрилансеры) также будут иметь доступ по крайней мере к некоторым репозиториям. Мы категорически не хотим, чтобы они регистрировались под разными именами.
Было бы здорово, если бы имя пользователя можно было привязать / принудительно привязать к имени пользователя HTTP. Например, если Джон отправляет свои изменения в URL https://john@mycompany.com/hg/project1
тогда имена пользователей всех коммитов будут установлены на John Doe <john.doe@mycompany.com
.
Это возможно?
Вы можете принудительно ввести имена пользователей на стороне сервера во время отправки. Т.е. для ваших фрилансеров может быть целесообразно разрешить им отправлять только те изменения, которые содержат некоторое предварительно утвержденное имя пользователя (это может несколько ограничить другие приятные функции Mercurial, то есть то, что люди могут делиться своими изменениями друг с другом перед тем, как нажимать). У вас также может быть полный список предварительно утвержденных имен пользователей на центральном сервере.
Все это можно сделать с помощью хука pretxnchangegroup.
Как упоминалось в djc, вы можете использовать ловушку pretxnchangegroup. Документация по применению политики фиксации в вашем центральном репо находится на Вики-страница EnsureCommitPolicy в документации Mercurial.
Это может создать другие проблемы, так как пользователи не обнаружат проблему, пока они не попытаются вернуться в «основной» репозиторий, в котором установлена ловушка. В этом случае им придется удалить все исправления из своего репо и повторно применить их с новым именем пользователя.
ИМО, лучшим вариантом было бы просто не позволять вашим фрилансерам иметь доступ к основным репозиториям. Они могут отправить наборы изменений вашим основным разработчикам, которые затем обработают исправления и сами поместят их в репозиторий.
Если вам нужно просто исправить существующую проблему, см. "Могу ли я изменить имя пользователя в ртутном наборе изменений" на stackoverflow.