diff options
-rwxr-xr-x | rfc.sh | 82 |
1 files changed, 82 insertions, 0 deletions
@@ -200,6 +200,80 @@ check_patches_for_coding_style() fi } +github_issue_message() +{ + echo "" + echo "=== Missing a github issue reference in a potential enhancement! ===" + echo "" + echo "Gluster code submissions that are enhancements (IOW, not functional" + echo "bug fixes, but improvements of any nature to the code) are tracked" + echo "using github issues. A check on the commit message, reveals that" + echo "there is no bug associated with this change, hence it could be a" + echo "potential code improvement or feature enhancement" + echo "" + echo "If this is an enhancement, request a github issue be filed at [1]" + echo "and referenced in the commit message as," + echo "\"Fixes gluster/glusterfs#n\" OR \"Updates gluster/glusterfs#n\"," + echo "where n is the issue number" + echo "" + echo "You can reference multiple issues that this commit addresses as," + echo "\"fixes gluster/glusterfs#n, updates gluster/glusterfs#m\", and so on" + echo "" + echo "[1] https://github.com/gluster/glusterfs/issues/new" + echo "" + echo "You may abort the submission choosing 'N' below and use" + echo "'git commit --amend' to add the issue reference before posting" + echo "to gerrit. If this is a bug fix, choose 'Y' to continue." + echo "" +} + +check_for_github_issue() +{ + # NOTE: Since we run '#!/bin/sh -e', the check is in an if, + # as grep count maybe 0 + # + # Regex elaborated: + # grep -w -> --word-regexp (from the man page) + # Select only those lines containing matches that form whole words. + # The test is that the matching substring must either be at the + # beginning of the line, or preceded by a non-word constituent + # character. Similarly, it must be either at the end of the line or + # followed by a non-word constituent character. Word-constituent + # characters are letters, digits, and the underscore. + # IOW, the above helps us find the pattern with leading or training spaces + # or non word consituents like , or ; + # + # grep -c -> gives us a count of matches, which is all we need here + # + # [fF][iI][xX][eE][sS]|[uU][pP][dD][aA][tT][eE][sS]) + # Finds 'fixes' OR 'updates' in any case combination + # + # (:)? + # Followed by an optional : (colon) + # + # [[:space:]]+ + # followed by 1 or more spaces + # + # (gluster\/glusterfs)? + # Followed by 0 or more gluster/glusterfs + # + # # + # Followed by # + # + # [[:digit:]]+ + # Followed by 1 or more digits + if [ 0 = "$(git log --format=%B -n 1 | grep -cow -E "([fF][iI][xX][eE][sS]|[uU][pP][dD][aA][tT][eE][sS])(:)?[[:space:]]+(gluster\/glusterfs)?#[[:digit:]]+")" ]; then + moveon='N' + github_issue_message; + echo -n "Missing github issue reference in a potential RFE. Continue (y/N): " + read moveon + if [ "${moveon}" = 'Y' ] || [ "${moveon}" = 'y' ]; then + return; + else + exit 1 + fi + fi +} main() { @@ -222,6 +296,14 @@ main() bug=$(git show --format='%b' | grep -i '^BUG: ' | awk '{print $2}'); + # If this is a commit against master and does not have a bug ID + # it could be a feature or an RFE, check if there is a github + # issue reference, and if not suggest commit message amendment + if [ -z "$bug" ] && [ $branch = "master" ]; then + check_for_github_issue; + fi + + if [ "$DRY_RUN" = 1 ]; then drier='echo -e Please use the following command to send your commits to review:\n\n' else |