You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by st...@apache.org on 2021/01/15 06:46:08 UTC
[phoenix] branch master updated: PHOENIX-6314 : Utility to identify
git commit / Jira fixVersion discrepancies for RC preparation
This is an automated email from the ASF dual-hosted git repository.
stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/master by this push:
new 196c1a3 PHOENIX-6314 : Utility to identify git commit / Jira fixVersion discrepancies for RC preparation
196c1a3 is described below
commit 196c1a36f6826e1d557be7cecc46f1599c428dde
Author: Viraj Jasani <vj...@apache.org>
AuthorDate: Thu Jan 14 15:54:57 2021 +0530
PHOENIX-6314 : Utility to identify git commit / Jira fixVersion discrepancies for RC preparation
---
dev/misc_utils/README.md | 108 +++++++++++++++++++++++++++
dev/misc_utils/git_jira_fix_version_check.py | 88 ++++++++++++++++++++++
2 files changed, 196 insertions(+)
diff --git a/dev/misc_utils/README.md b/dev/misc_utils/README.md
new file mode 100644
index 0000000..5e85b21
--- /dev/null
+++ b/dev/misc_utils/README.md
@@ -0,0 +1,108 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+![logo](http://phoenix.apache.org/images/logo.png)
+
+
+dev/misc_utils are supposed to contain multiple utility files.
+
+As of this writing, we have git_jira_fix_version_check.py script
+that takes care of identifying all git commits with commit
+messages with any of these issues:
+1. commit is reverted as per commit message
+2. commit does not contain Jira number format PHOENIX-XXXX in message
+3. Jira does not have expected fixVersion
+4. Jira has expected fixVersion, but it is not yet resolved
+
+This should be useful as part of RC preparation.
+
+git_jira_fix_version_check supports python3 and it required
+installation of jira:
+```
+pip3 install jira
+```
+The script also requires below inputs:
+```
+1. First commit hash to start excluding commits from history:
+ Usually we can provide latest commit hash from last tagged release
+ so that the script will only loop through all commits in git commit
+ history before this commit hash. e.g for 4.16 release, we can provide
+ git hash: a2adf5e572c5a4bcccee7f8ac43bad6b84293ec6
+ because this was the last commit hash in last
+ 4.15 release tag: https://github.com/apache/phoenix/releases/tag/v4.15.0-HBase-1.5
+ For 5.1.0, git hash: 8a819c6c3b4befce190c6ac759f744df511de61d
+ as it was the last commit hash in 5.0 release tag:
+ https://github.com/apache/phoenix/releases/tag/v5.0.0-HBase-2.0
+
+2. Fix Version:
+ Exact fixVersion that we would like to compare all Jira's fixVersions
+ with. e.g for 4.16 first release, it should be 4.16.0
+ for first release of 5.1, it should be 5.1.0
+
+3. JIRA Project Name:
+ The exact name of Project as case-sensitive e.g PHOENIX / OMID / TEPHRA
+
+4. Path of project's working dir with release branch checked-in:
+ Path of project from where we want to compare git hashes from. Local fork
+ of the project should be up-to date with upstream and expected release
+ branch should be checked-in.
+
+5. Jira server url (default url: https://issues.apache.org/jira):
+ Default value of server points to ASF Jiras but this script can be
+ used outside of ASF Jira too.
+```
+
+
+Example of script execution:
+```
+$ python3 dev/misc_utils/git_jira_fix_version_check.py
+JIRA Project Name (e.g PHOENIX / OMID / TEPHRA etc): PHOENIX
+First commit hash to start excluding commits from history: a2adf5e572c5a4bcccee7f8ac43bad6b84293ec6
+Fix Version: 4.16.0
+Jira server url (default: https://issues.apache.org/jira):
+Path of project's working dir with release branch checked-in: /Users/{USER}/Documents/phoenix
+
+Check git status output and verify expected branch
+
+On branch 4.16
+Your branch is up to date with 'origin/4.16'.
+
+nothing to commit, working tree clean
+
+
+Jira/Git commit message diff starting: ##############################################
+Jira not present with version: 4.16.0. Commit: 96f7a28aacff1828c425fe50f7fef43641910e1f PHOENIX-6120 Addendum for license header
+Jira not present with version: 4.16.0. Commit: 67268793412789e3806664f90845e074b1f21a36 PHOENIX-6219 GlobalIndexChecker doesn't work for SingleCell indexes
+Jira not present with version: 4.16.0. Commit: ad70231581506dc954f6d27df43778343de8fbc0 PHOENIX-6120 Change IndexMaintainer for SINGLE_CELL_ARRAY_WITH_OFFSETS indexes
+Jira not present with version: 4.16.0. Commit: 182a6015ee5aa17110a17f862cf98f0934d1aca1 PHOENIX-6220 CREATE INDEX shouldn't ignore IMMUTABLE_STORAGE_SCHEME and COLUMN_ENDCODED_BYTES
+Jira not present with version: 4.16.0. Commit: 8a764813e4e4c9aa421923dc530a52d1bf8b4301 PHOENIX-6276: Log when hconnection is getting closed in ConnectionQueryServicesImpl
+Jira is not resolved yet? Commit: 237b7248dafe51087a8a95aa5bc67e5ce141e89d PHOENIX-6288 Minicluster startup problems on Jenkins
+Jira not present with version: 4.16.0. Commit: 3b6ea0240de9d4a0ad4747c3cd43cac5c949cc23 Merge PHOENIX-6182: IndexTool to verify and repair every index row (#1022)
+Commit seems reverted. Commit: a3b6d0b410b6eab43cef9fa4fa9074af592f8c81 Revert "PHOENIX-5140 TableNotFoundException occurs when we create local asynchronous index"
+WARN: Jira not found. Commit: 355d95a4762c3ccac1be35659f3c02c385e17b3b Update jacoco plugin version to 0.8.5.
+WARN: Jira not found. Commit: daa6816dcb3ac035bf8553e6bf2ff8a18e80e6e4 Local indexes get out of sync after changes for global consistent indexes.
+...
+...
+...
+Found first commit hash after which git history is redundant. commit: 02d5935cbbd75ad2491413042e5010bb76ed57c8
+Exiting successfully
+Jira/Git commit message diff completed: ##############################################
+
+
+```
+
+
diff --git a/dev/misc_utils/git_jira_fix_version_check.py b/dev/misc_utils/git_jira_fix_version_check.py
new file mode 100644
index 0000000..0d1266f
--- /dev/null
+++ b/dev/misc_utils/git_jira_fix_version_check.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+############################################################################
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+############################################################################
+
+
+import os
+import re
+import subprocess
+
+from jira import JIRA
+
+jira_project_name = input("JIRA Project Name (e.g PHOENIX / OMID / TEPHRA etc): ")
+# Define project_jira_key with - appended. e.g for PHOENIX Jiras,
+# project_jira_key should be PHOENIX-
+project_jira_key = jira_project_name + '-'
+
+first_exclude_commit_hash = input("First commit hash to start excluding commits from history: ")
+fix_version = input("Fix Version: ")
+
+jira_server_url = input(
+ "Jira server url (default: https://issues.apache.org/jira): ") \
+ or "https://issues.apache.org/jira"
+
+jira = JIRA({"server": jira_server_url})
+
+local_project_dir = input("Path of project's working dir with release branch checked-in: ")
+os.chdir(local_project_dir)
+
+git_status_msg = subprocess.check_output(['git', 'status']).decode("utf-8")
+print('\nCheck git status output and verify expected branch\n')
+print(git_status_msg)
+
+print('\nJira/Git commit message diff starting: ##############################################')
+
+for commit in subprocess.check_output(['git', 'log', '--pretty=oneline']).decode(
+ "utf-8").splitlines():
+ if commit.startswith(first_exclude_commit_hash):
+ print("Found first commit hash after which git history is redundant. commit: "
+ + first_exclude_commit_hash)
+ print("Exiting successfully")
+ break
+ if re.search('revert', commit, re.IGNORECASE):
+ print("Commit seems reverted. \t\t\t Commit: " + commit)
+ continue
+ if project_jira_key not in commit:
+ print("WARN: Jira not found. \t\t\t Commit: " + commit)
+ continue
+ jira_num = ''
+ for c in commit.split(project_jira_key)[1]:
+ if c.isdigit():
+ jira_num = jira_num + c
+ else:
+ break
+ issue = jira.issue(project_jira_key + jira_num)
+ expected_fix_version = False
+ for version in issue.fields.fixVersions:
+ if version.name == fix_version:
+ expected_fix_version = True
+ break
+ if not expected_fix_version:
+ print("Jira not present with version: " + fix_version + ". \t Commit: " + commit)
+ continue
+ if issue.fields.resolution is None or issue.fields.resolution.name != 'Fixed':
+ print("Jira is not resolved yet? \t\t Commit: " + commit)
+ else:
+ # This means Jira corresponding to current commit message is resolved with expected
+ # fixVersion.
+ # This is no-op by default, if needed, convert to print statement.
+ pass
+
+print('Jira/Git commit message diff completed: ##############################################')