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

Unified Diff: gcl.py

Issue 125051: Fix gcl breakage. (Closed)
Patch Set: 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 9aee26812a31ce5a3fb96957ad07c9e376baf006..ea081236989d9ab77091b23d6f18e56dfb3a1fa7 100755
--- a/gcl.py
+++ b/gcl.py
@@ -265,6 +265,7 @@ class ChangeInfo(object):
description: the description.
files: a list of 2 tuple containing (status, filename) of changed files,
with paths being relative to the top repository directory.
+ local_root: Local root directory
"""
_SEPARATOR = "\n-----\n"
@@ -279,7 +280,7 @@ class ChangeInfo(object):
# _SEPARATOR\n
# description
- def __init__(self, name, issue, patchset, description, files):
+ def __init__(self, name, issue, patchset, description, files, local_root):
self.name = name
self.issue = int(issue)
self.patchset = int(patchset)
@@ -288,7 +289,7 @@ class ChangeInfo(object):
files = []
self._files = files
self.patch = None
- self._local_root = GetRepositoryRoot()
+ self._local_root = local_root
def GetFileNames(self):
"""Returns the list of file names included in this change."""
@@ -417,7 +418,7 @@ class ChangeInfo(object):
return False
@staticmethod
- def Load(changename, fail_on_not_found=True, update_status=False):
+ def Load(changename, local_root, fail_on_not_found, update_status):
"""Gets information about a changelist.
Args:
@@ -432,7 +433,7 @@ class ChangeInfo(object):
if not os.path.exists(info_file):
if fail_on_not_found:
ErrorExit("Changelist " + changename + " not found.")
- return ChangeInfo(changename, 0, 0, '', None)
+ return ChangeInfo(changename, 0, 0, '', None, local_root)
split_data = ReadFile(info_file).split(ChangeInfo._SEPARATOR, 2)
if len(split_data) != 3:
ErrorExit("Changelist file %s is corrupt" % info_file)
@@ -452,7 +453,7 @@ class ChangeInfo(object):
save = False
if update_status:
for file in files:
- filename = os.path.join(GetRepositoryRoot(), file[1])
+ filename = os.path.join(local_root, file[1])
status_result = gclient.CaptureSVNStatus(filename)
if not status_result or not status_result[0][0]:
# File has been reverted.
@@ -463,7 +464,8 @@ class ChangeInfo(object):
if status != file[0]:
save = True
files[files.index(file)] = (status, file[1])
- change_info = ChangeInfo(changename, issue, patchset, description, files)
+ change_info = ChangeInfo(changename, issue, patchset, description, files,
+ local_root)
if save:
change_info.Save()
return change_info
@@ -476,16 +478,18 @@ def GetChangelistInfoFile(changename):
return os.path.join(GetChangesDir(), changename)
-def LoadChangelistInfoForMultiple(changenames, fail_on_not_found=True,
- update_status=False):
+def LoadChangelistInfoForMultiple(changenames, local_root, fail_on_not_found,
+ update_status):
"""Loads many changes and merge their files list into one pseudo change.
This is mainly usefull to concatenate many changes into one for a 'gcl try'.
"""
changes = changenames.split(',')
- aggregate_change_info = ChangeInfo(changenames, 0, 0, '', None)
+ aggregate_change_info = ChangeInfo(changenames, 0, 0, '', None, local_root)
for change in changes:
- aggregate_change_info._files += ChangeInfo.Load(change, fail_on_not_found,
+ aggregate_change_info._files += ChangeInfo.Load(change,
+ local_root,
+ fail_on_not_found,
update_status).GetFiles()
return aggregate_change_info
@@ -528,7 +532,8 @@ def GetModifiedFiles():
# Get a list of all files in changelists.
files_in_cl = {}
for cl in GetCLs():
- change_info = ChangeInfo.Load(cl)
+ change_info = ChangeInfo.Load(cl, GetRepositoryRoot(),
+ fail_on_not_found=True, update_status=False)
for status, filename in change_info.GetFiles():
files_in_cl[filename] = change_info.name
@@ -597,7 +602,9 @@ def Opened():
for cl_name in cl_keys:
if cl_name:
note = ""
- if len(ChangeInfo.Load(cl_name).GetFiles()) != len(files[cl_name]):
+ change_info = ChangeInfo.Load(cl_name, GetRepositoryRoot(),
+ fail_on_not_found=True, update_status=False)
+ if len(change_info.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]:
@@ -1072,7 +1079,7 @@ def DoPresubmitChecks(change_info, committing, may_prompt):
def Changes():
"""Print all the changelists and their files."""
for cl in GetCLs():
- change_info = ChangeInfo.Load(cl, True, True)
+ change_info = ChangeInfo.Load(cl, GetRepositoryRoot(), True, True)
print "\n--- Changelist " + change_info.name + ":"
for file in change_info.GetFiles():
print "".join(file)
@@ -1146,9 +1153,11 @@ def main(argv=None):
# change didn't exist. All other commands require an existing change.
fail_on_not_found = command != "try" and command != "change"
if command == "try" and changename.find(',') != -1:
- change_info = LoadChangelistInfoForMultiple(changename, True, True)
+ change_info = LoadChangelistInfoForMultiple(changename, GetRepositoryRoot(),
+ True, True)
else:
- change_info = ChangeInfo.Load(changename, fail_on_not_found, True)
+ change_info = ChangeInfo.Load(changename, GetRepositoryRoot(),
+ fail_on_not_found, True)
if command == "change":
if (len(argv) == 4):
« 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