Git mailmap или как объединить разработчика
Бывает, что разработчик коммитит под разными именами или имейлами, а это часто может сбивать с толку. Например при работе с историей коммитов мы ищем нужный коммит от определённого разработчика, но он в те далёкие времена называл себя по-другому.
Гит позволяет объединить данные такого разработчика.
Например команда git shortlog -s -n -e выводит количество коммитов на каждого разработчика.
Если один разработчик коммитил под разными имейлами или именами, то вывод будет таким:
10 Foo Bar <foo.bar@gmail.com>
3 Foo Bar <foo.bar@ya.ru>
4 Foo B. Bar <foo.bar@example.com>
1 Foobar <foo.bar@baz.com>Можно объединить такие записи.
Для этого создаём в репозитории файл .mailmap и описываем маппинги.
Например мы хотим объединить разработчика из вывода выше в такой вид: Foo Bar <foo.bar@gmail.com>.
Для этого надо:
- Обновить имя для имейлов
<foo.bar@example.com>и<foo.bar@baz.com>наFoo Bar. - Объединить имейлы
<foo.bar@ya.ru>,<foo.bar@example.com>и<foo.bar@baz.com>на<foo.bar@gmail.com>.
Файл .mailmap будет выглядеть так:
Foo Bar <foo.bar@example.com>
Foo Bar <foo.bar@baz.com>
<foo.bar@gmail.com> <foo.bar@ya.ru>
<foo.bar@gmail.com> <foo.bar@example.com>
<foo.bar@gmail.com> <foo.bar@baz.com>Теперь вывод команды будет правильным:
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 <foo.bar@example.com>
# Baz Qux
Baz Qux <baz.qux@example.com>
<baz.qux@example.com> <baz@example.com>
<baz.qux@example.com> <baz.q@example.com>Маппинги, описанные в файле .mailmap влияют так же на вывод комманды git log — данные автора коммита обновятся и там.