[override] Explicitly warns user of 'override' feature.

'jiri override' feature is no longer recommended in normal Fuchsia
development. This change makes jiri print a warning when 'override'
is detected in manfiests.

Bug: 39636
Change-Id: I502d7118f8bae0a6f71e798e580c8ca5ed0c3380
diff --git a/cmd/jiri/override.go b/cmd/jiri/override.go
index 36a80e1..e623ef6 100644
--- a/cmd/jiri/override.go
+++ b/cmd/jiri/override.go
@@ -157,30 +157,20 @@
 		var importOverrides []project.Import
 		var deletedProjectOverrides []project.Project
 		var deletedImportOverrides []project.Import
-		if overrideFlags.importManifest != "" {
-			for _, p := range manifest.ImportOverrides {
-				if len(args) == 2 && p.Remote != args[1] {
-					importOverrides = append(importOverrides, p)
-					continue
-				}
-				if p.Name != name {
-					importOverrides = append(importOverrides, p)
-					continue
-				}
-				deletedImportOverrides = append(deletedImportOverrides, p)
+		for _, p := range manifest.ImportOverrides {
+			if overrideFlags.importManifest == "" || (len(args) == 2 && p.Remote != args[1]) || p.Name != name {
+				importOverrides = append(importOverrides, p)
+				continue
 			}
-		} else {
-			for _, p := range manifest.ProjectOverrides {
-				if len(args) == 2 && p.Remote != args[1] {
-					projectOverrides = append(projectOverrides, p)
-					continue
-				}
-				if p.Name != name {
-					projectOverrides = append(projectOverrides, p)
-					continue
-				}
-				deletedProjectOverrides = append(deletedProjectOverrides, p)
+			deletedImportOverrides = append(deletedImportOverrides, p)
+		}
+
+		for _, p := range manifest.ProjectOverrides {
+			if overrideFlags.importManifest != "" || (len(args) == 2 && p.Remote != args[1]) || p.Name != name {
+				projectOverrides = append(projectOverrides, p)
+				continue
 			}
+			deletedProjectOverrides = append(deletedProjectOverrides, p)
 		}
 
 		if len(deletedProjectOverrides)+len(deletedImportOverrides) > 1 {
diff --git a/project/manifest.go b/project/manifest.go
index 994b08a..a8de3ce 100644
--- a/project/manifest.go
+++ b/project/manifest.go
@@ -631,6 +631,29 @@
 	return LoadManifestFile(jirix, file, localProjects, false)
 }
 
+func (ld *loader) warnOverrides(jirix *jiri.X) {
+	if len(ld.ProjectOverrides) != 0 {
+		for _, v := range ld.ProjectOverrides {
+			revision := v.Revision
+			if revision == "" {
+				revision = "HEAD"
+			}
+			jirix.Logger.Warningf("Project %s(remote: %s) is overridden to revision %s, if this is not your intention, please run \"jiri override --delete %s %s\" to disable it.", v.Name, v.Remote, revision, v.Name, v.Remote)
+			jirix.OverrideWarned = true
+		}
+	}
+	if len(ld.ImportOverrides) != 0 {
+		for _, v := range ld.ImportOverrides {
+			revision := v.Revision
+			if revision == "" {
+				revision = "HEAD"
+			}
+			jirix.Logger.Warningf("Import %s(remote: %s) is overridden to revision %s, if this is not your intention, please run \"jiri override --import-manifest=%s --delete %s %s\" to disable it.", v.Name, v.Remote, revision, v.Manifest, v.Name, v.Remote)
+			jirix.OverrideWarned = true
+		}
+	}
+}
+
 func (ld *loader) enforceLocks(jirix *jiri.X) error {
 	enforceProjLocks := func(jirix *jiri.X) (err error) {
 		for _, v := range ld.Projects {
@@ -722,6 +745,9 @@
 			return nil, nil, nil, err
 		}
 	}
+	if !jirix.OverrideWarned {
+		ld.warnOverrides(jirix)
+	}
 	ld.GenerateGitAttributesForProjects(jirix)
 	return ld.Projects, ld.Hooks, ld.Packages, nil
 }
@@ -741,6 +767,9 @@
 			return nil, nil, nil, err
 		}
 	}
+	if !jirix.OverrideWarned {
+		ld.warnOverrides(jirix)
+	}
 	ld.GenerateGitAttributesForProjects(jirix)
 	return ld.Projects, ld.Hooks, ld.Packages, nil
 }
diff --git a/x.go b/x.go
index 157ab91..842c567 100644
--- a/x.go
+++ b/x.go
@@ -127,6 +127,7 @@
 	Attempts            uint
 	cleanupFuncs        []func()
 	AnalyticsSession    *analytics_util.AnalyticsSession
+	OverrideWarned      bool
 }
 
 func (jirix *X) IncrementFailures() {