From 0fe58ec95ca368568209cdd496c4af6591f7507b Mon Sep 17 00:00:00 2001 From: Christoph Miksche Date: Sun, 8 Sep 2019 18:58:17 +0200 Subject: [PATCH 1/3] feat: add gitlint Add gitlint to enforce Angular style commit messages. WIP. Doesn't work currently. --- .gitlint | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 1 + Pipfile | 1 + 3 files changed, 94 insertions(+) create mode 100644 .gitlint diff --git a/.gitlint b/.gitlint new file mode 100644 index 0000000..6597f76 --- /dev/null +++ b/.gitlint @@ -0,0 +1,92 @@ +# All these sections are optional, edit this file as you like. +#[general] +# Ignore certain rules, you can reference them by their id or by their full name +#ignore=title-trailing-punctuation, T3 + +# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this +# verbosity = 2 + +# By default gitlint will ignore merge commits. Set to 'false' to disable. +# ignore-merge-commits=true + +# By default gitlint will ignore fixup commits. Set to 'false' to disable. +# ignore-fixup-commits=true + +# By default gitlint will ignore squash commits. Set to 'false' to disable. +# ignore-squash-commits=true + +# Ignore any data send to gitlint via stdin +# ignore-stdin=true + +# Enable debug mode (prints more output). Disabled by default. +# debug=true + +# Enable community contributed rules +# See http://jorisroovers.github.io/gitlint/contrib_rules for details +# contrib=contrib-title-conventional-commits,CC1 + +# Set the extra-path where gitlint will search for user defined rules +# See http://jorisroovers.github.io/gitlint/user_defined_rules for details +# extra-path=examples/ + +# [title-max-length] +# line-length=80 + +# [title-must-not-contain-word] +# Comma-separated list of words that should not occur in the title. Matching is case +# insensitive. It's fine if the keyword occurs as part of a larger word (so "WIPING" +# will not cause a violation, but "WIP: my title" will. +# words=wip + +# [title-match-regex] +# python like regex (https://docs.python.org/2/library/re.html) that the +# commit-msg title must be matched to. +# Note that the regex can contradict with other rules if not used correctly +# (e.g. title-must-not-contain-word). +# regex=^US[0-9]* + +# [B1] +# B1 = body-max-line-length +# line-length=120 + +# [body-min-length] +# min-length=5 + +# [body-is-missing] +# Whether to ignore this rule on merge commits (which typically only have a title) +# default = True +# ignore-merge-commits=false + +# [body-changed-file-mention] +# List of files that need to be explicitly mentioned in the body when they are changed +# This is useful for when developers often erroneously edit certain files or git submodules. +# By specifying this rule, developers can only change the file when they explicitly reference +# it in the commit message. +# files=gitlint/rules.py,README.md + +# [author-valid-email] +# python like regex (https://docs.python.org/2/library/re.html) that the +# commit author email address should be matched to +# For example, use the following regex if you only want to allow email addresses from foo.com +# regex=[^@]+@foo.com + +# [ignore-by-title] +# Ignore certain rules for commits of which the title matches a regex +# E.g. Match commit titles that start with "Release" +# regex=^Release(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# [ignore-by-body] +# Ignore certain rules for commits of which the body has a line that matches a regex +# E.g. Match bodies that have a line that that contain "release" +# regex=(.*)release(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +[contrib-title-conventional-commits] +types = build,ci,docs,feat,fix,perf,refactor,style,test \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index a979c14..6fc5e50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,4 +7,5 @@ install: - pip install pipenv - pipenv install script: + - gitlint - python tests.py diff --git a/Pipfile b/Pipfile index b2f3bc0..4f197c4 100644 --- a/Pipfile +++ b/Pipfile @@ -10,6 +10,7 @@ requests = "*" packaging = "*" fire = "*" configparser = "*" +gitlint = "*" [requires] python_version = "3.7" From d0b0374d570886fdc89983346b52565c273435ed Mon Sep 17 00:00:00 2001 From: Christoph Miksche Date: Sun, 8 Sep 2019 18:58:17 +0200 Subject: [PATCH 2/3] feat: add gitlint Add gitlint to enforce Angular style commit messages. --- .gitlint | 91 ++------------------------------------------------------ 1 file changed, 2 insertions(+), 89 deletions(-) diff --git a/.gitlint b/.gitlint index 6597f76..2da2887 100644 --- a/.gitlint +++ b/.gitlint @@ -1,92 +1,5 @@ -# All these sections are optional, edit this file as you like. -#[general] -# Ignore certain rules, you can reference them by their id or by their full name -#ignore=title-trailing-punctuation, T3 - -# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this -# verbosity = 2 - -# By default gitlint will ignore merge commits. Set to 'false' to disable. -# ignore-merge-commits=true - -# By default gitlint will ignore fixup commits. Set to 'false' to disable. -# ignore-fixup-commits=true - -# By default gitlint will ignore squash commits. Set to 'false' to disable. -# ignore-squash-commits=true - -# Ignore any data send to gitlint via stdin -# ignore-stdin=true - -# Enable debug mode (prints more output). Disabled by default. -# debug=true - -# Enable community contributed rules -# See http://jorisroovers.github.io/gitlint/contrib_rules for details -# contrib=contrib-title-conventional-commits,CC1 - -# Set the extra-path where gitlint will search for user defined rules -# See http://jorisroovers.github.io/gitlint/user_defined_rules for details -# extra-path=examples/ - -# [title-max-length] -# line-length=80 - -# [title-must-not-contain-word] -# Comma-separated list of words that should not occur in the title. Matching is case -# insensitive. It's fine if the keyword occurs as part of a larger word (so "WIPING" -# will not cause a violation, but "WIP: my title" will. -# words=wip - -# [title-match-regex] -# python like regex (https://docs.python.org/2/library/re.html) that the -# commit-msg title must be matched to. -# Note that the regex can contradict with other rules if not used correctly -# (e.g. title-must-not-contain-word). -# regex=^US[0-9]* - -# [B1] -# B1 = body-max-line-length -# line-length=120 - -# [body-min-length] -# min-length=5 - -# [body-is-missing] -# Whether to ignore this rule on merge commits (which typically only have a title) -# default = True -# ignore-merge-commits=false - -# [body-changed-file-mention] -# List of files that need to be explicitly mentioned in the body when they are changed -# This is useful for when developers often erroneously edit certain files or git submodules. -# By specifying this rule, developers can only change the file when they explicitly reference -# it in the commit message. -# files=gitlint/rules.py,README.md - -# [author-valid-email] -# python like regex (https://docs.python.org/2/library/re.html) that the -# commit author email address should be matched to -# For example, use the following regex if you only want to allow email addresses from foo.com -# regex=[^@]+@foo.com - -# [ignore-by-title] -# Ignore certain rules for commits of which the title matches a regex -# E.g. Match commit titles that start with "Release" -# regex=^Release(.*) -# -# Ignore certain rules, you can reference them by their id or by their full name -# Use 'all' to ignore all rules -# ignore=T1,body-min-length - -# [ignore-by-body] -# Ignore certain rules for commits of which the body has a line that matches a regex -# E.g. Match bodies that have a line that that contain "release" -# regex=(.*)release(.*) -# -# Ignore certain rules, you can reference them by their id or by their full name -# Use 'all' to ignore all rules -# ignore=T1,body-min-length +[general] +contrib=contrib-title-conventional-commits [contrib-title-conventional-commits] types = build,ci,docs,feat,fix,perf,refactor,style,test \ No newline at end of file From cf53f7b9dce837fbfbdbfcc569ba92922dc64432 Mon Sep 17 00:00:00 2001 From: Christoph Miksche Date: Wed, 11 Sep 2019 13:48:50 +0200 Subject: [PATCH 3/3] docs: update development instructions Add more instructions for development to the README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c45de94..e2a6da0 100644 --- a/README.md +++ b/README.md @@ -62,9 +62,13 @@ If you want to schedule your updates, edit your /etc/crontab file. The following instructions help you for developing. +* Check out the [Contribution Guidelines](CONTRIBUTING.md). * Clone this git repo * Install pipenv: `pip install pipenv` * Install all dependencies: `pipenv install` +* You can run the tests with `python tests.py` +* After changes and commit, you can check if your commit message follows the contribution guidelines with `gitlint`. If there is a problem, gitlint will show you a error message. +* After pushing, you should check the build status which currently checks the tests and the commit message format. ## Contributors