Index: gcl.py |
diff --git a/gcl.py b/gcl.py |
index c85519f2e0dbad8712467d585cbea85add6ab106..10e4b9ff6393c6cb3899d2e79ef7cf940883ad8a 100755 |
--- a/gcl.py |
+++ b/gcl.py |
@@ -39,10 +39,7 @@ import breakpad # pylint: disable=W0611 |
# gcl now depends on gclient. |
from scm import SVN |
- |
import gclient_utils |
-import owners |
-import presubmit_support |
__version__ = '1.2' |
@@ -73,7 +70,6 @@ FILES_CACHE = {} |
DEFAULT_LINT_REGEX = r"(.*\.cpp|.*\.cc|.*\.h)" |
DEFAULT_LINT_IGNORE_REGEX = r"$^" |
-REVIEWERS_REGEX = r'\s*R=(.+)' |
def CheckHomeForFile(filename): |
"""Checks the users home dir for the existence of the given file. Returns |
@@ -290,10 +286,7 @@ class ChangeInfo(object): |
self.name = name |
self.issue = int(issue) |
self.patchset = int(patchset) |
- self._description = None |
- self._subject = None |
- self._reviewers = None |
- self._set_description(description) |
+ self.description = description |
if files is None: |
files = [] |
self._files = files |
@@ -305,44 +298,6 @@ class ChangeInfo(object): |
# Set the default value. |
self.rietveld = GetCodeReviewSetting('CODE_REVIEW_SERVER') |
- def _get_description(self): |
- return self._description |
- |
- def _set_description(self, description): |
- # TODO(dpranke): Cloned from git_cl.py. These should be shared. |
- if not description: |
- self._description = description |
- return |
- |
- parsed_lines = [] |
- reviewers_re = re.compile(REVIEWERS_REGEX) |
- reviewers = '' |
- subject = '' |
- for l in description.splitlines(): |
- if not subject: |
- subject = l |
- matched_reviewers = reviewers_re.match(l) |
- if matched_reviewers: |
- reviewers = matched_reviewers.group(1) |
- parsed_lines.append(l) |
- |
- if len(subject) > 100: |
- subject = subject[:97] + '...' |
- |
- self._subject = subject |
- self._reviewers = reviewers |
- self._description = '\n'.join(parsed_lines) |
- |
- description = property(_get_description, _set_description) |
- |
- @property |
- def reviewers(self): |
- return self._reviewers |
- |
- @property |
- def subject(self): |
- return self._subject |
- |
def NeedsUpload(self): |
return self.needs_upload |
@@ -759,16 +714,10 @@ def GenerateDiff(files, root=None): |
def OptionallyDoPresubmitChecks(change_info, committing, args): |
if FilterFlag(args, "--no_presubmit") or FilterFlag(args, "--force"): |
- return presubmit_support.PresubmitOutput() |
+ return True |
return DoPresubmitChecks(change_info, committing, True) |
-def suggest_reviewers(change_info, affected_files): |
- owners_db = owners.Database(change_info.GetLocalRoot(), fopen=file, |
- os_path=os.path) |
- return owners_db.reviewers_for(affected_files) |
- |
- |
def defer_attributes(a, b): |
"""Copy attributes from an object (like a function) to another.""" |
for x in dir(a): |
@@ -848,9 +797,7 @@ def CMDupload(change_info, args): |
if not change_info.GetFiles(): |
print "Nothing to upload, changelist is empty." |
return 0 |
- |
- output = OptionallyDoPresubmitChecks(change_info, False, args) |
- if not output.should_continue(): |
+ if not OptionallyDoPresubmitChecks(change_info, False, args): |
return 1 |
no_watchlists = (FilterFlag(args, "--no_watchlists") or |
FilterFlag(args, "--no-watchlists")) |
@@ -861,13 +808,6 @@ def CMDupload(change_info, args): |
upload_arg = ["upload.py", "-y"] |
upload_arg.append("--server=%s" % change_info.rietveld) |
- |
- reviewers = change_info.reviewers or output.reviewers |
- if (reviewers and |
- not any(arg.startswith('-r') or arg.startswith('--reviewer') for |
- arg in args)): |
- upload_arg.append('--reviewers=%s' % ','.join(reviewers)) |
- |
upload_arg.extend(args) |
desc_file = "" |
@@ -901,8 +841,15 @@ def CMDupload(change_info, args): |
if cc_list: |
upload_arg.append("--cc=" + cc_list) |
upload_arg.append("--description_file=" + desc_file + "") |
- if change_info.subject: |
- upload_arg.append("--message=" + change_info.subject) |
+ if change_info.description: |
+ subject = change_info.description[:77] |
+ if subject.find("\r\n") != -1: |
+ subject = subject[:subject.find("\r\n")] |
+ if subject.find("\n") != -1: |
+ subject = subject[:subject.find("\n")] |
+ if len(change_info.description) > 77: |
+ subject = subject + "..." |
+ upload_arg.append("--message=" + subject) |
if GetCodeReviewSetting("PRIVATE") == "True": |
upload_arg.append("--private") |
@@ -1034,7 +981,7 @@ def CMDcommit(change_info, args): |
revision = re.compile(".*?\nCommitted revision (\d+)", |
re.DOTALL).match(output).group(1) |
viewvc_url = GetCodeReviewSetting("VIEW_VC") |
- change_info.description += '\n' |
+ change_info.description = change_info.description + '\n' |
if viewvc_url: |
change_info.description += "\nCommitted: " + viewvc_url + revision |
change_info.CloseIssue() |
@@ -1096,13 +1043,6 @@ def CMDchange(args): |
affected_files = [x for x in other_files if file_re.match(x[0])] |
unaffected_files = [x for x in other_files if not file_re.match(x[0])] |
- suggested_reviewers = suggest_reviewers(change_info, affected_files) |
- if suggested_reviewers: |
- reviewers_re = re.compile(REVIEWERS_REGEX) |
- if not any( |
- reviewers_re.match(l) for l in description.splitlines()): |
- description += '\nR=' + ','.join(suggested_reviewers) + '\n' |
- |
separator1 = ("\n---All lines above this line become the description.\n" |
"---Repository Root: " + change_info.GetLocalRoot() + "\n" |
"---Paths in this changelist (" + change_info.name + "):\n") |
@@ -1224,6 +1164,8 @@ def CMDlint(change_info, args): |
def DoPresubmitChecks(change_info, committing, may_prompt): |
"""Imports presubmit, then calls presubmit.DoPresubmitChecks.""" |
+ # Need to import here to avoid circular dependency. |
+ import presubmit_support |
root_presubmit = GetCachedFile('PRESUBMIT.py', use_root=True) |
change = presubmit_support.SvnChange(change_info.name, |
change_info.description, |
@@ -1237,14 +1179,13 @@ def DoPresubmitChecks(change_info, committing, may_prompt): |
output_stream=sys.stdout, |
input_stream=sys.stdin, |
default_presubmit=root_presubmit, |
- may_prompt=may_prompt, |
- tbr=False, |
- host_url=change_info.rietveld) |
+ may_prompt=may_prompt) |
if not output.should_continue() and may_prompt: |
# TODO(dpranke): move into DoPresubmitChecks(), unify cmd line args. |
print "\nPresubmit errors, can't continue (use --no_presubmit to bypass)" |
- return output |
+ # TODO(dpranke): Return the output object and make use of it. |
+ return output.should_continue() |
@no_args |