Skip to content

Instantly share code, notes, and snippets.

@israelss
Created July 10, 2023 21:29
Show Gist options
  • Save israelss/395d2594b2deae874ab2d4260490dd97 to your computer and use it in GitHub Desktop.
Save israelss/395d2594b2deae874ab2d4260490dd97 to your computer and use it in GitHub Desktop.
Script para listar os últimos commits (por padrão último dia até o momento da execução) de todos os projetos em um diretório especificado
#! /bin/bash
# Salve este arquivo e não esqueça de dar permissão de execução:
# chmod +x ./git_log.sh
IFS=$'\n'
today=$(date '+%Y-%m-%d %H:%M:%S')
days=1
projectsDir=$HOME/Projetos # Substitua pelo seu diretório de projetos ou use a flag -p para especificar outro diretório
username=$(git config user.name)
print_usage() {
echo "Usage: $0 [-p project_directory] [-d days_ago] [-u username]"
}
while getopts p:d: flag
do
case "${flag}" in
d) days=${OPTARG};;
p) projectsDir=${OPTARG};;
u) username=${OPTARG};;
*) print_usage
exit 1 ;;
esac
done
if [[ $(date +%u) -eq 1 ]]; then
days=$((days + 2))
fi
lastWorkDay=$(date --date='-'${days}' days' '+%Y-%m-%d')
projectsDirIsGitRepo="$(git -C $projectsDir rev-parse --git-dir > /dev/null 2>&1)"
if [[ "$?" -eq 0 ]]; then
(
cd "$projectsDir"
hasCommits="$(git rev-list -n 1 --all)"
if [[ "$hasCommits" != '' ]]; then
logs="$(git log --author=${username} --pretty=format:'%C(yellow)%h %Cred%ad %Cgreen%d %Creset%s' --date=short --before=${today} --after=${lastWorkDay}' 00:00:00')"
if [[ $logs != '' ]]; then
echo -e "\e[1m\e[94mListando commits de \e[32m${lastWorkDay} 00:00:00\e[94m até \e[32m${today}\e[94m em \e[95m${projectsDir}\e[34m:\e[0\e[39m\n"
for log in $logs
do
echo $log
done
echo -e "\n"
fi
fi
)
else
for dir in ${projectsDir}/*
do
(
dirIsGitRepo="$(git -C $dir rev-parse --git-dir > /dev/null 2>&1)"
if [[ "$?" -eq 0 ]]; then
cd "$dir"
hasCommits="$(git rev-list -n 1 --all)"
if [[ "$hasCommits" != '' ]]; then
logs="$(git log --author=${username} --pretty=format:'%C(yellow)%h %Cred%ad %Cgreen%d %Creset%s' --date=short --before=${today} --after=${lastWorkDay}' 00:00:00')"
if [[ $logs != '' ]]; then
echo -e "\e[1m\e[94mListando commits de \e[32m${lastWorkDay} 00:00:00\e[94m até \e[32m${today}\e[94m em \e[95m${dir}\e[34m:\e[0\e[39m\n"
for log in $logs
do
echo $log
done
echo -e "\n"
fi
fi
fi
)
done
fi
unset IFS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment