Created
July 10, 2023 21:29
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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