Git: извлечение первого и последнего комита по автору
В силу определённых обстоятельств – периодически стал возникать вопрос, в каких временных рамках я занимался тем или иным проектом. И готового ответа на него у меня не было – как-то не приходило в голову фиксировать подобную информацию.
Git поможет!
Возникла тривиальная идея – вытащить эту информацию из гит-лога. Первый и последний коммиты – плюс-минус дадут требуемые рамки. Достаточно найти все коммиты определённого автора (в данном случае – себя) и взять первый+последний.
Git alias для поиска по автору
Чтобы не запоминать (или не искать в истории) довольно длинную команду – её удобно запихать в пользовательский alias (именно гита, не оболочки). Например – в ~/.gitconfig прописать (в секции [alias]):
В частном случае – это уже работает достаточно удобно и выглядит примерно так:
user@host:~/single-repo$ git first-last-by-author dmitry
f887e8aa55 Dmitry 2022-06-26
6f7a97ded7 Dmitry 2021-04-08
Когда репозиторий для поиска – один. Или парочка. Или… Нет, когда их парочка сотен – становится грустно. Идея явно требует развития!
One Function to find them all
Для решения задачи поиска по набору репозиториев – пришлось воспользоваться функциями оболочки. Они у меня сложены в отдельном файле ~/.config/bash/bash_functions.
На базе команды для обновления репозиториев и приведённого выше гит-алиаса для поиска по автору – сделал такую вот bash-функцию:
Теперь поиск работает и в общем случае (в каталоге multi-repo лежит куча git-репозиториев):
user@host:~/multi-repo$ git-first-last-commit-by-author dmitry
8f1d4ae Dmitry 2022-08-16
83a8f89c Dmitry 2023-02-15
Видно, что здесь порядок сортировки по датам – прямой. Мне так удобней, но всегда можно использовать ключ --reverse для sort внутри git-first-last-commit-by-author().