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

Unified Diff: gcl.py

Issue 4106011: Refactor ChangeInfo.Load() to make it possible to switch to a new format more easily. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 10 years, 2 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 | no next file » | 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 04c62b73c01b6bee2ab84db804db368fdd555a59..4c1e28448eccc6063830ae0661fd516a49e1215b 100755
--- a/gcl.py
+++ b/gcl.py
@@ -442,30 +442,16 @@ class ChangeInfo(object):
ErrorExit("Changelist " + changename + " not found.")
return ChangeInfo(changename, 0, 0, '', None, local_root,
needs_upload=False)
- split_data = gclient_utils.FileRead(info_file, 'r').split(
- ChangeInfo._SEPARATOR, 2)
- if len(split_data) != 3:
+ content = gclient_utils.FileRead(info_file, 'r')
+ save = False
+ try:
+ values = ChangeInfo._LoadOldFormat(content)
+ except ValueError:
ErrorExit(
('Changelist file %s is corrupt.\n'
'Either run "gcl delete %s" or manually edit the file') % (
info_file, changename))
- items = split_data[0].split(', ')
- issue = 0
- patchset = 0
- needs_upload = False
- if items[0]:
- issue = int(items[0])
- if len(items) > 1:
- patchset = int(items[1])
- if len(items) > 2:
- needs_upload = (items[2] == "dirty")
- files = []
- for line in split_data[1].splitlines():
- status = line[:7]
- filename = line[7:]
- files.append((status, filename))
- description = split_data[2]
- save = False
+ files = values['files']
if update_status:
for item in files[:]:
filename = os.path.join(local_root, item[1])
@@ -479,12 +465,38 @@ class ChangeInfo(object):
if status != item[0]:
save = True
files[files.index(item)] = (status, item[1])
- change_info = ChangeInfo(changename, issue, patchset, description, files,
- local_root, needs_upload)
+ change_info = ChangeInfo(changename, values['issue'], values['patchset'],
+ values['description'], files,
+ local_root, values['needs_upload'])
if save:
change_info.Save()
return change_info
+ @staticmethod
+ def _LoadOldFormat(content):
+ split_data = content.split(ChangeInfo._SEPARATOR, 2)
+ if len(split_data) != 3:
+ raise ValueError('Bad change format')
+ values = {
+ 'issue': 0,
+ 'patchset': 0,
+ 'needs_upload': False,
+ 'files': [],
+ }
+ items = split_data[0].split(', ')
+ if items[0]:
+ values['issue'] = int(items[0])
+ if len(items) > 1:
+ values['patchset'] = int(items[1])
+ if len(items) > 2:
+ values['needs_upload'] = (items[2] == "dirty")
+ for line in split_data[1].splitlines():
+ status = line[:7]
+ filename = line[7:]
+ values['files'].append((status, filename))
+ values['description'] = split_data[2]
+ return values
+
def GetChangelistInfoFile(changename):
"""Returns the file that stores information about a changelist."""
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698