This is an old revision of the document!


gitr

gitr is a script I've developed for my project needs. It runs git commands recursively with special consideration for what I want to see or how my projects are typically structured.

You can have this as a command available wherever you are by placing it in /usr/bin/gitr (without the .sh), and making it executable.

gitr.sh

#!/bin/sh

gitrmode=""
if [ "$1" = "fetch" ]; then
	gitrmode="fetch"
elif [ "$1" = "status" ]; then
	gitrmode="status"
elif [ "$1" = "pull" ]; then
	gitrmode="pull"
fi

if [ "$gitrmode" = "" ]; then
	echo -e "Usage: `basename $0` <fetch|status|pull>\n"
	exit
fi

function runGitCmd()
{
	`which ls` -1d * | while read item;do
		# make sure we have a directory
		if [ -d "${item}" ]; then
			cd "${item}"

			# make sure the directory is a .git project
			if [ -d ".git" ]; then

				if [ "$gitrmode" = "status" ]; then
					echo "statusing ${item}..."
					git status | grep -i -E '^[^#]|^# On branch|^# Your branch'
					echo -e "\n";

				elif [ "$gitrmode" = "fetch" ]; then
					echo "fetching all remotes for ${item}..."
					git fetch --all
					echo -e "\n";

				elif [ "$gitrmode" = "pull" ]; then
					echo "pulling all remotes for ${item}..."
					git pull --all
					echo -e "\n";

				fi

			fi
			cd ..

		fi
	done
}

runGitCmd

if [ -d "js" ]; then
	cd js
	pwd
	runGitCmd
	cd ..
fi

if [ -d "lib" ]; then
	cd lib
	pwd
	runGitCmd
	cd ..
fi

unset -f runGitCmd
  • docs/git/gitr.1285356731.txt.gz
  • Last modified: 2010/09/24 13:32
  • by billh