]> ruderich.org/simon Gitweb - config/dotfiles.git/blob - sync.sh
sync.sh supports pushing to remotes.
[config/dotfiles.git] / sync.sh
1 #!/bin/sh
2
3 # Fetches the current master from all remotes. Used to sync with all remote
4 # hosts. No merging is done.
5
6
7 # Select the method, fetch and push is possible.
8 if [ x$1 = x -o x$1 = xfetch ]; then
9     method=fetch
10 elif [ x$1 = xpush ]; then
11     method=push
12 else
13     echo "Unsupported method '$1'. Only 'fetch' and 'push' is supported." >&2
14     exit 1
15 fi
16
17 # Fetch from/Push to each remote of each git subdirectory.
18 for project in `find . -name .git -type d`; do
19     if [ -d "$project" ]; then
20         pwd=`pwd`
21         cd "$project"
22
23         # Fetch from/Push to all remotes.
24         for remote in `git remote`; do
25             echo "$project: ${method}ing $remote ..."
26             git $method "$remote"
27         done
28
29         cd "$pwd"
30     fi
31 done