Warn when fsmonitor is enabled and git submodules are used

Change-Id: I181bf180f762282d5b4bc614d12a91125f56e063
Bug: 1475405
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4814429
Auto-Submit: Aravind Vasudevan <aravindvasudev@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Commit-Queue: Aravind Vasudevan <aravindvasudev@google.com>
Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
diff --git a/git_common.py b/git_common.py
index 4add178..3079b02 100644
--- a/git_common.py
+++ b/git_common.py
@@ -11,6 +11,9 @@
 
 from multiprocessing.pool import IMapIterator
 
+from third_party import colorama
+
+
 def wrapper(func):
   def wrap(self, timeout=None):
     default_timeout = (1 << 31 if sys.version_info.major == 2 else
@@ -410,6 +413,27 @@
   return run('config', '--get-regexp', pattern).splitlines()
 
 
+def is_fsmonitor_enabled():
+  """Returns true if core.fsmonitor is enabled in git config."""
+  fsmonitor = get_config('core.fsmonitor', 'False')
+  return fsmonitor.strip().lower() == 'true'
+
+
+def warn_submodule():
+  """Print warnings for submodules."""
+  # TODO(crbug.com/1475405): Warn users if the project uses submodules and
+  # they have fsmonitor enabled.
+  if is_fsmonitor_enabled():
+    print(colorama.Fore.RED)
+    print('WARNING: You have fsmonitor enabled. There is a major issue '
+          'resulting in git diff-index returning wrong results. Please '
+          'disable it by running:')
+    print('    git config --global core.fsmonitor false')
+    print('We will remove this warning once https://crbug.com/1475405 is '
+          'fixed.')
+    print(colorama.Style.RESET_ALL)
+
+
 def current_branch():
   try:
     return run('rev-parse', '--abbrev-ref', 'HEAD')