Last active
June 8, 2020 12:39
-
-
Save gortok/b204ac4997e9916ec6c6ef0987251530 to your computer and use it in GitHub Desktop.
Python Pre Receive hook for checking commit messages
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/python | |
import sys | |
import re | |
import subprocess | |
#Format: "oldref newref branch" | |
line = sys.stdin.read() | |
(base, commit, ref) = line.strip().split() | |
new_branch_push = re.match(r'[^1-9]+', base) | |
branch_deleted = re.match(r'[^1-9]+', commit) | |
contains_commit_msg = False | |
if not new_branch_push: | |
revs = base + "..." + commit | |
proc = subprocess.Popen(['git', 'rev-list','--oneline','--first-parent', revs], stdout=subprocess.PIPE) | |
lines = proc.stdout.readlines() | |
if lines: | |
for line in lines: | |
rev = str(line) | |
match = re.search(r'TICKET-[0-9]{2,5}|#TICKET-[0-9]{2,5}|HOTFIX|FORCE', rev) | |
if match is not None: | |
contains_commit_msg = True | |
if contains_commit_msg or new_branch_push or branch_deleted: | |
exit(0) | |
else: | |
print "Commit does not contain the story associated with the commit in the format: TICKET-123 or #TICKET-123" | |
exit(1) |
Learned so much from this little script, really appreciated.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
What is python version required?