Repository: bookkeeper Updated Branches: refs/heads/master 07852d358 -> 164c44bb9
ISSUE #184: Support GitHub issues in bk-merge script - Recoganize the issue title and normalize it - Close the corresponding issue when closing the pr Author: Sijie Guo <[email protected]> Reviewers: Enrico Olivelli <[email protected]> This closes #194 from sijie/support_github_issues, closes #184 Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/164c44bb Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/164c44bb Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/164c44bb Branch: refs/heads/master Commit: 164c44bb97e5b3ea8c658f5f376390b787061125 Parents: 07852d3 Author: Sijie Guo <[email protected]> Authored: Fri Jun 16 09:23:31 2017 +0200 Committer: Enrico Olivelli <[email protected]> Committed: Fri Jun 16 09:23:31 2017 +0200 ---------------------------------------------------------------------- dev/bk-merge-pr.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/164c44bb/dev/bk-merge-pr.py ---------------------------------------------------------------------- diff --git a/dev/bk-merge-pr.py b/dev/bk-merge-pr.py index cb5bd43..ddeb9b4 100755 --- a/dev/bk-merge-pr.py +++ b/dev/bk-merge-pr.py @@ -43,6 +43,7 @@ except ImportError: PROJECT_NAME = "bookkeeper" CAPITALIZED_PROJECT_NAME = "bookkeeper".upper() +GITHUB_ISSUES_NAME = "issue".upper() # Location of the local git repository REPO_HOME = os.environ.get("%s_HOME" % CAPITALIZED_PROJECT_NAME, os.getcwd()) @@ -210,7 +211,14 @@ def merge_pr(pr_num, target_ref, title, body, default_pr_reviewers, pr_repo_desc merge_message_flags += ["-m", message] # The string "Closes #%s" string is required for GitHub to correctly close the PR - close_line = "Closes #%s from %s" % (pr_num, pr_repo_desc) + close_line = "This closes #%s from %s" % (pr_num, pr_repo_desc) + # Find the github issues to close + github_issues = re.findall("#[0-9]{3,6}", title) + + if len(github_issues) != 0: + for issue_id in github_issues: + close_line += ", closes %s" % (issue_id) + if should_list_commits: close_line += " and squashes the following commits:" merge_message_flags += ["-m", close_line] @@ -360,6 +368,7 @@ def standardize_jira_ref(text): 'BOOKKEEPER-877: Script for generating patch for reviews' """ jira_refs = [] + github_issue_refs = [] components = [] # Extract JIRA ref(s): @@ -369,6 +378,13 @@ def standardize_jira_ref(text): jira_refs.append(re.sub(r'\s+', '-', ref.upper())) text = text.replace(ref, '') + # Extract Github Issue ref(s) + pattern = re.compile(r'(%s[-\s]*[0-9]{3,6})+' % GITHUB_ISSUES_NAME, re.IGNORECASE) + for ref in pattern.findall(text): + # Add brackets, replace spaces or a dash with ' #', & convert to uppercase + github_issue_refs.append(re.sub(r'[-\s]+', ' #', ref.upper())) + text = text.replace(ref, '') + # Extract project name component(s): # Look for alphanumeric chars, spaces, dashes, periods, and/or commas pattern = re.compile(r'(\[[\w\s,-\.]+\])', re.IGNORECASE) @@ -382,10 +398,14 @@ def standardize_jira_ref(text): text = pattern.search(text).groups()[0] # Assemble full text (JIRA ref(s), module(s), remaining text) + prefix = '' jira_prefix = ' '.join(jira_refs).strip() if jira_prefix: - jira_prefix = jira_prefix + ": " - clean_text = jira_prefix + ' '.join(components).strip() + " " + text.strip() + prefix = jira_prefix + ": " + github_prefix = ' '.join(github_issue_refs).strip() + if github_prefix: + prefix = github_prefix + ": " + clean_text = prefix + ' '.join(components).strip() + " " + text.strip() # Replace multiple spaces with a single space, e.g. if no jira refs and/or components were included clean_text = re.sub(r'\s+', ' ', clean_text.strip())
