44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Find all git repos
|
|
find . -type d -name ".git" | while read gitdir; do
|
|
repo=$(dirname "$gitdir")
|
|
cd "$repo" || continue
|
|
|
|
echo -e "${CYAN}Repository: $repo${NC}"
|
|
|
|
# Latest 2 commits
|
|
echo -e " ${YELLOW}Latest 2 commits:${NC}"
|
|
git log --oneline -2 --decorate
|
|
|
|
# Uncommitted file count
|
|
uncommitted=$(git status --porcelain | wc -l | tr -d ' ')
|
|
if [ "$uncommitted" -eq 0 ]; then
|
|
echo -e " ${GREEN}Uncommitted files: $uncommitted${NC}"
|
|
else
|
|
echo -e " ${RED}Uncommitted files: $uncommitted${NC}"
|
|
fi
|
|
|
|
# Check for unpushed commits
|
|
git remote update > /dev/null 2>&1
|
|
ahead=$(git rev-list --count @{u}..HEAD 2>/dev/null)
|
|
behind=$(git rev-list --count HEAD..@{u} 2>/dev/null)
|
|
if [ "$ahead" -gt 0 ]; then
|
|
echo -e " ${YELLOW}Locally committed (not pushed): $ahead commit(s)${NC}"
|
|
else
|
|
echo -e " ${GREEN}All local commits are pushed${NC}"
|
|
fi
|
|
if [ "$behind" -gt 0 ]; then
|
|
echo -e " ${RED}Behind remote by $behind commit(s)${NC}"
|
|
fi
|
|
|
|
echo -e "${CYAN}----------------------------------------${NC}"
|
|
cd - > /dev/null || exit
|
|
done |