Как получить список коммитов для конкретного пользователя в любой ветке для нескольких проектов в 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
Другие вопросы по тегам