Reland: 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 reading from git config
without running 'jiri init' and prints a note to users if submodules are
enabled.
If users do not have gitcore config rolled out, the git config will
fail. Add a check for errors.

Bug: b/253329946
Change-Id: I4c6818e2e1cea2518c9b8940a143c7f7e9ed19ae
Reviewed-on: https://fuchsia-review.googlesource.com/c/jiri/+/868676
Commit-Queue: Yuping Zhai <yupingz@google.com>
Reviewed-by: Nathan Mulcahey <nmulcahey@google.com>
diff --git a/cmd/jiri/init.go b/cmd/jiri/init.go
index dda58d2..2e8c845 100644
--- a/cmd/jiri/init.go
+++ b/cmd/jiri/init.go
@@ -164,8 +164,7 @@
 		}
 	}
 
-	gitConfigSubm, err := jiri.GitGetConfig("jiri.enableSubmodules")
-	if len(gitConfigSubm) != 0 {
+	if gitConfigSubm, err := jiri.GitGetConfig("jiri.enableSubmodules"); err == nil {
 		if _, err := strconv.ParseBool(gitConfigSubm); err != nil {
 			return fmt.Errorf("'jiri.enableSubmodules' from git config should be true or false")
 		}
diff --git a/x.go b/x.go
index 7b10e8f..0e82b7d 100644
--- a/x.go
+++ b/x.go
@@ -288,7 +288,18 @@
 		x.RewriteSsoToHttps = x.config.RewriteSsoToHttps
 		x.SsoCookiePath = x.config.SsoCookiePath
 		if x.config.EnableSubmodules == "" {
-			x.EnableSubmodules = false
+			if gitConfigSubm, err := GitGetConfig("jiri.enableSubmodules"); err == nil {
+				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")