submodule: add get_submodule_config helper funtion
authorW. Trevor King <wking@tremily.us>
Tue, 11 Dec 2012 18:58:15 +0000 (13:58 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 12 Dec 2012 05:46:49 +0000 (21:46 -0800)
Several submodule configuration variables
(e.g. fetchRecurseSubmodules) are read from .gitmodules with local
overrides from the usual git config files.  This shell function mimics
that logic to help initialize configuration variables in
git-submodule.sh.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-submodule.sh

index 2365149d0b920ece4d076dafbebf23fef6888df1..263a60c4f42b2951012d94f13fd16fe974ac6e99 100755 (executable)
@@ -152,6 +152,32 @@ die_if_unmatched ()
        fi
 }
 
+#
+# Print a submodule configuration setting
+#
+# $1 = submodule name
+# $2 = option name
+# $3 = default value
+#
+# Checks in the usual git-config places first (for overrides),
+# otherwise it falls back on .gitmodules.  This allows you to
+# distribute project-wide defaults in .gitmodules, while still
+# customizing individual repositories if necessary.  If the option is
+# not in .gitmodules either, print a default value.
+#
+get_submodule_config () {
+       name="$1"
+       option="$2"
+       default="$3"
+       value=$(git config submodule."$name"."$option")
+       if test -z "$value"
+       then
+               value=$(git config -f .gitmodules submodule."$name"."$option")
+       fi
+       printf '%s' "${value:-$default}"
+}
+
+
 #
 # Map submodule path to submodule name
 #