| 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."""
|
|
|