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

Unified Diff: gcl.py

Issue 119442: A step closer to make presubmit SCM independent. (Closed)
Patch Set: oops Created 11 years, 6 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 | presubmit_support.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcl.py
diff --git a/gcl.py b/gcl.py
index 7170032c2d0e75b9c6440013e003d4013c82d083..ff86212e2e256db2b9d511f2dc90c89c5a098cdc 100755
--- a/gcl.py
+++ b/gcl.py
@@ -286,26 +286,36 @@ class ChangeInfo(object):
self.description = description
if files is None:
files = []
- self.files = files
+ self._files = files
self.patch = None
+ self._local_root = GetRepositoryRoot()
- def FileList(self):
- """Returns a list of files."""
- return [file[1] for file in self.files]
+ def GetFileNames(self):
+ """Returns the list of file names included in this change."""
+ return [file[1] for file in self._files]
+
+ def GetFiles(self):
+ """Returns the list of files included in this change with their status."""
+ return self._files
+
+ def GetLocalRoot(self):
+ """Returns the local repository checkout root directory."""
+ return self._local_root
def _NonDeletedFileList(self):
"""Returns a list of files in this change, not including deleted files."""
- return [file[1] for file in self.files if not file[0].startswith("D")]
+ return [file[1] for file in self.GetFiles()
+ if not file[0].startswith("D")]
def _AddedFileList(self):
"""Returns a list of files added in this change."""
- return [file[1] for file in self.files if file[0].startswith("A")]
+ return [file[1] for file in self.GetFiles() if file[0].startswith("A")]
def Save(self):
"""Writes the changelist information to disk."""
data = ChangeInfo._SEPARATOR.join([
"%d, %d" % (self.issue, self.patchset),
- "\n".join([f[0] + f[1] for f in self.files]),
+ "\n".join([f[0] + f[1] for f in self.GetFiles()]),
self.description])
WriteFile(GetChangelistInfoFile(self.name), data)
@@ -377,7 +387,7 @@ class ChangeInfo(object):
# apart from source and headers; besides, we'll want them all if we're
# uploading anyway.
if self.patch is None:
- self.patch = GenerateDiff(self.FileList())
+ self.patch = GenerateDiff(self.GetFileNames())
definition = ""
for line in self.patch.splitlines():
@@ -475,8 +485,8 @@ def LoadChangelistInfoForMultiple(changenames, fail_on_not_found=True,
changes = changenames.split(',')
aggregate_change_info = ChangeInfo(changenames, 0, 0, '', None)
for change in changes:
- aggregate_change_info.files += ChangeInfo.Load(change, fail_on_not_found,
- update_status).files
+ aggregate_change_info._files += ChangeInfo.Load(change, fail_on_not_found,
+ update_status).GetFiles()
return aggregate_change_info
@@ -519,7 +529,7 @@ def GetModifiedFiles():
files_in_cl = {}
for cl in GetCLs():
change_info = ChangeInfo.Load(cl)
- for status, filename in change_info.files:
+ for status, filename in change_info.GetFiles():
files_in_cl[filename] = change_info.name
# Get all the modified files.
@@ -587,7 +597,7 @@ def Opened():
for cl_name in cl_keys:
if cl_name:
note = ""
- if len(ChangeInfo.Load(cl_name).files) != len(files[cl_name]):
+ if len(ChangeInfo.Load(cl_name).GetFiles()) != len(files[cl_name]):
note = " (Note: this changelist contains files outside this directory)"
print "\n--- Changelist " + cl_name + note + ":"
for file in files[cl_name]:
@@ -733,7 +743,7 @@ def OptionallyDoPresubmitChecks(change_info, committing, args):
def UploadCL(change_info, args):
- if not change_info.FileList():
+ if not change_info.GetFiles():
print "Nothing to upload, changelist is empty."
return
if not OptionallyDoPresubmitChecks(change_info, False, args):
@@ -782,7 +792,7 @@ def UploadCL(change_info, args):
# http://dev.chromium.org/developers/contributing-code/watchlists
if not no_watchlists:
import watchlists
- watchlist = watchlists.Watchlists(GetRepositoryRoot())
+ watchlist = watchlists.Watchlists(change_info.GetLocalRoot())
watchers = watchlist.GetWatchersForPaths(change_info.FileList())
cc_list = GetCodeReviewSetting("CC_LIST")
@@ -805,13 +815,13 @@ def UploadCL(change_info, args):
# Change the current working directory before calling upload.py so that it
# shows the correct base.
previous_cwd = os.getcwd()
- os.chdir(GetRepositoryRoot())
+ os.chdir(change_info.GetLocalRoot())
# If we have a lot of files with long paths, then we won't be able to fit
# the command to "svn diff". Instead, we generate the diff manually for
# each file and concatenate them before passing it to upload.py.
if change_info.patch is None:
- change_info.patch = GenerateDiff(change_info.FileList())
+ change_info.patch = GenerateDiff(change_info.GetFileNames())
issue, patchset = upload.RealMain(upload_arg, change_info.patch)
if issue and patchset:
change_info.issue = int(issue)
@@ -839,7 +849,7 @@ def UploadCL(change_info, args):
def PresubmitCL(change_info):
"""Reports what presubmit checks on the change would report."""
- if not change_info.FileList():
+ if not change_info.GetFiles():
print "Nothing to presubmit check, changelist is empty."
return
@@ -867,7 +877,7 @@ def TryChange(change_info, args, swallow_exception):
trychange_args.extend(["--patchset", str(change_info.patchset)])
trychange_args.extend(args)
trychange.TryChange(trychange_args,
- file_list=change_info.FileList(),
+ file_list=change_info.GetFileNames(),
swallow_exception=swallow_exception,
prog='gcl try')
else:
@@ -878,7 +888,7 @@ def TryChange(change_info, args, swallow_exception):
def Commit(change_info, args):
- if not change_info.FileList():
+ if not change_info.GetFiles():
print "Nothing to commit, changelist is empty."
return
if not OptionallyDoPresubmitChecks(change_info, True, args):
@@ -908,14 +918,14 @@ def Commit(change_info, args):
os.close(handle)
handle, targets_filename = tempfile.mkstemp(text=True)
- os.write(handle, "\n".join(change_info.FileList()))
+ os.write(handle, "\n".join(change_info.GetFileNames()))
os.close(handle)
commit_cmd += ['--file=' + commit_filename]
commit_cmd += ['--targets=' + targets_filename]
# Change the current working directory before calling commit.
previous_cwd = os.getcwd()
- os.chdir(GetRepositoryRoot())
+ os.chdir(change_info.GetLocalRoot())
output = RunShell(commit_cmd, True)
os.remove(commit_filename)
os.remove(targets_filename)
@@ -961,11 +971,12 @@ def Change(change_info, override_description):
unaffected_files = filter(lambda x: not file_re.match(x[0]), other_files)
separator1 = ("\n---All lines above this line become the description.\n"
- "---Repository Root: " + GetRepositoryRoot() + "\n"
+ "---Repository Root: " + change_info.GetLocalRoot() + "\n"
"---Paths in this changelist (" + change_info.name + "):\n")
separator2 = "\n\n---Paths modified but not in any changelist:\n\n"
text = (description + separator1 + '\n' +
- '\n'.join([f[0] + f[1] for f in change_info.files]) + separator2 +
+ '\n'.join([f[0] + f[1] for f in change_info.GetFiles()]) +
+ separator2 +
'\n'.join([f[0] + f[1] for f in affected_files]) + '\n' +
'\n'.join([f[0] + f[1] for f in unaffected_files]) + '\n')
@@ -1002,7 +1013,7 @@ def Change(change_info, override_description):
status = line[:7]
file = line[7:]
new_cl_files.append((status, file))
- change_info.files = new_cl_files
+ change_info._files = new_cl_files
change_info.Save()
print change_info.name + " changelist saved."
@@ -1025,10 +1036,10 @@ def Lint(change_info, args):
# Change the current working directory before calling lint so that it
# shows the correct base.
previous_cwd = os.getcwd()
- os.chdir(GetRepositoryRoot())
+ os.chdir(change_info.GetLocalRoot())
# Process cpplints arguments if any.
- filenames = cpplint.ParseArguments(args + change_info.FileList())
+ filenames = cpplint.ParseArguments(args + change_info.GetFileNames())
for file in filenames:
if len([file for suffix in CPP_EXTENSIONS if file.endswith(suffix)]):
@@ -1063,7 +1074,7 @@ def Changes():
for cl in GetCLs():
change_info = ChangeInfo.Load(cl, True, True)
print "\n--- Changelist " + change_info.name + ":"
- for file in change_info.files:
+ for file in change_info.GetFiles():
print "".join(file)
@@ -1159,7 +1170,7 @@ def main(argv=None):
elif command == "try":
# When the change contains no file, send the "changename" positional
# argument to trychange.py.
- if change_info.files:
+ if change_info.GetFiles():
args = argv[3:]
else:
change_info = None
@@ -1170,7 +1181,7 @@ def main(argv=None):
# the files. This allows commands such as 'gcl diff xxx' to work.
args =["svn", command]
root = GetRepositoryRoot()
- args.extend([os.path.join(root, x) for x in change_info.FileList()])
+ args.extend([os.path.join(root, x) for x in change_info.GetFileNames()])
RunShell(args, True)
return 0
« no previous file with comments | « no previous file | presubmit_support.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698