58 lines
1.7 KiB
Bash
58 lines
1.7 KiB
Bash
|
#!/usr/bin/env sh
|
||
|
|
||
|
# Thanks ChatGPT
|
||
|
|
||
|
# Define your projects directory
|
||
|
PROJECTS_DIR="$HOME/projects/"
|
||
|
|
||
|
# Counter for total directories checked
|
||
|
total_dirs_checked=0
|
||
|
|
||
|
# Counter for projects with unpushed commits
|
||
|
unpushed_projects=0
|
||
|
|
||
|
# Change directory to your projects directory
|
||
|
cd "$PROJECTS_DIR" || { echo "Directory not found"; exit 1; }
|
||
|
|
||
|
# Loop through each subdirectory
|
||
|
for dir in */; do
|
||
|
# Increment the total directories counter
|
||
|
((total_dirs_checked++))
|
||
|
|
||
|
# Move into the project directory
|
||
|
cd "$dir" || continue
|
||
|
|
||
|
# Check if it's a git repository
|
||
|
if [ -d ".git" ]; then
|
||
|
# Get the name of the current branch, silencing errors
|
||
|
current_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||
|
|
||
|
# Check if the command failed or if it's not a branch
|
||
|
if [ $? -ne 0 ] || [ -z "$current_branch" ]; then
|
||
|
cd ..
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
# Check if the branch has an upstream set
|
||
|
if [ -z "$(git rev-parse --abbrev-ref --symbolic-full-name "$current_branch@{u}" 2>/dev/null)" ]; then
|
||
|
#echo "No upstream set for $current_branch in $dir"
|
||
|
true # Hack cus i am lazy
|
||
|
else
|
||
|
# Check if there are unpushed commits
|
||
|
if [ "$(git rev-list --count HEAD..."$current_branch"@{u})" -gt 0 ]; then
|
||
|
echo "There are unpushed commits in $dir"
|
||
|
((unpushed_projects++))
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# Move back to the parent directory
|
||
|
cd ..
|
||
|
done
|
||
|
|
||
|
# Output the total number of directories checked
|
||
|
echo "Total directories checked: $total_dirs_checked"
|
||
|
|
||
|
# Output the number of projects with unpushed commits
|
||
|
echo "Projects with unpushed commits: $unpushed_projects"
|