jiri overrides enableSubmodules from git config when not set locally

Currently, users need to run 'jiri init' before 'jiri update' to pick up
the submodule git config changes. This change adds read of git config
without running 'jiri init' and prints a note to users if submodules are
enabled.

bug: b/253329946
Change-Id: I531b93e276b8edbe06f848f844ca58858db6deb5
Reviewed-on: https://fuchsia-review.googlesource.com/c/jiri/+/868198
Reviewed-by: Nathan Mulcahey <nmulcahey@google.com>
Commit-Queue: Yuping Zhai <yupingz@google.com>
diff --git a/x.go b/x.go
index 7b10e8f..bfa1cae 100644
--- a/x.go
+++ b/x.go
@@ -288,7 +288,22 @@
 		x.RewriteSsoToHttps = x.config.RewriteSsoToHttps
 		x.SsoCookiePath = x.config.SsoCookiePath
 		if x.config.EnableSubmodules == "" {
-			x.EnableSubmodules = false
+			gitConfigSubm, err := GitGetConfig("jiri.enableSubmodules")
+			if err != nil {
+				return nil, fmt.Errorf("error reading git config for jiri.enableSubmodules")
+			}
+			if len(gitConfigSubm) != 0 {
+				gitConfigEnableSubm, err := strconv.ParseBool(gitConfigSubm)
+				if err != nil {
+					return nil, fmt.Errorf("jiri.enableSubmodules from git config should be true or false")
+				}
+				x.EnableSubmodules = gitConfigEnableSubm
+				if gitConfigEnableSubm {
+					fmt.Printf("Note: currently enabling submodules in this checkout \n")
+				}
+			} else {
+				x.EnableSubmodules = false
+			}
 		} else {
 			if val, err := strconv.ParseBool(x.config.EnableSubmodules); err != nil {
 				return nil, fmt.Errorf("'config>enableSubmodules' flag should be true or false")