#!/bin/sh
-# Fetches the current master from all remotes. Used to sync with all remote
-# hosts. No merging is done.
+# Syncs with remote hosts in the git (sub)directories.
+#
+# Allows fetching (no merge) and pushing at the moment.
# Select the method, fetch and push is possible.
-if [ x$1 = x -o x$1 = xfetch ]; then
+if [ x$1 = x -o x$1 = xfetch -o x$1 = xfe ]; then
method=fetch
-elif [ x$1 = xpush ]; then
+elif [ $1 = push -o $1 = pu ]; then
method=push
else
- echo "Unsupported method '$1'. Only 'fetch' and 'push' is supported." >&2
+ echo "Usage: sync.sh [fetch | fe | push | pu ]"
+ echo
+ echo "fetch: Fetch from all remotes."
+ echo "push: Push to all remotes."
exit 1
fi
# Fetch from/Push to each remote of each git subdirectory.
for project in `find . -name .git -type d`; do
- if [ -d "$project" ]; then
- pwd=`pwd`
- cd "$project"
+ pwd=`pwd`
+ cd "$project"
- # Fetch from/Push to all remotes.
- for remote in `git remote`; do
- echo "$project: ${method}ing $remote ..."
- git $method "$remote"
- done
+ # Fetch from/Push to all remotes.
+ for remote in `git remote`; do
+ echo "$project: ${method}ing $remote ..."
+ git $method "$remote"
+ done
- cd "$pwd"
- fi
+ cd "$pwd"
done