| Index: crup-runner.sh
|
| ===================================================================
|
| --- crup-runner.sh (revision 174277)
|
| +++ crup-runner.sh (working copy)
|
| @@ -9,13 +9,39 @@
|
| cd "$solution"
|
| if [ "$solution" = "$1" ]; then
|
| shift
|
| - $@ | sed "s/^/[$solution] /g" 1>&2
|
| + # Don't "pull" if checkout is not on a named branch
|
| + if test "$2" = "pull" && ( ! git symbolic-ref HEAD >/dev/null 2>/dev/null ); then
|
| + first_args="$1 fetch"
|
| + else
|
| + first_args="$1 $2"
|
| + fi
|
| + shift 2
|
| + $first_args $@ | sed "s/^/[$solution] /g" 1>&2
|
| if [ $? -ne 0 ]; then
|
| exit $?
|
| fi
|
| "$GIT_EXE" submodule --quiet sync
|
| "$GIT_EXE" ls-files -s | grep ^160000 | awk '{print $4}' |
|
| - sed "s/^/$solution\//g"
|
| + while read submod; do
|
| + # Check whether this submodule should be ignored or updated.
|
| + # If it's a new submodule, match the os specified in .gitmodules against
|
| + # the os specified in .git/config.
|
| + update_policy=$(git config "submodule.$submod.update" 2>/dev/null)
|
| + if [ -z "$update_policy" ]; then
|
| + target_os=$(git config target.os 2>/dev/null)
|
| + submod_os=$(git config -f .gitmodules "submodule.$submod.os" 2>/dev/null)
|
| + if [ -n "$target_os" -a -n "$submod_os" ] &&
|
| + [ "$submod_os" != "all" -a "$submod_os" != "$target_os" ]; then
|
| + update_policy=none
|
| + else
|
| + update_policy=checkout
|
| + fi
|
| + git config "submodule.$submod.update" $update_policy 2>/dev/null
|
| + fi
|
| + if [ "$update_policy" != "none" ]; then
|
| + echo "$solution/$submod"
|
| + fi
|
| + done
|
| status=$?
|
| else
|
| submodule="${1#*/}"
|
|
|