| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 56d86f2f024fc616369c2404ed81bcac1cab4d6f..d037e39e68c197b75e843df0dd8c35f12a44f48c 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -622,47 +622,43 @@ def GetCodereviewSettingsInteractively():
|
|
|
| class ChangeDescription(object):
|
| """Contains a parsed form of the change description."""
|
| - def __init__(self, subject, log_desc, reviewers):
|
| - self.subject = subject
|
| + def __init__(self, log_desc, reviewers):
|
| self.log_desc = log_desc
|
| self.reviewers = reviewers
|
| self.description = self.log_desc
|
|
|
| - def Update(self):
|
| - initial_text = """# Enter a description of the change.
|
| + def Prompt(self):
|
| + content = """# Enter a description of the change.
|
| # This will displayed on the codereview site.
|
| # The first line will also be used as the subject of the review.
|
| """
|
| - initial_text += self.description
|
| + content += self.description
|
| if ('\nR=' not in self.description and
|
| '\nTBR=' not in self.description and
|
| self.reviewers):
|
| - initial_text += '\nR=' + self.reviewers
|
| + content += '\nR=' + self.reviewers
|
| if '\nBUG=' not in self.description:
|
| - initial_text += '\nBUG='
|
| + content += '\nBUG='
|
| if '\nTEST=' not in self.description:
|
| - initial_text += '\nTEST='
|
| - initial_text = initial_text.rstrip('\n') + '\n'
|
| - content = gclient_utils.RunEditor(initial_text, True)
|
| + content += '\nTEST='
|
| + content = content.rstrip('\n') + '\n'
|
| + content = gclient_utils.RunEditor(content, True)
|
| if not content:
|
| DieWithError('Running editor failed')
|
| content = re.compile(r'^#.*$', re.MULTILINE).sub('', content).strip()
|
| - if not content:
|
| + if not content.strip():
|
| DieWithError('No CL description, aborting')
|
| - self.ParseDescription(content)
|
| + self.description = content
|
|
|
| - def ParseDescription(self, description):
|
| + def ParseDescription(self):
|
| """Updates the list of reviewers and subject from the description."""
|
| - if not description:
|
| - self.description = description
|
| - return
|
| -
|
| - self.description = description.strip('\n') + '\n'
|
| - self.subject = description.split('\n', 1)[0]
|
| + self.description = self.description.strip('\n') + '\n'
|
| # Retrieves all reviewer lines
|
| regexp = re.compile(r'^\s*(TBR|R)=(.+)$', re.MULTILINE)
|
| - self.reviewers = ','.join(
|
| + reviewers = ','.join(
|
| i.group(2).strip() for i in regexp.finditer(self.description))
|
| + if reviewers:
|
| + self.reviewers = reviewers
|
|
|
| def IsEmpty(self):
|
| return not self.description
|
| @@ -864,12 +860,11 @@ def GerritUpload(options, args, cl):
|
| if options.target_branch:
|
| branch = options.target_branch
|
|
|
| - log_desc = CreateDescriptionFromLog(args)
|
| + log_desc = options.message or CreateDescriptionFromLog(args)
|
| if options.reviewers:
|
| log_desc += '\nR=' + options.reviewers
|
| - change_desc = ChangeDescription(options.message, log_desc,
|
| - options.reviewers)
|
| - change_desc.ParseDescription(log_desc)
|
| + change_desc = ChangeDescription(log_desc, options.reviewers)
|
| + change_desc.ParseDescription()
|
| if change_desc.IsEmpty():
|
| print "Description is empty; aborting."
|
| return 1
|
| @@ -902,9 +897,6 @@ def RietveldUpload(options, args, cl):
|
| upload_args.extend(['--server', cl.GetRietveldServer()])
|
| if options.emulate_svn_auto_props:
|
| upload_args.append('--emulate_svn_auto_props')
|
| - if options.from_logs and not options.message:
|
| - print 'Must set message for subject line if using desc_from_logs'
|
| - return 1
|
|
|
| change_desc = None
|
|
|
| @@ -915,18 +907,17 @@ def RietveldUpload(options, args, cl):
|
| print ("This branch is associated with issue %s. "
|
| "Adding patch to that issue." % cl.GetIssue())
|
| else:
|
| - log_desc = CreateDescriptionFromLog(args)
|
| - change_desc = ChangeDescription(options.message, log_desc,
|
| - options.reviewers)
|
| - if not options.from_logs:
|
| - change_desc.Update()
|
| + message = options.message or CreateDescriptionFromLog(args)
|
| + change_desc = ChangeDescription(message, options.reviewers)
|
| + if not options.force:
|
| + change_desc.Prompt()
|
| + change_desc.ParseDescription()
|
|
|
| if change_desc.IsEmpty():
|
| print "Description is empty; aborting."
|
| return 1
|
|
|
| - upload_args.extend(['--message', change_desc.subject])
|
| - upload_args.extend(['--description', change_desc.description])
|
| + upload_args.extend(['--message', change_desc.description])
|
| if change_desc.reviewers:
|
| upload_args.extend(['--reviewers', change_desc.reviewers])
|
| if options.send_mail:
|
|
|