checkdirty.sh 855 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/bin/bash
  2. find_git_branch() {
  3. # Based on: http://stackoverflow.com/a/13003854/170413
  4. local branch
  5. if branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null); then
  6. if [[ "$branch" == "HEAD" ]]; then
  7. branch='detached*'
  8. fi
  9. git_branch="($branch)"
  10. else
  11. git_branch=""
  12. fi
  13. }
  14. find_git_dirty() {
  15. local status=$(git status --porcelain 2> /dev/null | pcregrep -v "^\?\? ")
  16. if [[ "$status" != "" ]]; then
  17. git_dirty='*!*'
  18. else
  19. git_dirty=''
  20. fi
  21. }
  22. checkdir() {
  23. local DIR=$1
  24. cd $DIR
  25. find_git_branch
  26. find_git_dirty
  27. RED='\033[0;31m'
  28. BLUE='\033[0;34m'
  29. NC='\033[0m' # No Color
  30. echo -e "${DIR}${BLUE}${git_branch}${RED}$git_dirty${NC}"
  31. }
  32. for dir in $(find . -type d -name ".git")
  33. do
  34. dir=${dir%.git}
  35. (
  36. checkdir $dir
  37. )
  38. done