Created
August 3, 2015 06:51
-
-
Save yamanyar/dfb411356104a5d2d7e6 to your computer and use it in GitHub Desktop.
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/bash | |
# Pre recieve tests | |
NOREV=0000000000000000000000000000000000000000 | |
while read oldsha newsha refname ; do | |
# deleting is always safe | |
if [[ $newsha == $NOREV ]]; then | |
continue | |
fi | |
# make log argument be "..$newsha" when creating new branch | |
if [[ $oldsha == $NOREV ]]; then | |
revs=$newsha | |
else | |
revs=$oldsha..$newsha | |
fi | |
echo $revs | |
########## Authentication Test Begins | |
# This test ensures that user's name (user.name config variable) and the user name used in http authentication are same. | |
commiter_names=$(git log --pretty=format:"%cn" $revs) | |
printf "$commiter_names\n" | while read name; do | |
if [[ $name != $GL_USER ]]; then | |
echo "Please configure your git name as $GL_USER . Now it is configured as $name !!!!" | |
exit 10 | |
fi | |
done | |
[ "$?" -eq 10 ] && exit 10 | |
########## Authentication Test Ends | |
########## Commit Message Test Begins | |
# This test updates JIRA with git commit messages accordingly. | |
# Expected commit message formats are such as follows : | |
# | |
# GIT-1 : Updates something --- adds comment to jira issue. | |
# GIT-1 resolve: Updates something -- resolves the issue and adds 'Updates something' as comment. | |
# GIT-1 reopen: Start working on something -- reopens the issue and adds 'Start working on something' as comment. | |
# | |
regex="^([A-Z]+-[0-9]+)\s(resolve|reopen)?:(.*)$" | |
commit_messages=$(git log --pretty=format:"%s" $revs) | |
printf "$commit_messages\n" | while read message; do | |
echo "Commenting $message" | |
#check whether commit message matches the expected message format | |
if [[ $message =~ $regex ]]; then | |
message_title="${message%%:*}" | |
message_comment="${message#*:}" | |
# get issue number | |
issue_number="${message_title% *}" | |
# get action to be executed (comment, resolve, reopen..) | |
action="${message_title#* }" | |
geera_show_output=`geera show $issue_number 2>&1` | |
if [[ "$geera_show_output" == *Exception* ]]; then | |
echo "The issue $issue_number does not exist or you don't have permission to view it." | |
exit 11 | |
fi | |
if [[ "$action" == "" ]]; then | |
# add comment to the issue | |
geera_comment_output=`geera comment $issue_number -m "$message_comment" 2>&1` | |
if [[ "$geera_comment_output" != "" ]]; then | |
echo "$geera_comment_output" | |
exit 12 | |
fi | |
elif [[ "$action" == "resolve" ]]; then | |
# resolve the issue | |
geera_output=`geera resolve $issue_number 2>&1` | |
if [[ "$geera_output" != "" ]]; then | |
echo "$geera_output" | |
exit 13 | |
fi | |
geera_output=`geera comment $issue_number -m "$message_comment" 2>&1` | |
if [[ "$geera_output" != "" ]]; then | |
echo "$geera_output" | |
exit 14 | |
fi | |
elif [[ "$action" == "reopen" ]]; then | |
# reopen the issue | |
geera_output=`geera reopen $issue_number 2>&1` | |
if [[ "$geera_output" != "" ]]; then | |
echo "$geera_output" | |
exit 15 | |
fi | |
geera_output=`geera comment $issue_number -m "$message_comment" 2>&1` | |
if [[ "$geera_output" != "" ]]; then | |
echo "$geera_output" | |
exit 16 | |
fi | |
fi | |
else | |
echo "Your commit message is not formatted correctly." | |
exit 17 | |
fi | |
done | |
status_exit=$? | |
echo "Status Jira: $status_exit" | |
exit $status_exit | |
########## Commit Message Test Ends | |
done | |
status_exit=$? | |
echo "Status: $status_exit" | |
exit $status_exit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment