From baa7e2c6d995635916716dee1beade4971599216 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Wed, 21 Feb 2018 13:03:51 -0500 Subject: [PATCH 1/3] Strip CI directives from commit messages when preparing squashed commit message [skip appveyor] [skip travis] [skip ci] Change-Id: I1e74cef22173c6990a389929e20bc2f5a7f8c948 --- dev/merge_arrow_pr.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/dev/merge_arrow_pr.py b/dev/merge_arrow_pr.py index 6c0e663769e..893ad65c9b0 100755 --- a/dev/merge_arrow_pr.py +++ b/dev/merge_arrow_pr.py @@ -175,7 +175,8 @@ def merge_pr(pr_num, target_ref): "Closes #%s from %s and squashes the following commits:" % (pr_num, pr_repo_desc)] for c in commits: - merge_message_flags += ["-m", c] + stripped_message = strip_ci_directives(c) + merge_message_flags += ["-m", stripped_message] run_cmd(['git', 'commit', '--no-verify', # do not run commit hooks @@ -199,6 +200,15 @@ def merge_pr(pr_num, target_ref): return merge_hash +_REGEX_CI_DIRECTIVE = re.compile('\[.*\]') + + +def strip_ci_directives(commit_message): + # Remove things like '[force ci]', '[skip appveyor]' from the assembled + # commit message + return _REGEX_CI_DIRECTIVE.sub('', commit_message) + + def fix_version_from_branch(branch, versions): # Note: Assumes this is a sorted (newest->oldest) list of un-released # versions @@ -209,7 +219,7 @@ def fix_version_from_branch(branch, versions): return [x for x in versions if x.name.startswith(branch_ver)][-1] -def exctract_jira_id(title): +def extract_jira_id(title): m = re.search(r'^(ARROW-[0-9]+)\b.*$', title) if m: return m.group(1) @@ -219,7 +229,7 @@ def exctract_jira_id(title): def check_jira(title): - jira_id = exctract_jira_id(title) + jira_id = extract_jira_id(title) asf_jira = jira.client.JIRA({'server': JIRA_API_BASE}, basic_auth=(JIRA_USERNAME, JIRA_PASSWORD)) try: @@ -232,7 +242,7 @@ def resolve_jira(title, merge_branches, comment): asf_jira = jira.client.JIRA({'server': JIRA_API_BASE}, basic_auth=(JIRA_USERNAME, JIRA_PASSWORD)) - default_jira_id = exctract_jira_id(title) + default_jira_id = extract_jira_id(title) jira_id = input("Enter a JIRA id [%s]: " % default_jira_id) if jira_id == "": From 75c3b178c3a6fe5fd32e8d89c8c83236aeb0fc93 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Thu, 22 Feb 2018 18:08:58 -0500 Subject: [PATCH 2/3] Do not eat closing braces Change-Id: I50be83d2b7f401aa58437b79d321078c24798e88 --- dev/merge_arrow_pr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/merge_arrow_pr.py b/dev/merge_arrow_pr.py index 893ad65c9b0..d1ab5c270f6 100755 --- a/dev/merge_arrow_pr.py +++ b/dev/merge_arrow_pr.py @@ -200,7 +200,7 @@ def merge_pr(pr_num, target_ref): return merge_hash -_REGEX_CI_DIRECTIVE = re.compile('\[.*\]') +_REGEX_CI_DIRECTIVE = re.compile('\[[\]]*\]') def strip_ci_directives(commit_message): From adf038d50ece46d3a202f7bc59638821a4cff115 Mon Sep 17 00:00:00 2001 From: Wes McKinney Date: Thu, 22 Feb 2018 19:08:58 -0500 Subject: [PATCH 3/3] Fix regex [skip ci] [skip travis] [skip appveyor] --- dev/merge_arrow_pr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/merge_arrow_pr.py b/dev/merge_arrow_pr.py index d1ab5c270f6..74f0762c3fe 100755 --- a/dev/merge_arrow_pr.py +++ b/dev/merge_arrow_pr.py @@ -175,7 +175,7 @@ def merge_pr(pr_num, target_ref): "Closes #%s from %s and squashes the following commits:" % (pr_num, pr_repo_desc)] for c in commits: - stripped_message = strip_ci_directives(c) + stripped_message = strip_ci_directives(c).strip() merge_message_flags += ["-m", stripped_message] run_cmd(['git', 'commit', @@ -200,7 +200,7 @@ def merge_pr(pr_num, target_ref): return merge_hash -_REGEX_CI_DIRECTIVE = re.compile('\[[\]]*\]') +_REGEX_CI_DIRECTIVE = re.compile('\[[^\]]*\]') def strip_ci_directives(commit_message):