summaryrefslogtreecommitdiff
path: root/scripts/git-submodule.sh
blob: d8fbc7e47e0c64a802ae7871fa18e81a6e458b9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh
#
# This code is licensed under the GPL version 2 or later.  See
# the COPYING file in the top-level directory.

set -e

substat=".git-submodule-status"

command=$1
shift
modules="$@"

if test -z "$modules"
then
    test -e $substat || touch $substat
    exit 0
fi

if ! test -e ".git"
then
    echo "$0: unexpectedly called with submodules but no git checkout exists"
    exit 1
fi

case "$command" in
status)
    test -f "$substat" || exit 1
    trap "rm -f ${substat}.tmp" EXIT
    git submodule status $modules > "${substat}.tmp"
    diff "${substat}" "${substat}.tmp" >/dev/null
    exit $?
    ;;
update)
    git submodule update --init $modules 1>/dev/null 2>&1
    git submodule status $modules > "${substat}"
    ;;
esac