Don't report markup titles as merge conflicts

Several markup formats, such as Markdown or Re(Structured)Text
can format titles as text with '=' characters as double underlining,
like this:
```
My Page Title
=============

Lorem ipsum...
```

Rather that considering any line starting with seven '=' as a conflict marker,
require a space (or line-ending newline) after the equals.
This could still create a false positive for a seven character title,
like "Problem", but the markup formats generally allow extra '=' characters,
so by formatting the text like this:
```
Problem
========

Not...
```
these pre-commit warnings can be avoided.

Also updates the tests to add newlines for more realistic conflict files
(while a file might not end with a newline, conflict markers will).
Prevent false negative on test_does_not_care_when_not_in_a_conflict()
by making sure that README.md contains a line identical to a conflict string
(exactly seven '=' followed by a newline).
2 files changed
tree: a9dd2175eaf61d36ea65dd1de3f8e42ea844d9c6
  1. pre_commit_hooks/
  2. testing/
  3. tests/
  4. .coveragerc
  5. .gitignore
  6. .pre-commit-config.yaml
  7. .travis.yml
  8. appveyor.yml
  9. CHANGELOG
  10. hooks.yaml
  11. LICENSE
  12. Makefile
  13. pylintrc
  14. README.md
  15. requirements-dev.txt
  16. requirements.txt
  17. setup.py
  18. tox.ini
README.md

Build Status Coverage Status Build status

pre-commit-hooks

Some out-of-the-box hooks for pre-commit.

See also: https://github.com/pre-commit/pre-commit

Using pre-commit-hooks with pre-commit

Add this to your .pre-commit-config.yaml

-   repo: git://github.com/pre-commit/pre-commit-hooks
    sha: ''  # Use the sha you want to point at
    hooks:
    -   id: trailing-whitespace
    # -   id: ...

Hooks available

  • autopep8-wrapper - Runs autopep8 over python source. (You'll want args: ['-i] when using this hook, see .pre-commit-config.yaml for an example.)
  • check-added-large-files - Prevent giant files from being committed.
  • check-case-conflict - Check for files that would conflict in case-insensitive filesystems.
  • check-docstring-first - Checks a common error of defining a docstring after code.
  • check-json - Attempts to load all json files to verify syntax.
  • check-merge-conflict - Check for files that contain merge conflict strings.
  • check-xml - Attempts to load all xml files to verify syntax.
  • check-yaml - Attempts to load all yaml files to verify syntax.
  • debug-statements - Check for pdb / ipdb / pudb statements in code.
  • detect-private-key - Checks for the existence of private keys
  • double-quote-string-fixer - This hook replaces double quoted strings with single quoted strings
  • end-of-file-fixer - Makes sure files end in a newline and only a newline.
  • flake8 - Run flake8 on your python files
  • name-tests-test - Assert that files in tests/ end in _test.py
  • pyflakes - Run pyflakes on your python files
  • requirements-txt-fixer - Sorts entries in requirements.txt
  • trailing-whitespace - Trims trailing whitespace.

As a standalone package

If you‘d like to use these hooks, they’re also available as a standalone package.

Simply pip install pre-commit-hooks