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')