pax_global_header00006660000000000000000000000064136254634270014526gustar00rootroot0000000000000052 comment=d3dba4dd1a139d49ae17babbb0b87887d4a7dc61 gitlint-0.13.1/000077500000000000000000000000001362546342700132625ustar00rootroot00000000000000gitlint-0.13.1/.coveragerc000066400000000000000000000001171362546342700154020ustar00rootroot00000000000000[run] omit=*dist-packages*,*site-packages*,gitlint/tests/*,.venv/*,*virtualenv*gitlint-0.13.1/.flake8000066400000000000000000000007111362546342700144340ustar00rootroot00000000000000[flake8] # H307: like imports should be grouped together # H405: multi line docstring summary not separated with an empty line # H803: git title must end with a period # H904: Wrap long lines in parentheses instead of a backslash # H802: git commit title should be under 50 chars # H701: empty localization string extend-ignore = H307,H405,H803,H904,H802,H701 # exclude settings files and virtualenvs exclude = *settings.py,*.venv/*.py max-line-length = 120gitlint-0.13.1/.github/000077500000000000000000000000001362546342700146225ustar00rootroot00000000000000gitlint-0.13.1/.github/ISSUE_TEMPLATE/000077500000000000000000000000001362546342700170055ustar00rootroot00000000000000gitlint-0.13.1/.github/ISSUE_TEMPLATE/issue-template.md000066400000000000000000000017141362546342700222730ustar00rootroot00000000000000--- name: Issue template about: Bug reports, feature requests title: '' labels: '' assignees: '' --- Enter your issue details here gitlint-0.13.1/.github/workflows/000077500000000000000000000000001362546342700166575ustar00rootroot00000000000000gitlint-0.13.1/.github/workflows/checks.yml000066400000000000000000000062231362546342700206450ustar00rootroot00000000000000name: Tests and Checks on: [push] jobs: checks: runs-on: "ubuntu-latest" strategy: matrix: python-version: [2.7, 3.5, 3.6, 3.7, 3.8, pypy2, pypy3] os: ["macos-latest", "ubuntu-latest"] steps: - uses: actions/checkout@v2 - name: Setup python uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install requirements run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install -r test-requirements.txt - name: Unit Tests run: ./run_tests.sh # Coveralls integration doesn't properly work at this point, also see below # - name: Coveralls # env: # COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} # run: coveralls - name: Integration Tests run: ./run_tests.sh -i - name: Integration Tests (GITLINT_USE_SH_LIB=0) env: GITLINT_USE_SH_LIB: 0 run: ./run_tests.sh -i - name: PEP8 run: ./run_tests.sh -p - name: PyLint run: ./run_tests.sh -l - name: Build tests run: ./run_tests.sh --build # Coveralls GH Action currently doesn't support current non-LCOV reporting format # For now, still using Travis for unit test coverage reporting # https://github.com/coverallsapp/github-action/issues/30 # - name: Coveralls # uses: coverallsapp/github-action@master # with: # github-token: ${{ secrets.GITHUB_TOKEN }} - name: Gitlint check run: ./run_tests.sh -g windows-checks: runs-on: windows-latest strategy: matrix: python-version: [2.7, 3.5] steps: - uses: actions/checkout@v2 - name: Setup python uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: "Upgrade pip on Python 3" if: matrix.python-version == '3.5' run: python -m pip install --upgrade pip - name: Install requirements run: | pip install -r requirements.txt pip install -r test-requirements.txt - name: gitlint --version run: gitlint --version - name: Tests (sanity) run: tools\windows\run_tests.bat "gitlint\tests\cli\test_cli.py::CLITests::test_lint" - name: Tests (ignore test_cli.py) run: pytest --ignore gitlint\tests\cli\test_cli.py -rw -s gitlint - name: Tests (test_cli.py only - continue-on-error:true) run: tools\windows\run_tests.bat "gitlint\tests\cli\test_cli.py" continue-on-error: true # Known to fail at this point - name: Tests (all - continue-on-error:true) run: tools\windows\run_tests.bat continue-on-error: true # Known to fail at this point - name: Integration tests (continue-on-error:true) run: pytest -rw -s qa continue-on-error: true # Known to fail at this point - name: PEP8 run: flake8 gitlint qa examples - name: PyLint run: pylint gitlint qa --rcfile=".pylintrc" -r n - name: Gitlint check run: gitlint --debug gitlint-0.13.1/.gitignore000066400000000000000000000014041362546342700152510ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg .pytest_cache # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *,cover # Translations *.mo *.pot # Django stuff: *.log # Sphinx documentation docs/_build/ # PyBuilder target/ .venv* virtualenv # Vagrant .vagrant # mkdocs site/ gitlint-0.13.1/.pre-commit-hooks.yaml000066400000000000000000000001731362546342700174220ustar00rootroot00000000000000- id: gitlint name: gitlint language: python entry: gitlint --staged --msg-filename stages: [commit-msg] gitlint-0.13.1/.pylintrc000066400000000000000000000030321362546342700151250ustar00rootroot00000000000000# The format of this file isn't really documented; just use --generate-rcfile [MASTER] [Messages Control] # C0111: Don't require docstrings on every method # W0511: TODOs in code comments are fine. # W0142: *args and **kwargs are fine. # W0223: abstract methods don't need to be overwritten (i.e. when overwriting a Django REST serializer) # W0622: Redefining id is fine. # R0901: Too many ancestors (i.e. when subclassing test classes) # R0801: Similar lines in files # I0011: Informational: locally disabled pylint # I0013: Informational: Ignoring entire file disable=bad-option-value,C0111,W0511,W0142,W0622,W0223,W0212,R0901,R0801,I0011,I0013,anomalous-backslash-in-string,useless-object-inheritance,unnecessary-pass [Format] max-line-length=120 [Basic] # Variable names can be 1 to 31 characters long, with lowercase and underscores variable-rgx=[a-z_][a-z0-9_]{0,30}$ # Argument names can be 2 to 31 characters long, with lowercase and underscores argument-rgx=[a-z_][a-z0-9_]{1,30}$ # Method names should be at least 3 characters long # and be lower-cased with underscores method-rgx=([a-z_][a-z0-9_]{2,50}|setUp|tearDown)$ # Allow 'id' as variable name everywhere good-names=id,c,_ bad-names=__author__ # Ignore all variables that start with an underscore (e.g. unused _request variable in a view) dummy-variables-rgx=_ [Design] max-public-methods=100 min-public-methods=0 # Maximum number of attributes of a class max-attributes=15 max-args=10 max-locals=20 [Typecheck] # Allow the use of the Django 'objects' members generated-members=sh.git gitlint-0.13.1/CHANGELOG.md000066400000000000000000000446271362546342700151100ustar00rootroot00000000000000# Changelog # ## v0.13.1 (2020-02-26) - Patch to enable `--staged` flag for pre-commit. - Minor doc updates ([#109](https://github.com/jorisroovers/gitlint/issues/109)) ## v0.13.0 (2020-02-25) - **Behavior Change**: Revert Commits are now recognized and ignored by default ([#99](https://github.com/jorisroovers/gitlint/issues/99)) - ```--staged``` flag: gitlint can now detect meta-data (such as author details, changed files, etc) of staged/pre-commits. Useful when you use [gitlint's commit-msg hook](https://jorisroovers.github.io/gitlint/#using-gitlint-as-a-commit-msg-hook) or [precommit](https://jorisroovers.github.io/gitlint/#using-gitlint-through-pre-commit) ([#105](https://github.com/jorisroovers/gitlint/issues/105)) - New branch properties on ```GitCommit``` and ```GitContext```, useful when writing your own user-defined rules: ```commit.branches``` and ```commit.context.current_branch``` ([#108](https://github.com/jorisroovers/gitlint/issues/108)) - Python 3.8 support - Python 3.4 no longer supported. Python 3.4 has [reached EOL](https://www.python.org/dev/peps/pep-0429/#id4) and an increasing of gitlint's dependencies have dropped support which makes it hard to maintain. - Improved Windows support: better unicode handling. [Issues remain](https://github.com/jorisroovers/gitlint/issues?q=is%3Aissue+is%3Aopen+label%3Awindows) but the basic functionality works. - Bugfixes: - Gitlint no longer crashes when acting on empty repositories (this only occurred in specific circumstances). - Changed files are now better detected in repos that only have a root commit - Improved performance and memory (gitlint now caches git properties) - Improved `--debug` output - Improved documentation - Under-the-hood: dependencies updated, unit and integration test improvements, migrated from TravisCI to Github Actions. ## v0.12.0 (2019-07-15) ## Contributors: Special thanks to all contributors for this release, in particular [@rogalksi](https://github.com/rogalski) and [@byrney](https://github.com/byrney). - [Contrib Rules](http://jorisroovers.github.io/gitlint/contrib_rules): community-contributed rules that are disabled by default, but can be enabled through configuration. Contrib rules are meant to augment default gitlint behavior by providing users with rules for common use-cases without forcing these rules on all gitlint users. - **New Contrib Rule**: ```contrib-title-conventional-commits``` enforces the [Conventional Commits](https://www.conventionalcommits.org) spec. Details in our [documentation](http://jorisroovers.github.io/gitlint/contrib_rules/#ct1-contrib-title-conventional-commits). - **New Contrib Rule**: ```cc1-contrib-requires-signed-off-by``` ensures that all commit messages contain a ```Sign-Off-By``` line. Details in our [documentation](http://jorisroovers.github.io/gitlint/contrib_rules/#cc1-contrib-requires-signed-off-by). - If you're interested in adding new Contrib rules to gitlint, please start by reading the [Contributing](http://jorisroovers.github.io/gitlint/contributing/) page. Thanks for considering! - *Experimental (!)* Windows support: Basic functionality is working, but there are still caveats. For more details, please refer to [#20](https://github.com/jorisroovers/gitlint/issues/20) and the [open issues related to Windows](https://github.com/jorisroovers/gitlint/issues?q=is%3Aissue+is%3Aopen+label%3Awindows). - Python 3.3 no longer supported. Python 3.4 is likely to follow in a future release as it has [reached EOL](https://www.python.org/dev/peps/pep-0429/#id4) as well. - PyPy 3.5 support - Support for ```--ignore-stdin``` command-line flag to ignore any text send via stdin. ([#56](https://github.com/jorisroovers/gitlint/issues/56), [#89](https://github.com/jorisroovers/gitlint/issues/89)) - Bugfixes: - [#68: Can't use install-hooks in with git worktree](https://github.com/jorisroovers/gitlint/issues/68) - [#59: gitlint failed with configured commentchar](https://github.com/jorisroovers/gitlint/issues/59) - Under-the-hood: dependencies updated, experimental Dockerfile, github issue template. ## v0.11.0 (2019-03-13) ## - Python 3.7 support - Python 2.6 no longer supported - Various dependency updates and under the hood fixes (see [#76](https://github.com/jorisroovers/gitlint/pull/76) for details). Special thanks to @pbregener for his contributions related to python 3.7 support and test fixes. ## v0.10.0 (2018-04-15) ## The 0.10.0 release adds the ability to ignore commits based on their contents, support for [pre-commit](https://pre-commit.com/), and important fix for running gitlint in CI environments (such as Jenkins, Gitlab, etc). Special thanks to [asottile](https://github.com/asottile), [bdrung](https://github.com/bdrung), [pbregener](https://github.com/pbregener), [torwald-sergesson](https://github.com/torwald-sergesson), [RykHawthorn](https://github.com/RykHawthorn), [SteffenKockel](https://github.com/SteffenKockel) and [tommyip](https://github.com/tommyip) for their contributions. **Since it's becoming increasingly hard to support Python 2.6 and 3.3, we'd like to encourage our users to upgrade their python version to 2.7 or 3.3+. Future versions of gitlint are likely to drop support for Python 2.6 and 3.3.** Full Changelog: - **New Rule**: ```ignore-by-title``` allows users to [ignore certain commits](http://jorisroovers.github.io/gitlint/#ignoring-commits) by matching a regex against a commit message title. ([#54](https://github.com/jorisroovers/gitlint/issues/54), [#57](https://github.com/jorisroovers/gitlint/issues/57)). - **New Rule**: ```ignore-by-body``` allows users to [ignore certain commits](http://jorisroovers.github.io/gitlint/#ignoring-commits) by matching a regex against a line in a commit message body. - Gitlint now supports [pre-commit.com](https://pre-commit.com). [Details in our documentation](http://jorisroovers.github.io/gitlint/#using-gitlint-through-pre-commit) ([#62](https://github.com/jorisroovers/gitlint/issues/62)). - Gitlint now has a ```--msg-filename``` commandline flag that allows you to specify the commit message to lint via a file ([#39](https://github.com/jorisroovers/gitlint/issues/39)). - Gitlint will now be silent by default when a specified commit range is empty ([#46](https://github.com/jorisroovers/gitlint/issues/46)). - Gitlint can now be installed on MacOS by brew via the [homebrew-devops](https://github.com/rockyluke/homebrew-devops) tap. To get the latest version of gitlint, always use pip for installation. - If all goes well, [gitlint will also be available as a package in the Ubuntu 18.04 repositories](https://launchpad.net/ubuntu/+source/gitlint). - Bugfixes: - We fixed a nasty and recurring issue with running gitlint in CI. Hopefully that's the end of it :-) ([#40](https://github.com/jorisroovers/gitlint/issues/40)). - Fix for custom git comment characters ([#48](https://github.com/jorisroovers/gitlint/issues/48)). ## v0.9.0 (2017-12-03) ## The 0.9.0 release adds a new default ```author-valid-email``` rule, important bugfixes and special case handling. Special thanks to [joshholl](https://github.com/joshholl), [ron8mcr](https://github.com/ron8mcr), [omarkohl](https://github.com/omarkohl), [domo141](https://github.com/domo141), [nud](https://github.com/nud) and [AlexMooney](https://github.com/AlexMooney) for their contributions. - New Rule: ```author-valid-email``` enforces a valid author email address. Details can be found in the [Rules section of the documentation](http://jorisroovers.github.io/gitlint/rules/#m1-author-valid-email). - **Breaking change**: The ```--commits``` commandline flag now strictly follows the refspec format as interpreted by the [```git rev-list ```](https://git-scm.com/docs/git-rev-list) command. This means that linting a single commit using ```gitlint --commits ``` won't work anymore. Instead, for single commits, users now need to specificy ```gitlint --commits ^...```. On the upside, this change also means that gitlint will now understand all refspec formatters, including ```gitlint --commits HEAD``` to lint all commits in the repository. This fixes [#23](https://github.com/jorisroovers/gitlint/issues/23). - **Breaking change**: Gitlint now always falls back on trying to read a git message from a local git repository, only reading a commit message from STDIN if one is passed. Before, gitlint only read from the local git repository when a TTY was present. This is likely the expected and desired behavior for anyone running gitlint in a CI environment. This fixes [#40](https://github.com/jorisroovers/gitlint/issues/40) and [#42](https://github.com/jorisroovers/gitlint/issues/42). - **Behavior Change**: Gitlint will now by default [ignore squash and fixup commits](http://jorisroovers.github.io/gitlint/#merge-fixup-and-squash-commits) (fix for [#33: fixup messages should not trigger a gitlint violation](https://github.com/jorisroovers/gitlint/issues/33)) - Support for custom comment characters ([#34](https://github.com/jorisroovers/gitlint/issues/34)) - Support for [```git commit --cleanup=scissors```](https://git-scm.com/docs/git-commit#git-commit---cleanupltmodegt) ([#34](https://github.com/jorisroovers/gitlint/issues/34)) - Bugfix: [#37: Prevent Commas in text fields from breaking git log printing](https://github.com/jorisroovers/gitlint/issues/37) - Debug output improvements ## v0.8.2 (2017-04-25) ## The 0.8.2 release brings minor improvements, bugfixes and some under-the-hood changes. Special thanks to [tommyip](https://github.com/tommyip) for his contributions. - ```--extra-path``` now also accepts a file path (in the past only directory paths where accepted). Thanks to [tommyip](https://github.com/tommyip) for implementing this! - gitlint will now show more information when using the ```--debug``` flag. This is initial work and will continue to be improved upon in later releases. - Bugfixes: - [#24: --commits doesn't take commit specific config into account](https://github.com/jorisroovers/gitlint/issues/24) - [#27: --commits returns the wrong exit code](https://github.com/jorisroovers/gitlint/issues/27) - Development: better unit and integration test coverage for ```--commits``` ## v0.8.1 (2017-03-16) ## The 0.8.1 release brings minor tweaks and some experimental features. Special thanks to [tommyip](https://github.com/tommyip) for his contributions. - Experimental: Linting a range of commits. [Documentation](http://jorisroovers.github.io/gitlint/#linting-a-range-of-commits). Known Caveats: [#23](https://github.com/jorisroovers/gitlint/issues/23), [#24](https://github.com/jorisroovers/gitlint/issues/24). Closes [#14](https://github.com/jorisroovers/gitlint/issues/14). Thanks to [tommyip](https://github.com/tommyip) for implementing this! - Experimental: Python 3.6 support - Improved Windows error messaging: gitlint will now show a more descriptive error message when ran on windows. See [#20](https://github.com/jorisroovers/gitlint/issues/20) for details on the lack of Windows support. ## v0.8.0 (2016-12-30) ## The 0.8.0 release is a significant release that has been in the works for a long time. Special thanks to [Claymore](https://github.com/Claymore), [gernd](https://github.com/gernd) and [ZhangYaxu](https://github.com/ZhangYaxu) for submitting bug reports and pull requests. - Full unicode support: you can now lint messages in any language! This fixes [#16](https://github.com/jorisroovers/gitlint/issues/16) and [#18](https://github.com/jorisroovers/gitlint/pull/18). - User-defined rules: you can now [define your own custom rules](http://jorisroovers.github.io/gitlint/user_defined_rules/) if you want to extend gitlint's functionality. - Pypy2 support! - Debug output improvements: Gitlint will now print your active configuration when using ```--debug``` - The ```general.target``` option can now also be set via ```-c``` flags or a ```.gitlint``` file - Bugfixes: - Various important fixes related to configuration precedence - [#17: Body MinLength is not working properly](https://github.com/jorisroovers/gitlint/issues/17). **Behavior Change**: Gitlint now always applies this rule, even if the body has just a single line of content. Also, gitlint now counts the body-length for the entire body, not just the length of the first line. - Various documentation improvements - Development: - Pylint compliance for all supported python versions - Updated dependencies to latest versions - Various ```run_tests.sh``` improvements for developer convenience ## v0.7.1 (2016-06-18) ## Bugfixes: - **Behavior Change**: gitlint no longer prints the file path by default when using a ```.gitlint``` file. The path will still be printed when using the new ```--debug``` flag. Special thanks to [Slipcon](https://github.com/slipcon) for submitting this. - Gitlint now prints a correct violation message for the ```title-match-regex``` rule. Special thanks to [Slipcon](https://github.com/slipcon) for submitting this. - Gitlint is now better at parsing commit messages cross-platform by taking platform specific line endings into account - Minor documentation improvements ## v0.7.0 (2016-04-20) ## This release contains mostly bugfix and internal code improvements. Special thanks to [William Turell](https://github.com/wturrell) and [Joe Grund](https://github.com/jgrund) for bug reports and pull requests. - commit-msg hooks improvements: The new commit-msg hook now allows you to edit your message if it contains violations, prints the commit message on aborting and is more compatible with GUI-based git clients such as SourceTree. *You will need to uninstall and reinstall the commit-msg hook for these latest features*. - Python 2.6 support - **Behavior change**: merge commits are now ignored by default. The rationale is that the original commits should already be linted and that many merge commits don't pass gitlint checks by default (e.g. exceeding title length or empty body is very common). This behavior can be overwritten by setting the general option ```ignore-merge-commit=false```. - Bugfixes and enhancements: - [#7: Hook compatibility with SourceTree](https://github.com/jorisroovers/gitlint/issues/7) - [#8: Illegal option -e](https://github.com/jorisroovers/gitlint/issues/8) - [#9: print full commit msg to stdout if aborted](https://github.com/jorisroovers/gitlint/issues/9) - [#11 merge commit titles exceeding the max title length by default](https://github.com/jorisroovers/gitlint/issues/11) - Better error handling of invalid general options - Development: internal refactoring to extract more info from git. This will allow for more complex rules in the future. - Development: initial set of integration tests. Test gitlint end-to-end after it is installed. - Development: pylint compliance for python 2.7 ## v0.6.1 (2015-11-22) ## - Fix: ```install-hook``` and ```generate-config``` commands not working when gitlint is installed from pypi. ## v0.6.0 (2015-11-22) ## - Python 3 (3.3+) support! - All documentation is now hosted on [http://jorisroovers.github.io/gitlint/]() - New ```generate-config``` command generates a sample gitlint config file - New ```--target``` flag allows users to lint different directories than the current working directory - **Breaking change**: exit code behavior has changed. More details in the [Exit codes section of the documentation](http://jorisroovers.github.io/gitlint/#exit-codes). - **Breaking change**: ```--install-hook``` and ```--uninstall-hook``` have been renamed to ```install-hook``` and ```uninstall-hook``` respectively to better express that they are commands instead of options. - Better error handling when gitlint is executed in a directory that is not a git repository or when git is not installed. - The git commit message hook now uses pretty colored output - Fix: ```--config``` option no longer accepts directories as value - Development: unit tests are now ran using py.test ## v0.5.0 (2015-10-04) ## - New Rule: ```title-match-regex```. Details can be found in the [Rules section of the documentation](http://jorisroovers.github.io/gitlint/rules/). - Uninstall previously installed gitlint git commit hooks using: ```gitlint --uninstall-hook``` - Ignore rules on a per commit basis by adding e.g.: ```gitlint-ignore: T1, body-hard-tab``` to your git commit message. Use ```gitlint-ignore: all``` to disable gitlint all together for a specific commit. - ```body-is-missing``` will now automatically be disabled for merge commits (use the ```ignore-merge-commit: false``` option to disable this behavior) - Violations are now sorted by line number first and then by rule id (previously the order of violations on the same line was arbitrary). ## v0.4.1 (2015-09-19) ## - Internal fix: added missing comma to setup.py which prevented pypi upload ## v0.4.0 (2015-09-19) ## - New rules: ```body-is-missing```, ```body-min-length```, ```title-leading-whitespace```, ```body-changed-file-mention```. Details can be found in the [Rules section of the documentation](http://jorisroovers.github.io/gitlint/rules/). - The git ```commit-msg``` hook now allows you to keep or discard the commit when it fails gitlint validation - gitlint is now also released as a [python wheel](http://pythonwheels.com/) on pypi. - Internal: rule classes now have access to a gitcontext containing body the commit message and the files changed in the last commit. ## v0.3.0 (2015-09-11) ## - ```title-must-not-contain-word``` now has a ```words``` option that can be used to specify which words should not occur in the title - gitlint violations are now printed to the stderr instead of stdout - Various minor bugfixes - gitlint now ignores commented out lines (i.e. starting with #) in your commit messages - Experimental: git commit-msg hook support - Under-the-hood: better test coverage :-) ## v0.2.0 (2015-09-10) ## - Rules can now have their behavior configured through options. For example, the ```title-max-length``` rule now has a ```line-length``` option. - Under-the-hood: The codebase now has a basic level of unit test coverage, increasing overall quality assurance ## v0.1.1 (2015-09-08) ## - Bugfix: added missing ```sh``` dependency ## v0.1.0 (2015-09-08) ## - Initial gitlint release - Initial set of rules: title-max-length, title-trailing-whitespace, title-trailing-punctuation , title-hard-tab, title-must-not-contain-word, body-max-line-length, body-trailing-whitespace, body-hard-tab - General gitlint configuration through a ```gitlint``` file - Silent and verbose mode - Vagrantfile for easy development - gitlint is available on [pypi](https://pypi.python.org/pypi/gitlint) gitlint-0.13.1/CONTRIBUTING.md000066400000000000000000000003451362546342700155150ustar00rootroot00000000000000# Contributing Thanks for your interest in contributing to gitlint! Instructions on how to get started can be found on [http://jorisroovers.github.io/gitlint/contributing](http://jorisroovers.github.io/gitlint/contributing/). gitlint-0.13.1/Dockerfile000066400000000000000000000006361362546342700152610ustar00rootroot00000000000000# User-facing Dockerfile. For development, see Dockerfile.dev and ./run_tests.sh -h # To lint your current working directory: # docker run -v $(pwd):/repo jorisroovers/gitlint # With arguments: # docker run -v $(pwd):/repo jorisroovers/gitlint --debug --ignore T1 FROM python:3.8-alpine ARG GITLINT_VERSION RUN apk add git RUN pip install gitlint==$GITLINT_VERSION ENTRYPOINT ["gitlint", "--target", "/repo"] gitlint-0.13.1/Dockerfile.dev000066400000000000000000000010201362546342700160220ustar00rootroot00000000000000# Note: development using the local Dockerfile is still work-in-progress # Getting started: http://jorisroovers.github.io/gitlint/contributing/ ARG python_version_dotted FROM python:${python_version_dotted}-stretch RUN apt-get update # software-properties-common contains 'add-apt-repository' RUN apt-get install -y git silversearcher-ag jq curl ADD . /gitlint WORKDIR /gitlint RUN pip install --ignore-requires-python -r requirements.txt RUN pip install --ignore-requires-python -r test-requirements.txt CMD ["/bin/bash"] gitlint-0.13.1/LICENSE000066400000000000000000000020711362546342700142670ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015 Joris Roovers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. gitlint-0.13.1/MANIFEST.in000066400000000000000000000002441362546342700150200ustar00rootroot00000000000000include README.md include LICENSE exclude Vagrantfile exclude *.yml *.sh *.txt recursive-exclude examples * recursive-exclude gitlint/tests * recursive-exclude qa *gitlint-0.13.1/README.md000066400000000000000000000025251362546342700145450ustar00rootroot00000000000000# gitlint: [jorisroovers.github.io/gitlint](http://jorisroovers.github.io/gitlint/) # [![Tests](https://github.com/jorisroovers/gitlint/workflows/Tests%20and%20Checks/badge.svg)](https://github.com/jorisroovers/gitlint/actions?query=workflow%3A%22Tests+and+Checks%22) [![PyPi Package](https://img.shields.io/pypi/v/gitlint.png)](https://pypi.python.org/pypi/gitlint) ![Supported Python Versions](https://img.shields.io/pypi/pyversions/gitlint.svg) Git commit message linter written in python (for Linux and Mac, experimental on Windows), checks your commit messages for style. **See [jorisroovers.github.io/gitlint](http://jorisroovers.github.io/gitlint/) for full documentation.** ## Contributing ## All contributions are welcome and very much appreciated! **I'm looking for contributors that are interested in taking a more active co-maintainer role as it's becoming increasingly difficult for me to find time to maintain gitlint. Please open a PR if you're interested - Thanks!** See [jorisroovers.github.io/gitlint/contributing](http://jorisroovers.github.io/gitlint/contributing) for details on how to get started - it's easy! We maintain a [loose roadmap on our wiki](https://github.com/jorisroovers/gitlint/wiki/Roadmap). gitlint-0.13.1/Vagrantfile000066400000000000000000000032531362546342700154520ustar00rootroot00000000000000# -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" INSTALL_DEPS=<> /home/vagrant/.bashrc grep 'source .venv27/bin/activate' /home/vagrant/.bashrc || echo 'source .venv27/bin/activate' >> /home/vagrant/.bashrc EOF INSTALL_JENKINS=< /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install -y openjdk-8-jre sudo apt-get install -y jenkins EOF Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/xenial64" config.vm.define "dev" do |dev| dev.vm.provision "gitlint", type: "shell", inline: "#{INSTALL_DEPS}" # Use 'vagrant provision --provision-with jenkins' to only run jenkins install dev.vm.provision "jenkins", type: "shell", inline: "#{INSTALL_JENKINS}" end config.vm.network "forwarded_port", guest: 8080, host: 9080 if Vagrant.has_plugin?("vagrant-cachier") config.cache.scope = :box end end gitlint-0.13.1/doc-requirements.txt000066400000000000000000000000151362546342700173050ustar00rootroot00000000000000mkdocs==1.0.4gitlint-0.13.1/docs/000077500000000000000000000000001362546342700142125ustar00rootroot00000000000000gitlint-0.13.1/docs/configuration.md000066400000000000000000000300261362546342700174040ustar00rootroot00000000000000# Configuration Gitlint can be configured through different means. # Config files # You can modify gitlint's behavior by adding a ```.gitlint``` file to your git repository. Generate a default ```.gitlint``` config file by running: ```bash gitlint generate-config ``` You can also use a different config file like so: ```bash gitlint --config myconfigfile.ini ``` The block below shows a sample ```.gitlint``` file. Details about rule config options can be found on the [Rules](rules.md) page, details about the ```[general]``` section can be found in the [General Configuration](configuration.md#general-configuration) section of this page. ```ini # Edit this file as you like. # # All these sections are optional. Each section with the exception of [general] represents # one rule and each key in it is an option for that specific rule. # # Rules and sections can be referenced by their full name or by id. For example # section "[body-max-line-length]" could be written as "[B1]". Full section names are # used in here for clarity. # Rule reference documentation: http://jorisroovers.github.io/gitlint/rules/ # # Use 'gitlint generate-config' to generate a config file with all possible options [general] # Ignore certain rules (comma-separated list), 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, revert, fixup and squash commits. ignore-merge-commits=true ignore-revert-commits=true ignore-fixup-commits=true ignore-squash-commits=true # Ignore any data send to gitlint via stdin ignore-stdin=true # Fetch additional meta-data from the local repository when manually passing a # commit message to gitlint via stdin or --commit-msg. Disabled by default. staged=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/ # This is an example of how to configure the "title-max-length" rule and # set the line-length it enforces to 80 [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]* [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 # This is a contrib rule - a community contributed rule. These are disabled by default. # You need to explicitly enable them one-by-one by adding them to the "contrib" option # under [general] section above. [contrib-title-conventional-commits] # Specify allowed commit types. For details see: https://www.conventionalcommits.org/ types = bugfix,user-story,epic ``` # Commandline config # You can also use one or more ```-c``` flags like so: ``` $ gitlint -c general.verbosity=2 -c title-max-length.line-length=80 -c B1.line-length=100 ``` The generic config flag format is ```-c .