#!/bin/bash # Update all git directories below current directory or specified directory # Skips directories that contain a file called .ignore HIGHLIGHT="\e[01;34m" NORMAL='\e[00m' function update { local d="$1" if [ -d "$d" ]; then if [ -e "$d/.ignore" ]; then echo -e "\n${HIGHLIGHT}Ignoring $d${NORMAL}" else cd "$d" || exit > /dev/null if [ -d ".git" ]; then echo -e "\n${HIGHLIGHT}Updating pwd$NORMAL" git add . git stash git pull else scan -- * fi cd .. > /dev/null fi fi #echo "Exiting update: pwd=pwd" } function scan { #echo "pwd" for x in "$@"; do update "$x" done } if [ "$1" != "" ]; then cd "$1" || exit > /dev/null; fi echo -e "${HIGHLIGHT}Scanning ${PWD}${NORMAL}" scan -- *