Простая автоматическая напоминалка с итогами вашей разработки за день и неделю в виде списка git-коммитов

Подводить итоги дня и недели по написанию кода можно с помощью одного довольно простого скрипта, который будет отправлять вам на почту подборку ваших коммитов за это время. Конечно, вы можете предложить лучшие решения, но если не хочется долго думать, то используйте эту заготовку.

В cron добавляем следующее (crontab -e)

0 22 * * 1,2,3,4,5 sh /path/to/git_changes.sh # Sends 5 PM EST if server time is UTC
0 21 * * 5 sh /path/to/git_changes.sh -w # Sends Friday @ 4PM EST if server time is UTC

А в сам скрипт git_changes.sh

#!/usr/bin/env bash

PROJECTS_DIR=/path/to/projects
RECIPIENT=user@example.com

if [ "$1" = "-w" ]; then
	mailing="weekly"
	since="1.week"
	format="iso"
else
	mailing="daily"
	since="1.day"
	format="relative"
fi

output=""
for git in $(find  $PROJECTS_DIR/  -maxdepth 2 -name "*.git"); do 
	gitdir=$(dirname "$git"); 
	cd $gitdir
	changes=$(git --no-pager log --date=$format --pretty=format:"%cd: %s" --decorate=short  --since=$since); 
	if [ "$changes" ]; then
		output="$output\n$gitdir:\n$changes\n\n"
	fi
done

if [ "$output" ]; then
	if [ "$mailing" = "weekly" ]; then
		echo -e "$output" | mail -s "Weekly git commits update for week ending $(date +'%b %d')" $RECIPIENT
	else
		echo -e "$output" | mail -s "git commits for $(date +'%A, %b %d')" $RECIPIENT
	fi
fi

Код также можно забрать с GitHub Gist.