From 2a229719c26bbf2cbc65c91b372ea03c6bef3b9c Mon Sep 17 00:00:00 2001 From: Aleksey Khoroshilov Date: Thu, 2 Jun 2022 16:24:11 +0000 Subject: [PATCH] Improve codereview.settings file lookup. Remove unnecessary os.listdir call and fix infinite loop on Windows if no file was found in a tree. Change-Id: I82a8763e807bbc0ce6fcae6b35a370ffe3b34943 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3687234 Reviewed-by: Josip Sokcevic Commit-Queue: Josip Sokcevic Auto-Submit: Aleksey Khoroshilov --- git_cl.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/git_cl.py b/git_cl.py index 806dad2c19..c22c68221b 100755 --- a/git_cl.py +++ b/git_cl.py @@ -3003,14 +3003,18 @@ def FindCodereviewSettingsFile(filename='codereview.settings'): cwd = os.getcwd() root = settings.GetRoot() if os.path.isfile(os.path.join(root, inherit_ok_file)): - root = '/' + root = None while True: - if filename in os.listdir(cwd): - if os.path.isfile(os.path.join(cwd, filename)): - return open(os.path.join(cwd, filename)) + if os.path.isfile(os.path.join(cwd, filename)): + return open(os.path.join(cwd, filename)) if cwd == root: break - cwd = os.path.dirname(cwd) + parent_dir = os.path.dirname(cwd) + if parent_dir == cwd: + # We hit the system root directory. + break + cwd = parent_dir + return None def LoadCodereviewSettingsFromFile(fileobj):