import re
import sys
import subprocess

examples = """+ 61c8ca9 fix: navbar not responsive on mobile
+ 479c48b test: prepared test cases for user authentication
+ a992020 chore: moved to semantic versioning
+ b818120 fix: button click even handler firing twice
+ c6e9a97 fix: login page css
+ dfdc715 feat(auth): added social login using twitter
"""


def main():

    cmd = "git log --pretty=format:'%s' master..HEAD"
    commits = subprocess.check_output(cmd, shell=True)
    commits = commits.decode("utf-8").split('\n')
    for commit in commits:

        pattern = r'((build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\([\w\-]+\))?:\s.*)|((Merge)(\([\w\-]+\))?\s.*)'  # noqa
        m = re.match(pattern, commit)
        if m is None:
            print("\nError with git message '{}' style".format(commit))
            print("\nPlease change commit message to the conventional format and try to commit again. Examples:")  # noqa

            print("\n" + examples)
            sys.exit(1)

    print("Commit messages valid")


if __name__ == "__main__":
    main()

import re
import sys
import subprocess

examples = """+ 61c8ca9 fix: navbar not responsive on mobile
+ 479c48b test: prepared test cases for user authentication
+ a992020 chore: moved to semantic versioning
+ b818120 fix: button click even handler firing twice
+ c6e9a97 fix: login page css
+ dfdc715 feat(auth): added social login using twitter
"""


def main():

    cmd_tag = "git describe --abbrev=0"
    tag = subprocess.check_output(cmd_tag,
                                  shell=True).decode("utf-8").split('\n')[0]

    cmd = "git log --pretty=format:'%s' {}..master".format(tag)
    commits = subprocess.check_output(cmd, shell=True)
    commits = commits.decode("utf-8").split('\n')
    for commit in commits:

        pattern = r'((build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\([\w\-]+\))?:\s.*)|((Merge)(\([\w\-]+\))?\s.*)'  # noqa
        m = re.match(pattern, commit)
        if m is None:
            print("\nError with git message '{}' style".format(commit))
            print("\nPlease change commit message to the conventional format and try to commit again. Examples:")  # noqa

            print("\n" + examples)
            sys.exit(1)

    print("Commit messages valid")


if __name__ == "__main__":
    main()

Fix script up to search branches
Fix script up to search branches

  import re
  import sys
  import subprocess
  
  examples = """+ 61c8ca9 fix: navbar not responsive on mobile
  + 479c48b test: prepared test cases for user authentication
  + a992020 chore: moved to semantic versioning
  + b818120 fix: button click even handler firing twice
  + c6e9a97 fix: login page css
  + dfdc715 feat(auth): added social login using twitter
  """
  
  
  def main():
  
+     cmd_tag = "git describe --abbrev=0"
+     tag = subprocess.check_output(cmd_tag,
+                                   shell=True).decode("utf-8").split('\n')[0]
+ 
-     cmd = "git log --pretty=format:'%s' master..HEAD"
+     cmd = "git log --pretty=format:'%s' {}..master".format(tag)
      commits = subprocess.check_output(cmd, shell=True)
      commits = commits.decode("utf-8").split('\n')
      for commit in commits:
  
          pattern = r'((build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\([\w\-]+\))?:\s.*)|((Merge)(\([\w\-]+\))?\s.*)'  # noqa
          m = re.match(pattern, commit)
          if m is None:
              print("\nError with git message '{}' style".format(commit))
              print("\nPlease change commit message to the conventional format and try to commit again. Examples:")  # noqa
  
              print("\n" + examples)
              sys.exit(1)
  
      print("Commit messages valid")
  
  
  if __name__ == "__main__":
      main()
  
Fix script up to search branches
## Code Before:
import re
import sys
import subprocess

examples = """+ 61c8ca9 fix: navbar not responsive on mobile
+ 479c48b test: prepared test cases for user authentication
+ a992020 chore: moved to semantic versioning
+ b818120 fix: button click even handler firing twice
+ c6e9a97 fix: login page css
+ dfdc715 feat(auth): added social login using twitter
"""


def main():

    cmd = "git log --pretty=format:'%s' master..HEAD"
    commits = subprocess.check_output(cmd, shell=True)
    commits = commits.decode("utf-8").split('\n')
    for commit in commits:

        pattern = r'((build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\([\w\-]+\))?:\s.*)|((Merge)(\([\w\-]+\))?\s.*)'  # noqa
        m = re.match(pattern, commit)
        if m is None:
            print("\nError with git message '{}' style".format(commit))
            print("\nPlease change commit message to the conventional format and try to commit again. Examples:")  # noqa

            print("\n" + examples)
            sys.exit(1)

    print("Commit messages valid")


if __name__ == "__main__":
    main()

## Instruction:
Fix script up to search branches
## Code After:
import re
import sys
import subprocess

examples = """+ 61c8ca9 fix: navbar not responsive on mobile
+ 479c48b test: prepared test cases for user authentication
+ a992020 chore: moved to semantic versioning
+ b818120 fix: button click even handler firing twice
+ c6e9a97 fix: login page css
+ dfdc715 feat(auth): added social login using twitter
"""


def main():

    cmd_tag = "git describe --abbrev=0"
    tag = subprocess.check_output(cmd_tag,
                                  shell=True).decode("utf-8").split('\n')[0]

    cmd = "git log --pretty=format:'%s' {}..master".format(tag)
    commits = subprocess.check_output(cmd, shell=True)
    commits = commits.decode("utf-8").split('\n')
    for commit in commits:

        pattern = r'((build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert)(\([\w\-]+\))?:\s.*)|((Merge)(\([\w\-]+\))?\s.*)'  # noqa
        m = re.match(pattern, commit)
        if m is None:
            print("\nError with git message '{}' style".format(commit))
            print("\nPlease change commit message to the conventional format and try to commit again. Examples:")  # noqa

            print("\n" + examples)
            sys.exit(1)

    print("Commit messages valid")


if __name__ == "__main__":
    main()
