Git mailmap или как объединить разработчика
Бывает, что разработчик коммитит под разными именами или имейлами, а это часто может сбивать с толку. Например при работе с историей коммитов мы ищем нужный коммит от определённого разработчика, но он в те далёкие времена называл себя по-другому.
Гит позволяет объединить данные такого разработчика.
Например команда git shortlog -s -n -e выводит количество коммитов на каждого разработчика.
Если один разработчик коммитил под разными имейлами или именами, то вывод будет таким:
10 Foo Bar <foo.bar@gmail.com>
3 Foo Bar <[email protected]>
4 Foo B. Bar <foo.bar@example.com>
1 Foobar <foo.bar@baz.com>Можно объединить такие записи.
Для этого создаём в репозитории файл .mailmap и описываем маппинги.
Например мы хотим объединить разработчика из вывода выше в такой вид: Foo Bar <[email protected]>.
Для этого надо:
- Обновить имя для имейлов
<[email protected]>и<[email protected]>наFoo Bar. - Объединить имейлы
<[email protected]>,<[email protected]>и<[email protected]>на<[email protected]>.
Файл .mailmap будет выглядеть так:
Foo Bar <foo.[email protected]>
Foo Bar <foo.[email protected]>
<foo.[email protected]> <foo.[email protected]>
<foo.[email protected]> <foo.[email protected]>
<foo.[email protected]> <foo.[email protected]>Теперь вывод команды будет правильным:
18 Foo Bar <foo.bar@gmail.com>В файле можно оставлять комментарии, может быть полезно, если пользователей много:
# See: https://git-scm.com/docs/git-shortlog#_mapping_authors
# git shortlog -s -n -e
# Foo Bar
Foo Bar <[email protected]>
# Baz Qux
Baz Qux <[email protected]>
<[email protected]> <[email protected]>
<[email protected]> <[email protected]>Маппинги, описанные в файле .mailmap влияют так же на вывод комманды git log — данные автора коммита обновятся и там.