Как получить список коммитов для конкретного пользователя в любой ветке для нескольких проектов в git?
Я работаю в нескольких ветках нескольких проектов GIT. Я хотел бы получить список моих коммитов на конкретную дату во всех этих проектах и ветках (для целей расписаний).
Хотя я мог бы написать служебный скрипт для этой цели, я не хочу изобретать велосипед. Есть ли простой способ сделать это, используя существующие инструменты на основе Unix или какой-нибудь рецепт git power-user?
2 ответа
Для работы с несколькими репозиториями вы можете использовать mr.
Определите пользовательское действие в .mrconfig, например, например.
[DEFAULT]
git_daylog = git log --branches --after="$* 00:00" --before="$* 24:00" --author="$(git config user.email)"
[gitrepos/my_blog_app]
[path_to_another_project_from_home]
...
и вы сможете сказать mr daylog 26 june
и получите ваши логи для всех репозиториев, зарегистрированных в mr в вашем текущем каталоге.
Для одного репо:
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
<date>
может быть в любом общем формате. <author>
чувствителен к регистру, а также проверяет адрес электронной почты.
Замечания:
При этом учитывается дата коммиттера (когда этот коммит был применен к этому репозиторию / ветви), а не дата автора (когда этот контент был впервые зафиксирован). Это важно, если вы перебазировали и / или выбрали вишню. Похоже, не существует эквивалентной функциональности на дату автора.
Редактировать:
Чтобы получить этот журнал для набора репозиториев, вы можете запустить:
for dir in repo1 repo2 ... repo_n; do
git --no-pager --git-dir="$dir/.git" log --all \
--after="<date> 00:00" \
--before="<date> 23:59" \
--author="<author>"
&& echo # to add a blank line between logs
done