Commit cb8eea2f by Manh Nguyen Committed by Commit Bot

Change how multiple commit messages are split

Instead of just splitting commit messages at Change-Id line, now commit messages will be split at the first blank line after a Change-Id line. Bug: angleproject:4715 Change-Id: I39d69662560fd67d1361f13e81362c9a1a7af3bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279570 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent ad782a84
...@@ -44,6 +44,22 @@ def _CheckCommitMessageFormatting(input_api, output_api): ...@@ -44,6 +44,22 @@ def _CheckCommitMessageFormatting(input_api, output_api):
def _IsTagLine(line): def _IsTagLine(line):
return ":" in line return ":" in line
def _SplitIntoMultipleCommits(description_text):
paragraph_split_pattern = r"((?m)^\s*$\n)"
multiple_paragraphs = re.split(paragraph_split_pattern, description_text)
multiple_commits = [""]
change_id_pattern = re.compile(r"(?m)^Change-Id: [a-zA-Z0-9]*$")
for paragraph in multiple_paragraphs:
multiple_commits[-1] += paragraph
if change_id_pattern.search(paragraph):
multiple_commits.append("")
if multiple_commits[-1] == "":
multiple_commits.pop()
return multiple_commits
def _CheckTabInCommit(lines):
return all([line.find("\t") == -1 for line in lines])
whitelist_strings = ['Revert "', 'Roll ', 'Reland '] whitelist_strings = ['Revert "', 'Roll ', 'Reland ']
summary_linelength_warning_lower_limit = 65 summary_linelength_warning_lower_limit = 65
summary_linelength_warning_upper_limit = 70 summary_linelength_warning_upper_limit = 70
...@@ -51,14 +67,13 @@ def _CheckCommitMessageFormatting(input_api, output_api): ...@@ -51,14 +67,13 @@ def _CheckCommitMessageFormatting(input_api, output_api):
git_output = input_api.change.DescriptionText() git_output = input_api.change.DescriptionText()
multiple_commits = re.split(r"Change-Id: [a-zA-Z0-9]*\n", git_output) multiple_commits = _SplitIntoMultipleCommits(git_output)
errors = [] errors = []
for k in range(len(multiple_commits)): for k in range(len(multiple_commits)):
commit = multiple_commits[k] commit_msg_lines = multiple_commits[k].splitlines()
commit_number = len(multiple_commits) - k commit_number = len(multiple_commits) - k
commit_tag = "Commit " + str(commit_number) + ":" commit_tag = "Commit " + str(commit_number) + ":"
commit_msg_lines = commit.splitlines()
commit_msg_line_numbers = {} commit_msg_line_numbers = {}
for i in range(len(commit_msg_lines)): for i in range(len(commit_msg_lines)):
commit_msg_line_numbers[commit_msg_lines[i]] = i + 1 commit_msg_line_numbers[commit_msg_lines[i]] = i + 1
...@@ -73,7 +88,7 @@ def _CheckCommitMessageFormatting(input_api, output_api): ...@@ -73,7 +88,7 @@ def _CheckCommitMessageFormatting(input_api, output_api):
if whitelisted: if whitelisted:
continue continue
if commit.find("\t") != -1: if not _CheckTabInCommit(commit_msg_lines):
errors.append( errors.append(
output_api.PresubmitError(commit_tag + "Tabs are not allowed in commit message.")) output_api.PresubmitError(commit_tag + "Tabs are not allowed in commit message."))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment