-
-
Save gortok/b204ac4997e9916ec6c6ef0987251530 to your computer and use it in GitHub Desktop.
#!/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) |
Updated gist to fix bug with new branch pushes with no commits.
I think the latest version works with multiple line commits. The Previous revision did not.
This version did not handle branch deletes; new version does.
@gortok, I'm facing the problem of the new branch at the moment...
Since I need to read which files changed, when a new branch is added I get the list of all files.
if "0000000000" not in base:
(results, code) = GitRepo.git(('git', 'show', base + ".." + commit, '--pretty=format:', '--name-only'))
else:
# All files in the current revision. No way to know which files changed in new branch
(results, code) = GitRepo.git(('git', 'ls-tree', '-r', 'HEAD', '--name-only'))
Thank you for sharing this script. However, ignoring the new branch case is not 'handling' it. A user can still incorrectly format the commit message and push it to the repo and get away with it as long as he does it in a new branch. This is in fact what I just tested and observed.
thank's! very helpful script!!!
What is python version required?
Learned so much from this little script, really appreciated.
This has a bug; specifically it fails when creating a new branch off of an existing branch with no new commits. You'll see this error:
To fix this error, do this: