# Allows fetching (no merge) and pushing at the moment.
-# Select the method, fetch and push is possible.
+# Select the method: fetch, push and status is possible.
if [ x$1 = x -o x$1 = xfetch -o x$1 = xfe ]; then
method=fetch
elif [ $1 = push -o $1 = pu ]; then
method=push
+elif [ $1 = status -o $1 = st ]; then
+ method=status
else
- echo "Usage: sync.sh [fetch | fe | push | pu ]"
+ echo "Usage: sync.sh [fetch | fe | push | pu | status | st]"
echo
echo "fetch: Fetch from all remotes."
echo "push: Push to all remotes."
+ echo "status: Display status for all git repositories."
exit 1
fi
-# Fetch from/Push to each remote of each git subdirectory.
+# Execute the given method for each git subdirectory.
for project in `find . -name .git -type d`; do
pwd=`pwd`
cd "$project"
+ # Display all commits not in the master branch.
+ if [ $method = status ]; then
+ echo "$project status"
+ git log --graph --all --pretty=oneline master..
# Fetch from/Push to all remotes.
- for remote in `git remote`; do
- echo "$project: ${method}ing $remote ..."
- git $method "$remote"
- done
+ else
+ for remote in `git remote`; do
+ echo "$project: ${method}ing $remote ..."
+ git $method "$remote"
+ done
+ fi
cd "$pwd"
done