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
— данные автора коммита обновятся и там.