Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: gcl.py

Issue 93108: Fix gclient on posix platforms.... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/tools/depot_tools/
Patch Set: Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | gclient » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcl.py
===================================================================
--- gcl.py (revision 14399)
+++ gcl.py (working copy)
@@ -39,8 +39,8 @@
# Warning message when the change appears to be missing tests.
MISSING_TEST_MSG = "Change contains new or modified methods, but no new tests!"
-# Global cache of files cached in GetInfoDir().
-FILES_CACHE = {}
+# Caches whether we read the codereview.settings file yet or not.
+read_gcl_info = False
def IsSVNMoved(filename):
@@ -111,62 +111,44 @@
return gcl_info_dir
-def GetCachedFile(filename, max_age=60*60*24*3, use_root=False):
- """Retrieves a file from the repository and caches it in GetInfoDir() for
- max_age seconds.
-
- use_root: If False, look up the arborescence for the first match, otherwise go
- directory to the root repository.
- """
- global FILES_CACHE
- if filename not in FILES_CACHE:
- # Don't try to look up twice.
- FILES_CACHE[filename] = None
+def GetCodeReviewSetting(key):
+ """Returns a value for the given key for this repository."""
+ global read_gcl_info
+ if not read_gcl_info:
+ read_gcl_info = True
# First we check if we have a cached version.
- cached_file = os.path.join(GetInfoDir(), filename)
- if (not os.path.exists(cached_file) or
- os.stat(cached_file).st_mtime > max_age):
+ cached_settings_file = os.path.join(GetInfoDir(), CODEREVIEW_SETTINGS_FILE)
+ if (not os.path.exists(cached_settings_file) or
+ os.stat(cached_settings_file).st_mtime > 60*60*24*3):
dir_info = GetSVNFileInfo(".")
repo_root = dir_info["Repository Root"]
- if use_root:
- url_path = repo_root
- else:
- url_path = dir_info["URL"]
- content = ""
+ url_path = dir_info["URL"]
+ settings = ""
while True:
# Look for the codereview.settings file at the current level.
- svn_path = url_path + "/" + filename
- content, rc = RunShellWithReturnCode(["svn", "cat", svn_path])
+ svn_path = url_path + "/" + CODEREVIEW_SETTINGS_FILE
+ settings, rc = RunShellWithReturnCode(["svn", "cat", svn_path])
if not rc:
- # Exit the loop if the file was found. Override content.
+ # Exit the loop if the file was found.
break
# Make sure to mark settings as empty if not found.
- content = ""
+ settings = ""
if url_path == repo_root:
# Reached the root. Abandoning search.
- break
+ break;
# Go up one level to try again.
url_path = os.path.dirname(url_path)
+
# Write a cached version even if there isn't a file, so we don't try to
# fetch it each time.
- WriteFile(cached_file, content)
- else:
- content = ReadFile(cached_settings_file)
- FILES_CACHE[filename] = content
- return FILES_CACHE[filename]
+ WriteFile(cached_settings_file, settings)
-
-def GetCodeReviewSetting(key):
- """Returns a value for the given key for this repository."""
- # Use '__just_initialized' as a flag to determine if the settings were
- # already initialized.
- if '__just_initialized' not in CODEREVIEW_SETTINGS:
- for line in GetCachedFile(CODEREVIEW_SETTINGS_FILE).splitlines():
+ output = ReadFile(cached_settings_file)
+ for line in output.splitlines():
if not line or line.startswith("#"):
continue
k, v = line.split(": ", 1)
CODEREVIEW_SETTINGS[k] = v
- CODEREVIEW_SETTINGS.setdefault('__just_initialized', None)
return CODEREVIEW_SETTINGS.get(key, "")
@@ -601,7 +583,7 @@
[--send_mail] [--no_try] [--no_presubmit]
Uploads the changelist to the server for review.
- gcl commit change_name [--no_presubmit] [--force]
+ gcl commit change_name [--force]
Commits the changelist to the repository.
gcl lint change_name
@@ -1010,10 +992,7 @@
committing,
verbose=False,
output_stream=sys.stdout,
- input_stream=sys.stdin,
- default_presubmit=
- GetCachedFile('PRESUBMIT.py',
- use_root=True))
+ input_stream=sys.stdin)
if not result:
print "\nPresubmit errors, can't continue (use --no_presubmit to bypass)"
return result
« no previous file with comments | « no previous file | gclient » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698